Troubleshooting
Common failures and the fastest way out of each.
The dashboard is unreachable#
- Check the container health of the core stack on the main node:
sudo docker ps— everyzensailor-*container should behealthyorrunning. - If anything is down, run the repair tool: Repair.
- Confirm ports
80/443are reachable from outside (curl -Ifrom another machine). Router conflicts with an existing web server are the classic cause — see Requirements and Plans.
Certificates fail to issue#
- The DNS A/AAAA record must resolve to the server before you add the domain — Let's Encrypt validates at request time. Fix the record and re-add the domain (or re-request from the domain's settings).
- Port 443 must be reachable from the internet.
- For internal hostnames (
.local,.lan, an IP), use the installer's local/profile options — self-signed or no TLS — instead of public issuance. See Domains and SSL.
A deployment stays queued#
The queue means slots are full or a deploy window is closed.
zensailor system queueshows active and queued work, with reasons.- A window-deferred deployment displays why it is waiting and when it will run — see Deploy Windows.
- Rollbacks and restores run immediately; only new change waits.
A service with volumes will not deploy#
If the node holding its data is unavailable, the deploy waits and tells you which node it needs. Either bring the node back, or run a volume migration to move the data to a healthy node — see Storage Across Nodes.
A node is stuck offline#
- Agents heartbeat every 30 seconds; after 90 seconds of silence the node is marked offline. Check the node's Docker and agent container, and its network path to the control plane (agent port).
- Node pressure (disk/memory/CPU) also gates scheduling — the node list shows the pressure state and notifications explain what recovered.
Migrations get stuck#
Prisma migration failures on upgrade (P3009-style) are resolved by the
repair tool — run sudo ./fix.sh and it auto-heals them. See
Repair.
Storage fills up#
zensailor system prunereclaims unused Docker resources across nodes — pruning never touches managed bind mounts.- The Storage page shows every managed folder and what it holds — see Storage Management. Old snapshots are removed by retention after successful backups only.
Still stuck? Snapshot the state first: sudo ./fix.sh output, the
control-plane runtime logs (Settings → System), and the failing deployment's
build logs. Then ask — the deployment details and logs travel with the
question.