Skip to main content

Environment Variables

Set these in .env for a manual installation, or under environment in docker-compose.yml. Restart PLANKA after changing them.

Required​

VariableDescription
BASE_URLThe address users open PLANKA at, for example https://planka.example.com.
DATABASE_URLPostgreSQL connection string, for example postgresql://planka:PASSWORD@localhost/planka. Characters that are special in a URL have to be percent-encoded.
SECRET_KEYSigns every access token. Generate one with openssl rand -hex 64. Anyone who knows it can sign in as any user.

Storing Secrets in Files​

These variables can be read from a file by adding __FILE to the name, which is what Docker secrets need: DATABASE_URL, DATABASE_PASSWORD, SECRET_KEY, DEFAULT_ADMIN_PASSWORD, S3_SECRET_ACCESS_KEY, SMTP_PASSWORD.

- SECRET_KEY__FILE=/run/secrets/secret_key

DATABASE_PASSWORD is used through a placeholder: DATABASE_URL=postgresql://postgres:$${DATABASE_PASSWORD}@postgres/planka.

Database​

VariableDescription
DATABASE_SCHEMAThe schema PLANKA lives in. It must already exist, and the database user must be able to create tables in it. Defaults to the connection's search path.
PGSSLMODEUsed when DATABASE_URL says nothing about TLS. Prefer ?sslmode=verify-full&sslrootcert=/path/to/ca.pem in the URL.
KNEX_REJECT_UNAUTHORIZED_SSL_CERTIFICATESet to false to accept a certificate that cannot be verified.

General​

VariableDefaultDescription
TRUST_PROXYfalseSet to true behind a reverse proxy, so PLANKA sees the real client address.
TOKEN_EXPIRES_IN365Lifetime of access tokens in days.
MAX_UPLOAD_FILE_SIZELargest upload.
STORAGE_LIMITTotal storage limit.
ACTIVE_USERS_LIMITMaximum number of active users.
DEFAULT_LANGUAGEen-USFallback for users with no language set, also used for per-board notifications and to select the main terms.
SWAGGER_EXPOSEDfalseSet to true to serve the API specification at /swagger.json.
GRAVATAR_BASE_URLGravatar endpoint. Using Gravatar directly exposes user addresses and hashed emails to a third party, so prefer a proxy you control. Empty disables it.

Admin User​

DEFAULT_ADMIN_EMAIL, DEFAULT_ADMIN_PASSWORD, DEFAULT_ADMIN_NAME and DEFAULT_ADMIN_USERNAME create the first administrator. See Admin User.

Logging​

LOG_LEVEL, LOG_FILE and LOG_STDERR_LEVELS. See Logging.

Security​

VariableDefaultDescription
SHOW_DETAILED_AUTH_ERRORSfalseSee Detailed Authentication Errors.
AUTH_RATE_LIMIT_WINDOW60See Sign-in Limits.
AUTH_RATE_LIMIT_MAX_PER_IP30
AUTH_RATE_LIMIT_MAX_PER_IDENTIFIER10

Outgoing Requests​

VariableDescription
OUTGOING_PROXYSends all outgoing HTTP requests (SMTP, webhooks, Apprise notifications, favicon fetching) through this proxy.
OUTGOING_BLOCKED_IPS, OUTGOING_BLOCKED_HOSTSDocker only. Always blocked by the built-in proxy, highest priority.
OUTGOING_ALLOWED_IPS, OUTGOING_ALLOWED_HOSTSDocker only. When set, only these are reachable.

The Docker image starts its built-in proxy when OUTGOING_PROXY is not set.

Notifications​

VariableDescription
APPRISE_ENABLEDSet to false to prevent users from configuring and sending Apprise notifications.
APPRISE_ALLOWED_SCHEMASComma-separated allowlist, for example slack,telegram. When set, APPRISE_BLOCKED_SCHEMAS is ignored.
APPRISE_BLOCKED_SCHEMASComma-separated blocklist. Replaces the built-in list syslog,dbus,kde,qt,glib,gnome,macosx,windows.

S3 Storage​

S3_ENDPOINT, S3_REGION, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_BUCKET, S3_FORCE_PATH_STYLE and S3_REQUEST_CHECKSUM_CALCULATION.

Email​

These override and disable the configuration in the UI if set.

SMTP_HOST, SMTP_PORT (default 587), SMTP_NAME, SMTP_SECURE, SMTP_TLS_REJECT_UNAUTHORIZED, SMTP_USER, SMTP_PASSWORD and SMTP_FROM. See the Nodemailer documentation.