Skip to content

HTTPS

For production, serve the panel over HTTPS. Sessions use cookies, so this protects your login.

Put a reverse proxy in front of the panel and point it at HTTP_PORT:

  • Caddy — automatic Let's Encrypt certificates, simplest.
  • Traefik — great if you already run it.
  • nginx + certbot — classic and reliable.

A minimal Caddy example (Caddyfile):

text
panel.example.com {
    reverse_proxy localhost:80
}

(Replace 80 with your HTTP_PORT if you changed it.)

Once the panel is reachable over https://, tell it to mark the session cookie Secure:

bash
# in .env
COOKIE_SECURE=true

Restart to apply:

bash
docker compose up -d

Don't set COOKIE_SECURE=true on plain http

A Secure cookie is only sent over HTTPS. If you enable it while still serving http://, the browser drops the session cookie and you can't stay logged in. Keep it false until TLS is actually in front.

Discord redirect URI

If you use Discord login, make sure DISCORD_REDIRECT_URI uses your https:// domain and matches the redirect registered in the Discord app exactly — e.g. https://panel.example.com/api/auth/discord/callback. See Authentication & roles.

Released under the MIT License.