Repository navigation
Environment variables
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.
| 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. |
| 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). |
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.
On your own computer
On a server
After installing