Operations
Troubleshooting
Fixes for offline agents, failed deploys, certificates and email.
A server shows offline
A server is offline when no heartbeat arrived in 35 seconds. On the server:
bash
systemctl status vpspilot-agent vpspilot-helperjournalctl -u vpspilot-agent -n 100sudo -u vpspilot python3 -m vpspilot_agent status --config /etc/vpspilot/agent.json- Connection refused or timeouts: the server can’t reach
AGENT_API_URL. Check DNS, firewalls and that the proxy routes/agent/*to the API. - Agent exited with status 78: its credential was revoked or the server deleted. Enroll it again with a new token.
- Clock skew: keep time in sync with
systemd-timesyncdor chrony.
The control plane installer fails
The agent installer fails
A deployment failed
Open the deployment: the log shows the stage that failed.
Tip
Most frameworks listen on PORT. Make sure yours binds to 0.0.0.0, not localhost, inside the container.
A certificate isn’t issued
- DNS status must be ok. Behind a CDN proxy, use TLS mode
offand let the CDN terminate TLS. - Ports 80 and 443 must be open in the server’s firewall and your provider’s security group.
- Check the proxy’s own log with
docker logs vpspilot-proxy.
Emails don’t arrive
- Without
RESEND_API_KEY, emails are written to the API log instead of being sent (sudo vpspilot logs api). After adding the key to.env, runsudo vpspilot restart. - Resend’s test sender only delivers to your own Resend account address. Set
EMAIL_OVERRIDE_TOto it while testing, or verify a domain and setEMAIL_FROM.
Locked out
After 5 wrong passwords the account is locked for 15 minutes. If you lost your authenticator, sign in with a recovery code. If you have neither, someone with root on the control plane's server can create a new admin with sudo vpspilot admin EMAIL (or uv run poe createadmin on a manual install).