Documentation

Troubleshooting

Most production issues are a daemon that is not running, a listen-url the panel cannot open, or a truncated node token.

Node stays Offline

  • sudo systemctl enable --now flutter-daemon
  • sudo journalctl -u flutter-daemon -f — you want heartbeat success
  • Token, node id, and --panel-url must match the panel you created the node on

Symptom table

SymptomWhat to check
Node stays Offlinejournalctl -u flutter-daemon -e — token, node id, and --panel-url
Heartbeat OK, start/console failPanel cannot reach --listen-url. From the panel host: curl -sS http://NODE_IP:8080/health (or the trycloudflare.com URL)
flt_ token rejectedCopy the full token from the create screen or the Nodes clipboard button
flutter-node-configure is missingDaemon install did not finish. Scroll up for the ubuntu-node error and re-run
rsync: mkdir .../packages/shared failedUse the current install/ubuntu-node.sh from the repo (it creates that directory)
Docker is not runningOn WSL: Docker Desktop → WSL integration. Then docker info inside Ubuntu
Port 8080 in useStop Windows npm run dev:daemon / any other Flutter daemon on this machine
Wrong machineYou ran ubuntu-24.04.sh on the game host. Wipe it; only ubuntu-node.sh or connect-home-node.sh belongs there
$'\r': command not foundsed -i 's/\r$//' install/*.sh then retry
Let's Encrypt refusedHostname A record must resolve to this server. Certificates are not issued for raw IPs
Login page broken after updateHard-refresh. Stale JS chunk hashes 404 until the tab reloads

Logs

bash
journalctl -u flutter-api -u flutter-web -u flutter-daemon -f
cd /opt/flutter && docker compose ps
curl -sS http://127.0.0.1:4000/api/v1/health

Wipe a test install

Does not uninstall Docker, Node.js, nginx, or cloudflared packages.

Daemon only (leaves a panel on the same machine alone):

bash
sudo bash install/wipe-local.sh --yes --daemon-only

Everything on this machine (panel + daemon + game data):

bash
sudo bash install/wipe-local.sh --yes
FlagMeaning
--yesDo not prompt (otherwise type wipe)
--daemon-only / --node-onlyRemove the game-node daemon, tunnel, /opt/flutter-node, and game data
--keep-dataLeave /var/lib/flutter
--keep-userLeave the flutter system user
--wipe-certsDelete Let's Encrypt certs whose name contains flutter (full wipe only)
--keep-srcLeave /usr/local/src/flutter-panel