Skip to content

Requirements

Odeion runs on Linux via Docker. What you need depends almost entirely on one question: how much transcoding will your server do?

FactorCostNotes
Direct playVery lowWhen a client supports the file’s codecs, Odeion streams the file as-is. Any modern machine handles many direct-play streams.
Software transcodingHigh, CPU-boundEach concurrent transcode occupies one or more CPU cores, more for 4K and HDR tone mapping.
Hardware transcodingLow, needs a GPUA single supported GPU handles multiple concurrent streams with little CPU involvement.
Library scanning and processingModerate, burstyProbing, thumbnail and preview generation, and audio fingerprinting run in the background after files are added, then go quiet.
DatabaseLowPostgreSQL (embedded or external) adds modest memory overhead, growing with library size and watch history.

Rule of thumb: if your clients mostly direct play, almost anything works. If you expect regular transcoding, either plan CPU headroom per concurrent stream or use a GPU.

GPUAPIPrerequisites
Intel or AMDVAAPI/dev/dri must exist on the host (kernel driver loaded). The Docker container joins the render group automatically.
NVIDIANVENCThe NVIDIA Container Toolkit must be installed on the host.
NoneSoftwareWorks everywhere; budget CPU cores per concurrent stream.

The installation wizard generates the right device passthrough for your choice, and the server probes the GPU’s actual encode capabilities at setup time. See Transcoding for profiles and pools.

Two distinct storage needs, detailed on the Storage page:

  • Data directory: persistent state (database, thumbnails, backups). Regular disks are fine; size grows with library size, typically a few GB per thousand items.
  • Cache directory: transcode scratch space. Use the fastest local disk available (NVMe ideal). The transcode cache is capped at 32 GB by default and evicts old segments automatically.

Your media itself stays on your existing storage and is mounted read-only.

  • Docker Engine with Docker Compose v2 (docker compose version to check).
  • No external database is required: the default setup runs an embedded PostgreSQL. An external PostgreSQL 15+ server is supported and recommended for large deployments.
  • Client apps (mobile, TV) require HTTPS, so you need a domain name and a reverse proxy for anything beyond LAN web access.
  • The device-linking login flow also requires your server to be reachable over HTTPS at its configured base URL.