Documentation
Home / WSL node
Use this when the panel cannot open http://YOUR_IP:8080 — residential NAT, CGNAT, or WSL with no public address.
When to use this
connect-home-node.sh installs the same daemon as ubuntu-node.sh, then publishes port 8080 through a Cloudflare quick tunnel.
- Heartbeat still goes daemon → panel
- Start / stop / files / console go panel → tunnel URL → daemon
Create the node in Admin first (location, name, copy the flt_ token). Same steps as Game node (VPS).
What you need
- Ubuntu with systemd (plain Ubuntu 24.04, or WSL with systemd enabled)
- Docker running (on WSL: Docker Desktop → Settings → Resources → WSL integration)
- Root (sudo)
- The Flutter Panel repo on that Ubuntu host
- Port
8080free — stop Windowsnpm run dev:daemonif it is bound to the same port
WSL notes
- 1
Open Ubuntu as root or use sudo
- 2
Enable Docker Desktop WSL integration
Thendocker infoshould work inside Ubuntu. - 3
Strip Windows line endings
If the checkout lives on the Windows drive, do this every time you copy or edit the scripts from Windows:bashcd "/mnt/c/Users/YOU/path/to/Flutter Panel" sed -i 's/\r$//' install/*.sh - 4
Stop the Windows daemon
Leavenpm run dev/npm run dev:daemonstopped on this machine so they do not fight the Ubuntu daemon for port 8080.
Install
cd /path/to/Flutter-Panel
sed -i 's/\r$//' install/*.sh
sudo bash install/connect-home-node.sh \
--panel-url https://panel.example.com \
--token flt_PASTE_THE_TOKEN \
--node PASTE_THE_NODE_ID--panel-url defaults to https://panel.flutter.software if you omit it.
The script will:
- Run ubuntu-node.sh (daemon only, no panel)
- Install cloudflared if needed
- Start flutter-node-tunnel.service
- Wait for a
https://….trycloudflare.comURL - Write daemon config with that URL as
--listen-url - Enable and start flutter-daemon
A successful run prints the node id, the tunnel URL, and systemctl status flutter-daemon.
After a reboot
For a stable URL, use a named Cloudflare tunnel, Tailscale, or a VPS with a public IP, and pass --listen-url / --no-tunnel.
Flags
| Flag | Meaning |
|---|---|
| --token TOKEN | flt_… token (required) |
| --node ID | Node id (required) |
| --panel-url URL | Panel URL (default https://panel.flutter.software) |
| --listen-url URL | Skip Cloudflare; use this URL (public IP or Tailscale) |
| --no-tunnel | Do not start Cloudflare; you must pass --listen-url |
| --port PORT | Daemon port (default 8080) |