Skip to content

Environment variables

Alien edited this page Oct 20, 2026 · 1 revision

Dossier is configured with environment variables; everything else is set in the app. With Docker Compose, put them in .env next to compose.yml, then run docker compose up -d to apply them (a plain restart keeps the old values). For the other ways of running Dossier, its installation guide says where they go. The server doesn't start while a required variable is missing or invalid, and its log says which one and how to fix it.

Required

Variable What it's for
POSTGRES_PASSWORD The database's password. compose.yml builds the app's DATABASE_URL from it.
DOSSIER_PASSWORD A hash of the password you sign in with, made with hash-password (docker run --rm -it ghcr.io/aientech/dossier hash-password); the password itself isn't accepted. It's only read from here, never stored. Changing it signs every session out.
DOSSIER_SECRET At least 32 random characters. Signs sessions and encrypts saved API keys; changing it signs everyone out, and API keys have to be entered again.

Optional

Variable Default What it's for
TZ UTC The server's time zone, e.g. Europe/Berlin. Nightly backups run at 03:00 in it, and dates the server writes (a letter's date, "today") follow it.
DOSSIER_BACKUP_RETENTION_DAYS 14 How many days of nightly backups to keep.
DOSSIER_TELEMETRY (unset) Whether to send the usage ping, a random install ID and the version number once on each day Dossier is used (see Privacy). Unset, Dossier asks after you sign in and sends nothing until you agree. on or off answers in advance and hides the question; while it's set, it decides.
DOSSIER_AI_PROVIDER none local (Ollama or llama.cpp), lmstudio, openai (any OpenAI-compatible API), anthropic or mistral. A default for Settings → AI provider; a choice saved there wins.
DOSSIER_AI_URL per provider The AI server's address, e.g. http://ollama:11434.
DOSSIER_AI_MODEL per provider The model to use, e.g. qwen2.5:7b or claude-sonnet-5.
DOSSIER_AI_KEY none The API key for a hosted provider.
DOSSIER_AI_TIMEOUT_SECONDS 300 local, 120 hosted How long one AI request may take.
DOSSIER_JOBS_SOURCE off jsearch, adzuna, arbeitsagentur or off. A default for Settings → Job search; a choice saved there wins.
DOSSIER_JSEARCH_KEY none A JSearch key, from OpenWeb Ninja or RapidAPI.
DOSSIER_JSEARCH_HOST openwebninja Where that key is from: openwebninja or rapidapi.
DOSSIER_ADZUNA_APP_ID, DOSSIER_ADZUNA_KEY none Adzuna's app ID and key.
DOSSIER_GOOGLE_CLIENT_ID, DOSSIER_GOOGLE_CLIENT_SECRET none A Google OAuth client, for Gmail and Calendar (see Connecting Gmail and Calendar). A client saved in Settings → Google wins.
DOSSIER_PUBLIC_URL the address in use The address Dossier is reached at, e.g. https://dossier.example.com, for Google's redirect after you sign in. Only needed when your proxy doesn't pass on the host and protocol.
DOSSIER_IMAGE ghcr.io/aientech/dossier:latest The image to run. Set a version, e.g. ghcr.io/aientech/dossier:v1.4.1, to upgrade only when you choose.
DOSSIER_PORT 3000 The port on the server (127.0.0.1) that Dossier listens on, for the reverse proxy.
COMPOSE_PROFILES none ai runs Ollama as well (see Local model with Ollama).

Without the Compose file

Set DATABASE_URL (postgresql://user:password@host:5432/database) instead of POSTGRES_PASSWORD. DOSSIER_IMAGE, DOSSIER_PORT and COMPOSE_PROFILES are read by the Compose file, so they don't apply.

Running the image, mount a volume at /data, where nightly backups and zipped PDFs go. Without Docker, set DOSSIER_DATA_DIR to a folder for them, as a whole path, such as /home/you/dossier-data.

Clone this wiki locally