Configuration
De Rien is configured through environment variables. A TMDB key is required to build your catalog; everything else below is optional — add each one when you want the feature it unlocks.
Configuration is done through environment variables, set in the environment:
block of your docker-compose.yml (or in a .env file if you prefer keeping
them separate). Change a value, then docker compose up -d to apply it. The
Installation guide covers the handful you need for a first
run.
TMDB — artwork & metadata
Required. De Rien builds its catalog from TMDB — posters, backdrops, summaries and cast — matched against the titles it finds in your files. Without a key it can't scan your library at all, so this is the one integration you must set up. A free key from themoviedb.org is all it takes.
TMDB_API_KEY=your_tmdb_api_key
MDBList — Rotten Tomatoes scores
Shows Rotten Tomatoes critic (Tomatometer) and audience scores on the detail page. Without it, De Rien falls back to the TMDB user score. Grab a free key (1,000 requests/day) at mdblist.com.
MDBLIST_API_KEY=your_mdblist_api_key
Email (SMTP) — magic links
De Rien signs people in with passwordless magic links. Without SMTP, those links
are printed to the container logs (docker compose logs app). Configure SMTP to
have them emailed instead:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-user
SMTP_PASS=your-password
SMTP_FROM=De Rien <derien@example.com>
Google sign-in (OAuth)
Let people sign in with Google. Create an OAuth client in the
Google Cloud Console and
add the redirect URI ${APP_URL}/api/auth/callback/google.
GOOGLE_CLIENT_ID=your_client_id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your_client_secret
New sign-ups (magic-link or Google) land in an admin approval queue before they can use the server — the first admin, created in the setup wizard, is approved automatically.
GPU transcoding (NVIDIA NVENC)
The image ships with an NVENC-capable ffmpeg. Transcoding uses your CPU by
default; to hand an NVIDIA GPU to the container, install the
nvidia-container-toolkit
on the host and add the GPU to your service. Either form works:
# Simple form
services:
app:
gpus: all
environment:
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: all
# Compose Specification form
services:
app:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
environment:
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: all
If no GPU is visible, De Rien transcodes on the CPU automatically — nothing breaks.
Downloads (advanced)
Request and download releases from inside the app by wiring up a qBittorrent client and a Torznab indexer.
# qBittorrent
QBIT_URL=http://192.168.1.10:8080
QBIT_USER=admin
QBIT_PASS=your-password
QBIT_MOVIE_CATEGORY=movies
QBIT_SERIES_CATEGORY=series
QBIT_DOC_CATEGORY=documentary
# Torr9 / Torznab release search
TORR9_PASSKEY=your_passkey
TORR9_TORZNAB_URL=https://api.torr9.net/api/v1/torznab
# Optional proxy for torr9 requests only (some regions DNS-block the domain):
# TORR9_HTTP_PROXY=http://proxy:8080
Hub, updates & telemetry
De Rien can pair with a central hub (to link servers and share memberships), check for updates, and send an anonymous daily usage ping. All three are optional and easy to switch off.
# Central hub to pair with. Defaults to the public De Rien hub — pairing still
# requires the admin-approved connect flow, so the default alone links nothing.
# Set it empty (HUB_ORIGIN=) to run fully standalone.
HUB_ORIGIN=https://hub.de-rien.zabby.fr
# Daily "new version available" check in the admin dashboard. Set false for
# air-gapped installs.
VERSION_CHECK_ENABLED=true
# Anonymous daily ping (counts only — no titles, names or emails). Opt out here.
TELEMETRY_ENABLED=true
Setting both HUB_ORIGIN= and TELEMETRY_ENABLED=false (and, for a fork,
ADMIN_ORIGIN=) stops your server contacting anything external entirely.
Full environment reference
The container already sets NODE_ENV=production, DATA_ROOT=/app/data,
MEDIA_ROOT=/media and PORT=3000 for you. Everything the app reads:
| Variable | Required | Default | Purpose |
|---|---|---|---|
APP_URL | Recommended | http://localhost:3000 | Public URL; used for magic-link emails and OAuth callbacks. |
BETTER_AUTH_SECRET | Yes (prod) | dev placeholder | Signs sessions. Generate: openssl rand -base64 32. |
DATA_ROOT | No | /app/data | Root for all persistent data (DB + artwork cache). |
DATABASE_PATH | No | ${DATA_ROOT}/derien.db | Override the SQLite file path. |
IMAGE_CACHE_ROOT | No | ${DATA_ROOT}/images | Override the artwork cache path. |
MEDIA_ROOT | No | /media | Where the library is mounted inside the container. |
MEDIA_HOST_PATH | No | — | Host path bind-mounted at MEDIA_ROOT; shown in the setup wizard. |
TMDB_API_KEY | No | — | Artwork & metadata enrichment. |
MDBLIST_API_KEY | No | — | Rotten Tomatoes critic/audience scores. |
SMTP_HOST | No | — | SMTP server; unset → magic links logged to console. |
SMTP_PORT | No | 587 | SMTP port. |
SMTP_SECURE | No | false | Use TLS on connect. |
SMTP_USER | No | — | SMTP username. |
SMTP_PASS | No | — | SMTP password. |
SMTP_FROM | No | De Rien <derien@honnete.cloud> | From address for emails. |
GOOGLE_CLIENT_ID | No | — | Google OAuth (needs both id + secret). |
GOOGLE_CLIENT_SECRET | No | — | Google OAuth secret. |
QBIT_URL | No | — | qBittorrent Web UI URL. |
QBIT_USER / QBIT_PASS | No | — | qBittorrent credentials. |
QBIT_MOVIE_CATEGORY | No | movies | Category for movie downloads. |
QBIT_SERIES_CATEGORY | No | series | Category for series downloads. |
QBIT_DOC_CATEGORY | No | documentary | Category for documentary downloads. |
TORR9_PASSKEY | No | — | Torznab passkey for release search. |
TORR9_TORZNAB_URL | No | https://api.torr9.net/api/v1/torznab | Torznab endpoint. |
TORR9_HTTP_PROXY | No | — | Proxy for torr9 requests only. |
HUB_ORIGIN | No | https://hub.de-rien.zabby.fr | Hub to pair with; empty = standalone. |
VERSION_CHECK_ENABLED | No | true | Poll for new releases. |
VERSION_MANIFEST_URL | No | admin console | Release manifest (override on forks). |
TELEMETRY_ENABLED | No | true | Anonymous daily usage ping (opt-out). |
ADMIN_ORIGIN | No | admin console | Telemetry + bug-report target; empty disables both. |