# Docker Compose deployment This deployment builds the panel and web UI from the checked-out source. It does not need GitHub Actions or a published GHCR image. 1. Install Docker Engine with the Compose plugin on a Linux host. Point a DNS name at that host and arrange HTTPS through your reverse proxy. 2. Check out the commit you want to deploy, then copy `.env.example` to `.env`. Set `ADMIN_PASSWORD` to a unique password and `PUBLIC_URL` to the public `https://` URL. Set `SCOPENET_TRUSTED_PROXIES` only to the IP addresses of proxies that send forwarding headers. 3. Run: ```bash docker compose config --quiet docker compose up -d --build docker compose ps docker compose logs --tail=100 panel ``` The panel listens on `PANEL_PORT` (default `8080`). Docker checks `/scopenet-panel healthcheck` inside the container. Wait for `healthy` in `docker compose ps` before directing players to it. If `ADMIN_PASSWORD` is blank on first start, the generated password appears in the panel logs. The named `panel-data` volume holds the database, uploads, hosted launcher downloads, and the generated JWT signing key. Preserve that volume when upgrading. To back it up, stop the panel, archive the volume with a temporary container, then start it again: ```bash docker compose stop panel docker run --rm -v scopenet-mc_panel-data:/data:ro -v "$PWD":/backup alpine tar czf /backup/panel-data.tar.gz -C /data . docker compose up -d ``` If your Compose project has a different name, use the volume name shown by `docker volume ls`. To upgrade, pull the desired commit and run `docker compose up -d --build` again. Do not use `docker compose down -v` unless you intend to delete the panel data.