Troubleshooting
Common issues and solutions
Node Won’t Connect
Symptom: Node shows as “offline” in the dashboard.
Check:
- Is the hub reachable from the node?
curl http://hub:4865/api/v1/health - Is the node agent running?
systemctl status valvet-node - Check node logs:
journalctl -u valvet-node -n 50 - If behind a reverse proxy, ensure WebSocket upgrade headers are forwarded
Common causes:
- Firewall blocking port 4865
- Reverse proxy not forwarding WebSocket headers
- Node config pointing to wrong hub URL
Backup Fails
Symptom: Job shows “failed” status.
Check:
- View job details in the dashboard for the error message
- Check node logs for restic output
- Verify the repository is accessible from the node
- Ensure the backup paths exist on the node
Common causes:
- Repository password incorrect
- Insufficient permissions on backup paths
- Disk full on repository destination
- Network timeout for remote repositories
”Internal Server Error” on Login
Symptom: Login returns 500 error.
Check:
- Hub logs:
journalctl -u valvet-hub -n 50ordocker logs valvet - Is the database writable? Check file permissions on the data directory
- Is the disk full?
Node Agent Won’t Enroll
Symptom: Enrollment fails with “invalid token” or “token expired”.
Check:
- Is the enrollment token correct? Tokens are single-use by default
- Has the token expired? Check the token’s expiry in Settings → Tokens
- Can the node reach the hub?
curl http://hub:4865/api/v1/health
SSE Events Not Working
Symptom: Dashboard does not update in real time.
Check:
- Open browser developer tools → Network tab, filter by “events”
- If behind a reverse proxy, ensure SSE responses are not buffered
- For nginx: set
proxy_buffering off
High Memory Usage
Symptom: Hub consuming more memory than expected.
The SQLite database uses WAL mode, which can accumulate a write-ahead log. This is normal. The WAL is checkpointed automatically. If the WAL file grows very large, it may indicate long-running read transactions.
Restic Binary Not Found
Symptom: Node fails with “restic not found”.
The node agent auto-downloads restic on first use. If this fails:
- Check if the node can reach the hub’s agent download endpoint
- Check disk space and permissions in the node’s working directory
- Manually download restic and place it in the agent’s path