/
/
/
Ansible role that provisions my storage server.
1# Storage
2
3Media automation stack: Jellyfin, Arr suite, download clients, Calibre, Music Assistant, and restic backup server.
4
5## Key Parameters
6
7| Variable | Default | Description |
8|----------|---------|-------------|
9| `storage_jellyfin_enabled` | `true` | Jellyfin media server |
10| `storage_sonarr_enabled` | `true` | Sonarr (TV shows) |
11| `storage_radarr_enabled` | `true` | Radarr (movies) |
12| `storage_prowlarr_enabled` | `true` | Prowlarr (indexer manager) |
13| `storage_lazylibrarian_enabled` | `true` | LazyLibrarian (books) |
14| `storage_lidarr_enabled` | `true` | Lidarr (music) |
15| `storage_jellyseer_enabled` | `true` | Jellyseer (media requests) |
16| `storage_calibre_enabled` | `true` | Calibre server + web interface |
17| `storage_gluetun_enabled` | `true` | VPN gateway for Arr stack |
18| `music_assistant_enabled` | `true` | Music Assistant server (host network) |
19| `storage_restic_backup_server_enabled` | `true` | Restic REST backup server |
20| `gdu_enabled` | `true` | gdu disk usage web UI over the array (read-only, port `8098`) |
21| `gdu_version` | `v5.38.0` | Pinned in `vars/main.yml`; web UI needs >= v5.37 |
22| `jellyfin_hardware_acceleration` | `vaapi` | GPU transcoding: `vaapi`, `nvidia`, `qsv` |
23| `vault_gluetun_*` | (vault) | VPN provider credentials |
24
25## Workflow
26
271. Validate vault credentials are available
282. Create Docker directories and media library structure
293. Deploy Jellyfin with hardware transcoding (if enabled)
304. Deploy Arr stack behind Gluetun VPN (Sonarr, Radarr, Prowlarr, Bazarr, Lidarr)
315. Deploy download clients (qBittorrent, Flaresolverr)
326. Deploy Music Assistant server (if enabled)
337. Deploy Calibre server and web interface (if enabled)
348. Deploy restic REST backup server (if enabled)
359. Deploy gdu disk usage web UI (if enabled) - scans once at start, `docker compose restart` in `/docker/gdu` rescans
36