Installation
One file, one command. De Rien runs as a single Docker container — no database to install, no build step, migrations applied for you on first boot.
Before you start
You need Docker and Docker Compose on the machine that will host your library, plus your media files somewhere on that machine. That's it.
1. Create your docker-compose.yml
Make a folder for your instance (for example ~/derien) and save this as
docker-compose.yml inside it. It pulls the public image from GitHub Container
Registry — no login, no build.
services:
app:
image: ghcr.io/zabby-suite/de-rien:latest
container_name: derien-app
restart: unless-stopped
ports:
- "3000:3000"
volumes:
# Your media library, mounted read-only inside the container — swap in
# the absolute path on the host.
- /path/to/your/media:/media:ro
# Persistent app data: the SQLite database + the artwork cache.
- derien-data:/app/data
environment:
# The public URL your server is reached at. Powers sign-in emails and
# OAuth callbacks — use http://localhost:3000 while testing on the same
# machine.
APP_URL: "http://localhost:3000"
# Secret used to sign sessions. Generate one with: openssl rand -base64 32
BETTER_AUTH_SECRET: "paste-a-long-random-secret-here"
# Required to build your catalog — De Rien can't scan without it.
# Free key: https://www.themoviedb.org/
TMDB_API_KEY: "your_tmdb_api_key"
# Ready for NVIDIA GPU transcoding — add "gpus: all" and install the
# nvidia-container-toolkit on the host to enable it (CPU otherwise).
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: all
healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:3000/api/v1/health"]
interval: 30s
timeout: 10s
start_period: 40s
retries: 3
volumes:
derien-data:
2. Fill in your values
Everything De Rien needs lives right in that file — there is no .env to
create. Before starting it, edit four things:
APP_URL— the public URL your server is reached at (https://derien.example.comonce it's exposed; keephttp://localhost:3000while testing on the same machine).BETTER_AUTH_SECRET— a long random string; generate one withopenssl rand -base64 32.TMDB_API_KEY— your TMDB API key.- The media volume — the absolute path on the host to your media library
(e.g.
/mnt/nas/media:/media:ro).
A TMDB_API_KEY is required: De Rien builds its catalog from TMDB and won't scan
your library without one (see
Configuration → TMDB). Everything
else has a sensible default — see Configuration for the
optional integrations (email, downloads, GPU…). There is no database to
configure: SQLite is embedded, and the schema migrates itself on first boot.
3. Start it up
docker compose up -d
On first launch, De Rien creates its database, runs migrations and reports healthy once it's ready to serve requests. Watch it come up with:
docker compose logs -f app
4. Run the setup wizard
Open your APP_URL in a browser. Because the database has no users yet, you're
taken straight to the setup wizard, where you:
- Name your instance.
- Enter the first administrator email.
- Point at your library folders (the folder browser is confined to your mounted media directory).
See Media library for how to organize those folders.
5. Sign in with a magic link
De Rien is passwordless. Creating the admin in the wizard doesn't log you in — you sign in with a one-time magic link to prove you own that email address.
If you haven't set up email yet, that's fine: the link is printed to the container logs instead of being sent. Grab it with:
docker compose logs app
To have links emailed for real, configure SMTP — see Configuration → Email.
And that's it. You're in.
Alternative: build from source
Prefer to build the image yourself instead of pulling it? Clone the repository and use the bundled production compose file:
git clone https://github.com/zabby-suite/de-rien-v2.git
cd de-rien-v2
docker compose -f docker-compose.prod.yml up -d --build
Unlike the compose file above, docker-compose.prod.yml reads its
configuration from a .env file: create one next to it before starting, with
the same variables (APP_URL, BETTER_AUTH_SECRET, TMDB_API_KEY), plus
MEDIA_HOST_PATH for the media volume.