Install the control plane
The control plane is a self-hosted admin panel. It manages accounts (peers), nodes, quotas, and subscription URLs — all from one web dashboard.
Requirements
Section titled “Requirements”- A Linux server (Ubuntu/Debian) with a public IP
- A domain name pointed at the server’s IP, for automatic HTTPS
- Docker (installed automatically by the installer if missing)
One-line install
Section titled “One-line install”Run this on the server that will host the panel:
curl -fsSL https://raw.githubusercontent.com/bingryan/freenet/main/deploy/install.sh -o install.shsudo bash install.shThe installer asks for:
- Panel domain — must already point at this server’s IP (Caddy provisions the TLS certificate automatically)
- Admin e-mail — used for Let’s Encrypt certificate notices
- Super-admin username — the account you’ll use to log into the panel
- Whether to set up WireGuard on this same server as your first node (recommended)
When it finishes, the panel is live at https://<your-domain>. The auto-generated super-admin password is printed once at the end — save it immediately. You can also recover it later with freenet show-bootstrap-admin, as long as the container’s log history still has it.
Reproducible installs
Section titled “Reproducible installs”Pin every downloaded artifact to a tag before installing:
export FREE_NET_INSTALL_REF=v1.4.2Starting over
Section titled “Starting over”Re-running install.sh keeps your existing .env and data. To wipe everything — containers, data volumes, secrets, and the self-node — and start fresh:
sudo bash install.sh --freshThe panel binds high, rarely-used host ports by default (the node-agent port is 48443), and the installer fails fast with a clear message if a port is already taken.