This is a reference for the environment variables a self-hosted forum reads.
For how they combine, see Configuration.
| Variable |
Default |
Notes |
DATABASE_URL |
— |
PostgreSQL URL. Presence = production mode. |
SECRET_KEY |
— |
Required in production; app won’t start without it. |
API_KEY |
— |
Platform API bootstrap key (if API enabled). |
JWT_SECRET |
— |
JWT signing secret (if token auth used). |
BLUSET_REDIS_URL |
— |
Redis URL for cache, rate-limiting, and Celery. Not a canonical name — it must carry the BLUSET_ prefix. |
BLUSET_REDIS_ENABLED |
False |
Set True to actually use Redis (otherwise cache falls back to in-process and the rate-limiter to memory). |
BLUSET_PRODUCTION |
unset |
Force production mode either way. |
BLUSET_DEBUG |
False |
Never enable in production. |
BLUSET_AUTO_MIGRATE |
True |
Migrations run on container start by default; set False to manage them yourself. |
BLUSET_SETTINGS |
— |
Path to a Python config file to load. |
BLUSET_SENTRY_DSN |
— |
Error tracking (optional). |
BLUSET_SENTRY_ENVIRONMENT |
production |
Sentry environment tag. |
BLUSET_STATIC_DIR |
image path |
Static assets directory. |
BLUSET_THEMES_DIR |
image path |
Themes directory. |
BLUSET_SOCKET_DIR |
/run/bluset |
Socket directory when binding a socket. |
| Variable |
Default |
Notes |
FORUM_ENABLED |
true |
Enable the web interface (forum, auth, admin, user, help-desk web). |
API_ENABLED |
true |
Enable the API interface (forum/CMS/auth/help-desk APIs). |
FEATURE_SET |
— |
Comma-separated allowlist of child features to enable. When present, it is authoritative each boot. |
| Variable |
Notes |
ADMIN_USERNAME |
Bootstrap admin username. Change immediately. |
ADMIN_EMAIL |
Bootstrap admin email. |
ADMIN_PASSWORD |
Bootstrap admin password. Never keep the sample value. |
Prefer creating the admin explicitly with bluset create-admin (see the
CLI reference) so credentials never sit in
the environment.
These are Flask-Mail settings, so they take the BLUSET_ prefix.
| Variable |
Default |
Notes |
BLUSET_MAIL_SERVER |
localhost |
SMTP host. |
BLUSET_MAIL_PORT |
25 |
SMTP port. |
BLUSET_MAIL_USE_TLS |
False |
STARTTLS (set True for port 587). |
BLUSET_MAIL_USE_SSL |
False |
Implicit TLS (set True for port 465). |
BLUSET_MAIL_USERNAME / BLUSET_MAIL_PASSWORD |
— |
SMTP credentials. |
BLUSET_MAIL_DEFAULT_SENDER |
— |
From address. |
| Variable |
Default |
Notes |
GUNICORN_BIND |
unix:/runtime/bluset.sock |
Set 0.0.0.0:8000 for TCP behind a proxy. |
WEB_CONCURRENCY |
2 |
Workers; a good start is (cores × 2) + 1. |
PYTHON_MAX_THREADS |
1 |
Threads per worker. |
WEB_TIMEOUT |
120 |
Worker timeout (seconds). |
WEB_RELOAD |
false |
Development only. |
GUNICORN_LOG_LEVEL |
info |
Log level. |
| Variable |
Default |
Notes |
CELERY_LOG_LEVEL |
info |
Worker log level (container/entrypoint var). |
BLUSET_CELERY_BEAT_ENABLED |
False |
Enable scheduled tasks. |
BLUSET_CELERY_CONFIG |
Redis on localhost |
Override the whole Celery config dict (broker/result backend) — e.g. to point at a separate Redis. |
| Variable |
Default |
Notes |
POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB |
sample values |
Change for production. |
POSTGRES_VERSION |
alpine |
Postgres image tag. |
REDIS_VERSION |
alpine |
Redis image tag. |
COMPOSE_PROJECT_NAME |
bluset |
Compose project name. |
TAG |
latest |
Image tag to run. |
UID / GID |
2000 |
Non-root run user. |
DOCKER_RESTART_POLICY |
unless-stopped |
Container restart policy. |
See Connect a support inbox for
BLUSET_HELPDESK_INBOUND_SECRET, BLUSET_HELPDESK_SUPPORT_EMAIL, and related keys.