Troubleshooting
The messages you will actually see, and what they mean.
Start with service <name> logs for one server and logs for the cloud. Almost every
case below announces itself in one of the two.
No node with enough memory
The node's budget is used up. It is a budget, not a measurement of the machine:
Servers may use memory minus reserve. Raise memory to what the machine really has
minus what the operating system and your databases need, or give the group less per
server. Nothing is started until there is room, which is the intended behaviour; the
alternative is a machine in swap.
Group files are broken
A TOML file under groups/ does not parse. The cloud keeps running on the last valid
state and changes nothing. Fix the file, the next pass picks it up; no restart needed.
Java
Runtimes are fetched per group and stored under runtimes/. Only Temurin is downloaded
automatically. Any other distribution has to be present on the machine and named
explicitly:
A server crashes
Code 137 means the process was killed, usually by the kernel's out-of-memory killer.
Give the group more memory or the machine fewer servers. The report under dumps/ holds
the last output; housekeeping removes old ones after the retention in [logs].
A server hangs
The process is alive but its main thread has stopped ticking. The watchdog renews the server. If this happens repeatedly, look at the server's own log just before the stall: a plugin in an endless loop, a world generation spike or a garbage collector in trouble all look like this from the outside.
A server will not stop
The server was asked to shut down, did not do so within the grace period and was killed. Worlds are flushed before backups, so this rarely costs data, but a server that regularly ignores the stop command is worth a look.
The worker loses the leader
The worker keeps its running servers and reconnects on its own. If it does not come back, check that the leader's API is reachable from the worker and that both use the same token. The cluster link is expected to stay inside a private network.
Nothing answers on the API
GET /api/health needs no token and tells you whether the cloud itself is up. A 401
means the token is missing or wrong, an empty answer means you are talking to the wrong
address. The default bind is 127.0.0.1:8770, which is only reachable from the machine
itself; that is deliberate.
Servers from a previous run
The cloud was killed without shutting down and found orphaned processes on start. They are stopped so that ports and worlds are free. Nothing to do.