Setting up Jellyfin
A from-scratch setup for a personal Jellyfin server. Comfortable copy-pasting a few commands into a terminal is all that's needed here; no deep Docker knowledge required.
- 1
Install Docker
Docker packages Jellyfin together with everything it needs to run, so it behaves the same regardless of what else is installed on this machine (the Docker guide elsewhere in this Library covers why that's useful beyond just this one app). On Linux, the official install script below handles most distros in one line; on macOS or Windows, Docker Desktop from docker.com is the easiest path. Once it's installed, running `docker --version` in a terminal should print a version number rather than an error; that's the confirmation it worked.
curl -fsSL https://get.docker.com | sh - 2
Create a project folder and the compose file
Make a new folder anywhere convenient, then inside it create a file named exactly docker-compose.yml with the contents below. Update the two `/path/to/...` lines to point at wherever the movie and TV files already live on this machine; nothing gets copied, Docker just gets permission to read them.
services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin restart: unless-stopped ports: - "8096:8096" volumes: - ./config:/config - ./cache:/cache - /path/to/movies:/media/movies:ro - /path/to/tv:/media/tv:ro - 3
Start the container
From inside that same folder, run the command below. The very first run downloads the Jellyfin image (a few hundred MB, so it can take a minute or two depending on the connection), then starts it in the background. Once it's finished, Jellyfin is reachable from any device on the same network at http://<this-machine's-IP>:8096.
docker compose up -d - 4
Run the setup wizard
Opening that address for the first time launches Jellyfin's own setup wizard: pick a display language, create the admin account (this is just the login for this particular server, unrelated to any other account), and when it asks for a media folder, point it at the movies folder that was mounted in the compose file to build the first library.
- 5
Add the rest of the libraries
Back in the dashboard (the gear icon in the top corner → Libraries), add any additional folders. Keeping Movies and TV shows as two separate libraries, rather than one folder with everything mixed together, lets Jellyfin match titles and pull down correct artwork far more reliably.
- 6
Get a nicer client
Jellyfin's own built-in web app works fine for browsing right away, but it doesn't include genre sections out of the box the way Moonfin does. Moonfin (covered in its own guide in this Library) is worth installing afterward on TVs and phones for a considerably smoother, more Netflix-like experience connecting to this same server.
Further reading
- Jellyfin official documentation
The complete reference for every setting Jellyfin exposes, well beyond what's covered here.
- Docker Engine install docs
Official per-operating-system install instructions, useful if the one-line script above doesn't fit this particular machine.
- Jellyfin image on Docker Hub
The official container image these steps are based on, including hardware-acceleration tags and version history.