Deploying (Docker)

August 4, 2026 · View on GitHub

Homelab-oriented: single container, no auth, meant to sit behind your own reverse proxy on a trusted LAN.

cd deploy
docker compose up -d --build
curl http://localhost:8000/healthz

Open http://localhost:8000/ for the WebUI — see docs/webui.md for a tour of the pages.

The image installs from source (pip install ".[server]" against the repo checkout), and a few first-party dependencies are still pinned to git+https://...@dev refs until they're published to PyPI. That's why the Dockerfile installs git at build time (see deploy/Dockerfile) — it's a build-time-only dependency, not something the running container needs.

Environment variables

All optional — every keyless provider works out of the box.

VariablePurpose
TMDB_API_KEYenables the TMDB provider
TVDB_API_KEYenables the TheTVDB provider
DISCOGS_TOKENenables the Discogs provider
METADATARR_HTTP_CACHEdirectory for the on-disk HTTP response cache (default: unset = no cache)
METADATARR_HTTP_CACHE_TTLcache TTL in seconds

Set them in deploy/docker-compose.yml (commented placeholders are there) or via docker run -e ....

Volumes

  • /data — HTTP cache (METADATARR_HTTP_CACHE=/data/http-cache).
  • /config — XDG_CONFIG_HOME, so your mappings overlay lives at /config/metadatarr/mappings.toml inside the container. Mount a host file there to add cross-platform identity assertions without rebuilding the image.

Security note

There is no built-in authentication. This is meant for a single-tenant homelab setup: put it behind a reverse proxy (Caddy, Traefik, nginx) with your own auth layer if it needs to be reachable outside your LAN.