2.5 KiB
ARR Stack Bootstrap Notes
This stack is intentionally separate from jeannie, OpenTofu, Argo CD, and the
Kubernetes app pipeline.
Storage Layout
All persistent data lives under /data/arr by default:
/data/arr/config/<app>for app databases and settings/data/arr/downloads/complete/data/arr/downloads/incomplete/data/arr/downloads/torrents/data/arr/media/movies/data/arr/media/tv/data/arr/media/comics/data/arr/media/manga
Use the same in-container paths when wiring apps:
- Radarr root folder:
/data/media/movies - Sonarr root folder:
/data/media/tv - qBittorrent completed downloads:
/data/downloads/complete - qBittorrent incomplete downloads:
/data/downloads/incomplete
Initial Run
cd infra/arr-stack
cp .env.example .env
./bootstrap.sh
After first boot, each app writes its own API key into its config. Retrieve the keys from:
grep -h '<ApiKey>' /data/arr/config/radarr/config.xml /data/arr/config/sonarr/config.xml /data/arr/config/prowlarr/config.xml
Then copy the keys into .env.
Run the optional safe baseline configurator:
./configure-arr.py
It configures Radarr and Sonarr root folders and adds qBittorrent as a download client by using the apps' own schemas. It does not configure indexers.
Public Lists
Radarr and Sonarr can use import lists, but most useful providers require user authorization or provider API keys. Do not hard-code third-party credentials or piracy-oriented sources in this repo.
Safe examples to configure from the UI:
- Radarr: TMDb popular, trending, or collection lists with your TMDb API access
- Radarr/Sonarr: your own Trakt public lists after authorizing Trakt
- Sonarr: your own Trakt watched/collection/list sources after authorizing Trakt
Recommended settings for any import list:
- Set a tag such as
public-listorwatchlist. - Disable automatic search until quality profiles and root folders are correct.
- Use
/data/media/moviesfor Radarr and/data/media/tvfor Sonarr. - Keep monitoring conservative until you confirm disk usage and download rules.
Prowlarr indexers and download-client credentials should be configured in the UI or from a local, uncommitted automation file. Keep that material out of Git.
If you want to automate import lists, export RADARR_IMPORT_LISTS_JSON or
SONARR_IMPORT_LISTS_JSON to a local JSON file that contains the exact payloads
for your authorized providers. examples/import-lists.example.json is only a
shape placeholder; do not use it as-is.