From 1d043702ef136e8f2e516c5304a57be5718f1f6f Mon Sep 17 00:00:00 2001 From: Tyler Hoang Date: Thu, 9 Jul 2026 21:49:56 -0700 Subject: Initial commit: docker compose files for all self-hosted services 12 services: adguard, ampache, azuracast, flood, glance, glances, grafana, immich, invidious, jellyfin, openwebui, watchtower Each service includes a docker-compose.yml, README.md with setup instructions, and .env.example where applicable. --- jellyfin/README.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 jellyfin/README.md (limited to 'jellyfin/README.md') diff --git a/jellyfin/README.md b/jellyfin/README.md new file mode 100644 index 0000000..7f64c6d --- /dev/null +++ b/jellyfin/README.md @@ -0,0 +1,59 @@ +# Jellyfin + *arr Stack + +Media server stack consisting of: +- **Jellyfin** — Media server (movies, TV, music, books) +- **Sonarr** — TV show management +- **Radarr** — Movie management +- **Prowlarr** — Indexer management +- **FlareSolverr** — Cloudflare bypass for indexers +- **Unpackerr** — Auto-extract downloaded archives +- **Recyclarr** — Automatic TRaSH-Guide sync for Sonarr/Radarr quality profiles + +## Setup + +### 1. Create the media user + +Run the setup script to create a dedicated `media` user (UID 1001) and set correct permissions: +``` +bash setup-media-user.sh +``` + +This script: +- Creates a `media` user/group with UID/GID 1001 +- Fixes ownership on config directories +- Sets group permissions on `/srv/` media directories + +### 2. Configure environment + +Copy `.env.example` to `.env` and set your API keys: +``` +cp .env.example .env +``` + +Get your API keys from Sonarr (Settings > General) and Radarr (Settings > General). + +### 3. Start + +``` +docker compose up -d +``` + +## Access + +| Service | URL | +|-------------|--------------------------| +| Jellyfin | `http://:5000` | +| Sonarr | `http://:8989` | +| Radarr | `http://:7878` | +| Prowlarr | `http://:9696` | +| FlareSolverr | `http://:8191` | + +## What to Configure + +- **User/group IDs** — All services run as UID 1001/GID 1001. Change `user:`, `PUID`, and `PGID` throughout if your media user differs. +- **Time zone** — Replace `TZ=America/Los_Angeles` throughout with your timezone. +- **Media volumes** — All services mount `/srv:/data`. Your media root should be `/srv/` with subdirectories like `vids/`, `mus/`, etc. Adjust the host path if your storage layout differs. +- **Fonts** — Jellyfin mounts `/usr/local/share/fonts/` for custom fonts. Remove if not needed. +- **Hardware transcoding** — Jellyfin has `/dev/dri` passed through for VAAPI. Remove or adjust for your GPU setup. +- **API keys** — Set `SONARR_API_KEY` and `RADARR_API_KEY` in `.env` for Unpackerr. You also need to configure these keys inside Unpackerr's web UI on first run. +- **Recyclarr** — Configure `recyclarr-config/recyclarr.yml` to sync TRaSH-Guide profiles. Runs daily at 4 AM. -- cgit v1.3-2-g0d8e