Environment Variables
All personal settings for FediSuite — domain, passwords, mail server, admin credentials — are configured via the .env file. This page explains each variable individually so you know what to enter where and why.
On this page
What is a .env file?
A .env file is a simple text file with key-value pairs in the format KEY=value. Docker Compose reads it at startup and passes the values to the containers as so-called environment variables — settings that the program receives when it starts.
The advantage: you don't need to touch the docker-compose.yml. All instance-specific values — passwords, domains, secrets — are stored separately in the .env. This makes updates easier, because when updating you only overwrite the docker-compose.yml, not your configuration.
.env file contains passwords and secrets. It must never be committed to a Git repository. The repository already includes a matching .gitignore entry — still, make sure you don't accidentally publish the file.
The complete template
The repository includes a ready-made template at .env.example. Copy it once to .env and adjust the values.
# Database
POSTGRES_DB=fedisuite
POSTGRES_USER=fedisuite
POSTGRES_PASSWORD=change-me
DATABASE_URL=postgresql://fedisuite:change-me@db:5432/fedisuite
# Docker Image
FEDISUITE_IMAGE=christinloehner/fedisuite:latest
# App
JWT_SECRET=replace-with-a-long-random-secret
APP_NAME=FediSuite
APP_URL=https://your-domain.example
PUBLIC_SITE_URL=https://your-domain.example
# Admin account (only evaluated on first start)
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=change-this-admin-password
# Email
SMTP_HOST=smtp.your-provider.example
SMTP_PORT=587
SMTP_USER=your-smtp-user
SMTP_PASS=your-smtp-password
SMTP_FROM=no-reply@your-domain.example
# Optional
OUTBOUND_HTTP_USER_AGENT=Mozilla/5.0 (compatible; FediSuite/1.0; +https://your-domain.example)
ENABLE_USER_REGISTRATION=true
Database connection
FediSuite uses PostgreSQL as its database. The following four variables must match each other — if you set a new password in POSTGRES_PASSWORD, the same password must also appear in the DATABASE_URL.
POSTGRES_DB
fedisuite
Required
The name of the database that PostgreSQL creates on first start. You can choose any name — fedisuite is a sensible default.
POSTGRES_USER
fedisuite
Required
The database user. PostgreSQL automatically creates this user on first start.
POSTGRES_PASSWORD
secure-password
Required
The password for the database user. Choose a strong, random password here. Never leave the default value change-me unchanged.
DATABASE_URL
postgresql://fedisuite:password@db:5432/fedisuite
Required
The full connection string through which FediSuite reaches the database. The format is postgresql://USER:PASSWORD@HOSTNAME:PORT/DBNAME. The hostname is db — that is the database container's internal name in the Docker network. Change USER, PASSWORD, and DBNAME to match the values in the POSTGRES_* variables.
mySecurePassword99 as the password, the DATABASE_URL must read:postgresql://fedisuite:mySecurePassword99@db:5432/fedisuite
Docker Image
FEDISUITE_IMAGE
christinloehner/fedisuite:latest
Required
Specifies which Docker image is used for the app, worker1, and worker2 containers. The value is composed of IMAGENAME:TAG.
christinloehner/fedisuite:latest
Always the latest stable version. Recommended for most operators.
christinloehner/fedisuite:1.20.0
Pin a specific version. Useful if you want to control updates deliberately.
1.20.13). The first digit denotes a major version, the second new features and critical fixes (stable production releases), and the third pre-release versions for testing.
App Configuration
APP_URL
https://fedisuite.your-domain.com
Required
The full public URL of your FediSuite instance — starting with https:// and without a trailing slash. This URL is used in emails, links, and API responses. If it doesn't match the actual domain, many things will not work correctly.
JWT_SECRET
(long random string, at least 64 characters)
Required
A secret key with which FediSuite signs login tokens (JSON Web Tokens). Anyone who knows this key can forge valid tokens and impersonate any user. It must therefore be long, random, and kept secret. Generate it once on the server — do not change it afterwards, as all active logins will become invalid.
Generate JWT_SECRET
openssl rand -hex 64
Run this command on your server and copy the output as the value for JWT_SECRET.
APP_NAME
FediSuite
Optional
The display name of your instance, e.g. in emails. Optional — if not set, FediSuite is used as the default.
PUBLIC_SITE_URL
https://fedisuite.your-domain.com
Optional
An optional alternative public URL if your instance should be accessible at a different address than APP_URL. In most cases you can omit this or set it to the same value as APP_URL.
Admin Account
FediSuite automatically creates an administrator account on the very first start. Exactly these two variables are used for this — and only once. After that, changes to these values in the .env have no effect.
ADMIN_EMAIL
admin@your-domain.com
Required
The email address of the first admin account. You use this address to log in for the first time after installation.
ADMIN_PASSWORD
secure-admin-password
Required
The password for the first admin account. Choose a strong password. You can change it at any time in the app after the first login.
ADMIN_PASSWORD is missing or empty on first start, no working admin account will be created — and there will be no way to log in or reset a password without directly accessing the database. Set this value before the very first docker compose up -d.
Email (SMTP)
FediSuite sends emails for user registration, password reset, and notifications after connecting Fediverse accounts. Without SMTP configuration, these features are completely disabled. SMTP is therefore required for meaningful operation.
SMTP_HOST
smtp.your-provider.com
Required
The hostname of your email provider's SMTP server. Examples: smtp.gmail.com, smtp.mailgun.org, mail.privatebox.de.
SMTP_PORT
587
Required
The port of the SMTP server. Common ports: 587 (STARTTLS, recommended), 465 (SSL/TLS), 25 (unencrypted, not recommended). Which port your provider uses can be found in their documentation.
SMTP_USER
no-reply@your-domain.com
Required
The username for SMTP authentication — often identical to the sender email address.
SMTP_PASS
your-smtp-password
Required
The password for SMTP authentication. With providers like Gmail, this is often an app-specific password, not the regular account password.
SMTP_FROM
no-reply@your-domain.com
Required
The sender address shown in outgoing emails. This generally must match the domain of your SMTP account, otherwise receiving servers will reject the emails.
Access & further options
ENABLE_USER_REGISTRATION
true
Optional
Controls whether new users can register via the registration page. Default is true (open). If you want to run FediSuite only for yourself or a fixed group, set this to false.
ENABLE_USER_REGISTRATION=true
Public instance — anyone can register.
ENABLE_USER_REGISTRATION=false
Private instance — no registration possible. The initial admin account is still created.
OUTBOUND_HTTP_USER_AGENT
Optional
The User-Agent header that FediSuite sends with outgoing HTTP requests — i.e. when the app fetches profile data or posts from Fediverse servers. Many Fediverse instances evaluate this header to identify which software is talking to them.
OUTBOUND_HTTP_USER_AGENT=Mozilla/5.0 (compatible; FediSuite/1.0; +https://your-domain.com)
Replace your-domain.com with your actual domain so that instance operators can get in touch if needed.
Worker Variables (in docker-compose.yml)
These variables do not belong in the .env file — they are set directly in the docker-compose.yml per service and control which background tasks a container handles. They are documented here for completeness.
ENABLE_SCHEDULER
Enables the scheduler that publishes scheduled posts at the right time. Should only be active in a single worker to avoid duplicate posts. In the default setup, only active in worker1.
ENABLE_POSTS_REFRESH
Enables the regular fetching of updated data from Fediverse platforms — e.g. new reactions or comments on already published posts. Can run in multiple workers simultaneously.
ENABLE_IDLE_REMINDER
Sends reminder emails to users who haven't scheduled or published a post for a while. In the default setup, only active in worker1.
ENABLE_TIPS_ENGINE
Enables the tips engine that generates suggestions and optimization hints for users' posts. Can be distributed across multiple workers.
WORKER_ID
A unique identifier for the worker process (e.g. worker-1). Appears in log output and helps with diagnostics when multiple workers are running.
REFRESH_BATCH_SIZE
How many posts the worker processes per refresh cycle. Default is 5. Lower values are gentler on Fediverse server APIs; higher values speed up updates for many users but may cause rate limiting.