Configuration reference

July 16, 2026 ยท View on GitHub

Environment variables

VariableDefaultDescription
DATABASE_URLSQLite in instance/SQLAlchemy URL. mysql:// is normalized to mysql+pymysql://.
INSTANCE_PATHRepository instance/ with ./panelDirectory used for the default SQLite database and generated persistent secret.
SECRET_KEYGenerated persistent fileSigns sessions and derives encryption for provider credentials, webhooks, and TOTP secrets.
SOURCE_URLOfficial GitHub repositorySource and license link shown to network users.
PUBLIC_ORIGINhttp://127.0.0.1:8080Absolute origin used in verification and recovery links.
COOKIE_SECURE0Set to 1 when the public service uses HTTPS only.
HOST127.0.0.1Address used by ./panel start.
PORT8080HTTP port used by ./panel start.
WORKERS2Gunicorn web worker count.
SMTP_HOSTEmptySMTP server. Empty disables outbound email delivery.
SMTP_PORT587SMTP port.
SMTP_USERNAMEEmptyOptional SMTP username.
SMTP_PASSWORDEmptyOptional SMTP password.
SMTP_FROMLocal no-reply addressRFC 5322 sender used for application email.
SMTP_STARTTLS1Enable SMTP STARTTLS. Use 0 only on a trusted local connection.
ALLOW_PRIVATE_WEBHOOKS0Allow loopback and private webhook targets for controlled development environments.
WEBHOOK_TIMEOUT5Outbound webhook timeout in seconds.

Secret handling

Back up SECRET_KEY with the database. Losing it prevents decryption of DNS credentials, TOTP secrets, and webhook secrets. Do not rotate it in place. A planned rotation requires re-entering all encrypted values and asking users with TOTP enabled to enroll again.

Do not put real provider credentials in Compose files, source control, screenshots, or support requests. Use a deployment secret manager where available.

Instance settings

Administrators can change the displayed site name, default domain quota, and public registration policy in Administration โ†’ Settings. A zone-specific quota overrides the instance default.

Supported languages

The interface provides English (en-US), Spanish (es-ES), Simplified Chinese (zh-CN), Traditional Chinese (zh-TW), Portuguese (pt-BR), French (fr-FR), Russian (ru-RU), and Japanese (ja-JP). English is the fallback for untranslated or newly added messages.