De Rien/Documentation

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

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:

VariableRequiredDefaultPurpose
APP_URLRecommendedhttp://localhost:3000Public URL; used for magic-link emails and OAuth callbacks.
BETTER_AUTH_SECRETYes (prod)dev placeholderSigns sessions. Generate: openssl rand -base64 32.
DATA_ROOTNo/app/dataRoot for all persistent data (DB + artwork cache).
DATABASE_PATHNo${DATA_ROOT}/derien.dbOverride the SQLite file path.
IMAGE_CACHE_ROOTNo${DATA_ROOT}/imagesOverride the artwork cache path.
MEDIA_ROOTNo/mediaWhere the library is mounted inside the container.
MEDIA_HOST_PATHNoHost path bind-mounted at MEDIA_ROOT; shown in the setup wizard.
TMDB_API_KEYNoArtwork & metadata enrichment.
MDBLIST_API_KEYNoRotten Tomatoes critic/audience scores.
SMTP_HOSTNoSMTP server; unset → magic links logged to console.
SMTP_PORTNo587SMTP port.
SMTP_SECURENofalseUse TLS on connect.
SMTP_USERNoSMTP username.
SMTP_PASSNoSMTP password.
SMTP_FROMNoDe Rien <derien@honnete.cloud>From address for emails.
GOOGLE_CLIENT_IDNoGoogle OAuth (needs both id + secret).
GOOGLE_CLIENT_SECRETNoGoogle OAuth secret.
QBIT_URLNoqBittorrent Web UI URL.
QBIT_USER / QBIT_PASSNoqBittorrent credentials.
QBIT_MOVIE_CATEGORYNomoviesCategory for movie downloads.
QBIT_SERIES_CATEGORYNoseriesCategory for series downloads.
QBIT_DOC_CATEGORYNodocumentaryCategory for documentary downloads.
TORR9_PASSKEYNoTorznab passkey for release search.
TORR9_TORZNAB_URLNohttps://api.torr9.net/api/v1/torznabTorznab endpoint.
TORR9_HTTP_PROXYNoProxy for torr9 requests only.
HUB_ORIGINNohttps://hub.de-rien.zabby.frHub to pair with; empty = standalone.
VERSION_CHECK_ENABLEDNotruePoll for new releases.
VERSION_MANIFEST_URLNoadmin consoleRelease manifest (override on forks).
TELEMETRY_ENABLEDNotrueAnonymous daily usage ping (opt-out).
ADMIN_ORIGINNoadmin consoleTelemetry + bug-report target; empty disables both.