Documentation

Install the panel

Use a fresh Ubuntu 24.04 server with a public IPv4. The installer needs root. A hostname is required for HTTPS.

Point DNS

  1. 1

    Create an A record

    Point your panel hostname (for example panel.example.com) at the server’s public IP. Wait until it resolves before requesting a certificate.
  2. 2

    Open panel ports

    If a firewall is already enabled, allow 22 (SSH), 80, and 443. Game allocations (for example 25565) are not opened automatically — add them when you create servers.

Run the installer

bash
apt-get update && apt-get install -y git
git clone https://github.com/Flutter-Software/Flutter-Panel.git /usr/local/src/flutter-panel
sudo bash /usr/local/src/flutter-panel/install/ubuntu-24.04.sh

The script asks for the public panel URL, whether to issue a Let's Encrypt certificate, and whether to install the game-node daemon on this machine. It then installs Docker, Node.js 22, MongoDB, Redis, nginx, and systemd units under /opt/flutter.

Non-interactive HTTPS example:

bash
sudo FLUTTER_URL=https://panel.example.com FLUTTER_EMAIL=you@example.com \
  FLUTTER_LETSENCRYPT=1 bash /usr/local/src/flutter-panel/install/ubuntu-24.04.sh --yes

What gets installed

Path / unitRole
/opt/flutterApplication (user flutter)
/opt/flutter/.envSecrets and URLs (mode 640)
/var/lib/flutterDaemon data and game server files
flutter-apiAPI on 127.0.0.1:4000
flutter-webPanel on 127.0.0.1:3010
flutter-daemonNode agent on 0.0.0.0:8080
nginx sites-enabled/flutterPublic HTTP(S) → web + /api/
Docker Compose (mongo, redis)Bound to localhost only
bash
systemctl status flutter-api flutter-web flutter-daemon
journalctl -u flutter-api -u flutter-web -u flutter-daemon -f
cd /opt/flutter && docker compose ps

First admin

Open the URL the installer prints. The first account you create is the admin. Later accounts are regular users unless you promote them in Admin → Users.

Flags and env

Flag / envMeaning
--yesDo not prompt; use flags and FLUTTER_* env vars
--url URL / FLUTTER_URLPublic panel URL (http://IP or https://hostname)
--letsencrypt / FLUTTER_LETSENCRYPT=1Issue a Let's Encrypt certificate (hostname required)
--email EMAIL / FLUTTER_EMAILContact email for Let's Encrypt
--no-nginx / FLUTTER_NO_NGINX=1Skip nginx; panel listens on port 3010
--no-daemon / FLUTTER_NO_DAEMON=1Panel only (attach a node later)
--prefix DIR / FLUTTER_PREFIXInstall directory (default /opt/flutter)
--forceAllow distros other than Ubuntu 24.04

Firewall

If UFW was already active, the installer opens SSH, 80/443 (or 3010 without nginx), and 8080 when the local daemon is installed. Publish game ports as you add allocations:

bash
sudo ufw allow 25565/tcp
sudo ufw status