# 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.