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. 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:

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_PATHNo—Host path bind-mounted at MEDIA_ROOT; shown in the setup wizard.
TMDB_API_KEYNo—Artwork & metadata enrichment.
MDBLIST_API_KEYNo—Rotten Tomatoes critic/audience scores.
SMTP_HOSTNo—SMTP server; unset → magic links relayed via the hub when linked, otherwise logged to console.
SMTP_PORTNo587SMTP port.
SMTP_SECURENofalseUse TLS on connect.
SMTP_USERNo—SMTP username.
SMTP_PASSNo—SMTP password.
SMTP_FROMNoDe Rien <derien@honnete.cloud>From address for emails.
GOOGLE_CLIENT_IDNo—Google OAuth (needs both id + secret).
GOOGLE_CLIENT_SECRETNo—Google OAuth secret.
QBIT_URLNo—qBittorrent Web UI URL.
QBIT_USER / QBIT_PASSNo—qBittorrent credentials.
QBIT_MOVIE_CATEGORYNomoviesCategory for movie downloads.
QBIT_SERIES_CATEGORYNoseriesCategory for series downloads.
QBIT_DOC_CATEGORYNodocumentaryCategory for documentary downloads.
TORR9_PASSKEYNo—Torznab passkey for release search.
TORR9_TORZNAB_URLNohttps://api.torr9.net/api/v1/torznabTorznab endpoint.
TORR9_HTTP_PROXYNo—Proxy 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.