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. Login emails are
delivered by the first available of three routes: your own SMTP if
configured → the hub relay if the server is linked to a hub
(the hub emails the link on your behalf, only to addresses in your server's
member roster, rate-limited) → the container logs
(docker compose logs app). So on a hub-linked server SMTP is optional;
configure it to send directly:
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.
Privacy note: on a linked server without SMTP, login emails are relayed through the hub (see Email) — the recipient's address and the sign-in link transit the hub when that fallback is active. Configure SMTP to send directly, or unlink to stay fully standalone.
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 relayed via the hub when linked, otherwise 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. |