Blame
|
1 | # *Arr Stack Setup Overview |
||||||
| 2 | ||||||||
| 3 | ## Overview |
|||||||
| 4 | ||||||||
| 5 | The stack consists of: |
|||||||
| 6 | ||||||||
| 7 | - [Radarr](https://radarr.video) — movies |
|||||||
| 8 | - [Sonarr](https://sonarr.tv) — TV series |
|||||||
| 9 | - [Prowlarr](https://prowlarr.com) — indexers |
|||||||
| 10 | - [qBittorrent](https://www.qbittorrent.org) — downloads |
|||||||
| 11 | - [Jellyseerr](https://docs.seerr.dev) — request UI! |
|||||||
| 12 | ||||||||
| 13 |  |
|||||||
| 14 | ||||||||
| 15 | ||||||||
| 16 | ## Core Principles |
|||||||
| 17 | Single data root in container: `/data` |
|||||||
| 18 | Config isolation in container: `/config` |
|||||||
| 19 | UID/GID consistency: `1000:1000` |
|||||||
| 20 | No `user:` overrides in containers |
|||||||
| 21 | ||||||||
| 22 | ## Configuration Management |
|||||||
| 23 | ||||||||
| 24 | Each service maintains isolated configuration directories: |
|||||||
| 25 | ||||||||
| 26 | ``` |
|||||||
| 27 | /opt/docker/media/config/ |
|||||||
| 28 | ├── radarr/ |
|||||||
| 29 | ├── sonarr/ |
|||||||
| 30 | ├── prowlarr/ |
|||||||
| 31 | ├── qbittorrent/ |
|||||||
| 32 | └── jellyseerr/ |
|||||||
| 33 | ``` |
|||||||
| 34 | ||||||||
| 35 | The docker-compose.yml file and all persistent configurations are co-located in this structure for maintainability and portability. |
|||||||
| 36 | ||||||||
| 37 | ## Network Exposure Policy |
|||||||
| 38 | ||||||||
| 39 | Only one service is intended for external access: |
|||||||
| 40 | ||||||||
| 41 | [Jellyseerr](seerr.lucjans26.com) (user-facing interface) |
|||||||
| 42 | ||||||||
| 43 | All other services are restricted to internal network access only: |
|||||||
| 44 | ||||||||
| 45 | - Radarr (administration only) |
|||||||
| 46 | - Sonarr (administration only) |
|||||||
| 47 | - Prowlarr (administration only) |
|||||||
| 48 | - qBittorrent (administration only) |
|||||||
| 49 | ||||||||
| 50 | This reduces attack surface and prevents unintended external exposure of management tools. |
|||||||
| 51 | ||||||||
| 52 | --- |
|||||||
| 53 | ## Key Setup Commands |
|||||||
| 54 | Start stack |
|||||||
| 55 | ``` |
|||||||
| 56 | docker compose up -d |
|||||||
| 57 | ``` |
|||||||
| 58 | Stop stack |
|||||||
| 59 | ``` |
|||||||
| 60 | docker compose down |
|||||||
| 61 | ``` |
|||||||
| 62 | Restart a service |
|||||||
| 63 | ``` |
|||||||
| 64 | docker restart radarr |
|||||||
| 65 | ``` |
|||||||
| 66 | View logs |
|||||||
| 67 | ``` |
|||||||
| 68 | docker compose logs -f sonarr |
|||||||
| 69 | ``` |
|||||||
| 70 | --- |
|||||||
| 71 | ## Permission Management |
|||||||
| 72 | ||||||||
| 73 | To ensure container access consistency across all services: |
|||||||
| 74 | ||||||||
| 75 | ### Fix configuration ownership |
|||||||
| 76 | ``` |
|||||||
| 77 | sudo chown -R 1000:1000 /opt/docker/media/config |
|||||||
| 78 | ``` |
|||||||
| 79 | ||||||||
| 80 | ### Fix media library ownership |
|||||||
| 81 | ``` |
|||||||
| 82 | sudo chown -R 1000:1000 /mnt/BonusDisk/JellyfinMedia/Streaming |
|||||||
| 83 | ``` |
|||||||
| 84 | ||||||||
| 85 | These commands ensure all containers can properly read and write to both configuration and media directories. |
|||||||
| 86 | ||||||||
| 87 | ## Container Inspection & Debugging |
|||||||
| 88 | ### Inspect container configuration |
|||||||
| 89 | ``` |
|||||||
| 90 | docker inspect radarr |
|||||||
| 91 | ``` |
|||||||
| 92 | ||||||||
| 93 | This is used to verify: |
|||||||
| 94 | ||||||||
| 95 | - volume mappings |
|||||||
| 96 | - environment variables |
|||||||
| 97 | - network configuration |
|||||||
| 98 | - runtime state |
|||||||
| 99 | ||||||||
| 100 | ## Summary |
|||||||
| 101 | ||||||||
| 102 | This stack is designed for: |
|||||||
| 103 | ||||||||
| 104 | - full automation of media acquisition |
|||||||
| 105 | - strict separation between configuration and media |
|||||||
| 106 | - consistent permission handling via UID/GID alignment |
|||||||
| 107 | - minimal external exposure for security |
|||||||
| 108 | - predictable and reproducible container behavior |
|||||||
| 109 | ||||||||
| 110 | Once correctly configured, the system operates without manual intervention, automatically managing download, import, and organization workflows across both movies and TV series. |
|||||||
