Files
2026-09-17 14:11:23 +01:00

147 lines
5.4 KiB
Bash

TYPE=keila
# see https://www.keila.io/docs/configuration/ for details on the environment variables below
# uncomment to run a specific version, available tags: https://hub.docker.com/r/pentacent/keila/tags
#APP_VERSION=0.30.3
# NOTE: upstream publishes linux/amd64 only, so this will not deploy to an ARM server. Point this at your own build if you need one.
#CONTAINER_REGISTRY=pentacent/keila
# enter your instance's domain name
DOMAIN=keila.example.com
## Domain aliases
#EXTRA_DOMAINS=', `www.keila.example.com`'
LETS_ENCRYPT_ENV=production
# enable abra backups
ENABLE_BACKUPS=true
COMPOSE_FILE="compose.yml"
# ====================================
# DATABASE CONFIG
COMPOSE_FILE="$COMPOSE_FILE:compose.db.postgres.yml"
SECRET_POSTGRES_PASSWORD_VERSION=v1
#POSTGRES_DB=keila
#POSTGRES_USER=keila
# for manual selection of the DB version and image uncomment
#DB_DOCKER_IMAGE=postgres
#DB_DOCKER_VERSION=17-alpine
# run Keila's tables in a named schema rather than public
#DB_SCHEMA=
# To use a managed database instead, comment out the compose.db.postgres.yml line above, swap in the overlay below, and insert the whole connection string as a secret:
# abra app secret insert <app> db_url v1 'postgres://user:pw@host:5432/keila'
#COMPOSE_FILE="$COMPOSE_FILE:compose.db.external.yml"
#SECRET_DB_URL_VERSION=v1 # generate=false
# managed providers generally require TLS
#DB_ENABLE_SSL=true
#DB_VERIFY_SSL_HOST=true
# if the provider's certificate needs a CA bundle the system trust store lacks:
# abra app secret insert <app> db_ca_cert v1 "$(cat rds-ca-bundle.pem)"
#COMPOSE_FILE="$COMPOSE_FILE:compose.db.cert.yml"
#SECRET_DB_CA_CERT_VERSION=v1 # generate=false
# ====================================
# ROOT ACCOUNT
# The admin account, created on the FIRST boot only and never again. Its password is the keila_password secret, which abra generates for you; read it back with `abra app secret ls <app>`.
KEILA_USER=admin@example.com
# ====================================
# SYSTEM MAIL
#
# This is transactional mail only: registration, password reset, contact forms. It is NOT how newsletters go out, see the section below.
#
# Keila halts at boot if MAILER_SMTP_HOST or MAILER_SMTP_FROM_EMAIL is missing, so these are not optional.
MAILER_SMTP_HOST=smtp.example.com
MAILER_SMTP_FROM_EMAIL=keila@example.com
SECRET_MAILER_SMTP_PASSWORD_VERSION=v1 # generate=false
# defaults to MAILER_SMTP_FROM_EMAIL
#MAILER_SMTP_USER=
#MAILER_SMTP_PORT=587
# auto (default), password, or none for a relay that authorises by network. With none, the password secret is not read.
#MAILER_SMTP_AUTH_METHOD=auto
# auto (default, decided by port), tls, starttls, or none
#MAILER_SMTP_TLS_MODE=auto
#MAILER_TYPE=smtp
# ====================================
# NEWSLETTER SENDING
#
# Nothing to set here. Keila configures newsletter delivery per project in the web UI, not in the environment: you pick a sender adapter (SMTP, Sendgrid, SES, Mailgun or Postmark) and enter its credentials there, and they are stored in the database.
#
# That means your database backups carry those sending credentials, so keep them somewhere protected.
# ====================================
# SIGNUP AND UPLOADS
# Closed by default, and worth leaving that way. This is a mail sender: anyone who can sign up can send campaigns through your SMTP credentials and your domain's reputation. Create accounts from the admin UI instead.
#
# To run an open instance, set this to exactly "false", "FALSE", "0" or empty. Any other value disables registration, so "False" and "no" both close it rather than open it.
DISABLE_REGISTRATION=true
# Stop users creating their own senders, leaving only the shared senders an admin set up at /admin/shared-senders. Deliberately NOT on by default: turn it on before creating a shared sender and nobody on the instance can send anything at all. Same value parsing as DISABLE_REGISTRATION above.
#DISABLE_SENDER_CREATION=true
# Keila serves user uploads from its own origin unless you give it another one. A separate hostname for untrusted files is worth having if you can spare one.
#USER_CONTENT_BASE_URL=https://uploads.example.com
# captcha on signup and subscription forms, hcaptcha or friendly_captcha
#COMPOSE_FILE="$COMPOSE_FILE:compose.captcha.yml"
#SECRET_CAPTCHA_SECRET_KEY_VERSION=v1 # generate=false
#CAPTCHA_PROVIDER=hcaptcha
#CAPTCHA_SITE_KEY=
#CAPTCHA_VERIFY_URL=
#CAPTCHA_SCRIPT_URL=
# ====================================
# MISC
# serve the app under a sub-path rather than the domain root
#URL_PATH=/
# how long message bodies are retained, in days. Default 30.
#MESSAGE_RETENTION_DAYS=30
# per-account sending quotas, off by default
#ENABLE_QUOTAS=true
# Keila phones home to check for new releases; set to true to stop it
#DISABLE_UPDATE_CHECKS=true
# skip the periodic timezone database refresh
#DISABLE_TZDATA_UPDATES=true
# stop Keila adding the Precedence: bulk header to campaign mail
#DISABLE_PRECEDENCE_HEADER=true
# emergency, alert, critical, error, warning, notice, info, debug
#LOG_LEVEL=info
# ====================================
# SECRETS
# these secrets will be autogenerated/managed by abra and docker
SECRET_SECRET_KEY_BASE_VERSION=v1 # length=128
# Keila derives this from SECRET_KEY_BASE when unset, which ties the two together: rotating the key base would then change every public Hashid in existing campaign and form URLs. Setting it separately keeps those URLs stable.
SECRET_HASHID_SALT_VERSION=v1 # length=64
SECRET_KEILA_PASSWORD_VERSION=v1 # length=32