A Proxmox VE helper script to automate deployment and configuration of a basic containerized media automation stack focusing on automated API wiring, credential extraction, and simplified operator experience for self-hosted media libraries.
- Glutun (VPN Gateway container!!!)
- Prowlarr (indexers)
- Sonarr (TV)
- Radarr (movies)
- Lidarr (music)
- Bazarr (subtitles)
- Seerr (requests)
- Jellyfin (media server)
- qBittorrent (Torrent client)
- SABnzbd (Usenet client)
- Requests Welcome! Open a discussion to make a request or open a PR with your edits
Derived from @michelroegl-brunner's original community script idea.
- Fully interactive setup — Guided prompts for storage, networking, app selection, IP allocation
- Automatic template preparation — Reads the OS each upstream
ct/*.shdeclares and downloads any missing LXC template (the *arr apps are Debian-based, Jellyfin is Ubuntu-based) - Automatic deployment — Downloads and deploys container scripts with generated configuration
- Headless wiring — Connects Prowlarr → arr apps and download clients via HTTP APIs (no manual config)
- Bazarr integration — Wires Bazarr into each selected *arr app automatically
- Credential extraction — Auto-extracts API keys from all *arr apps and handles qBittorrent WebUI password setup
- Optional example indexer — Can seed Prowlarr with a public indexer (1337x), added disabled and behind an explicit warning prompt
- Validation — IPv4 validation, duplicate IP detection, port availability checks, collision detection
- Summary report — Full deployment details with URLs, credentials, and manual next steps (chmod 600)
- Proxmox VE node with root access
- PVE tools:
pct,pvesh,pvesm,pveam - Utilities:
curl,whiptail(ordialog),jq,iputils-ping
To use this version, manually download to your PVE host and run it.
curl -fsSL https://raw.githubusercontent.com/JVKeller/arr-script/main/installarr.sh -o installarr.sh
bash installarr.shPre-configure settings to skip prompts:
var_container_storage=local-lvm \
var_template_storage=local \
var_bridge=vmbr0 \
var_gateway=192.168.1.1 \
var_cidr=24 \
var_vlan=20 \
var_start_ctid=100 \
var_qbt_password=MyStrongPassword \
INSTALL_MODE=advanced \
SUMMARY_FILE=/root/installarr-summary.txt \
sudo bash installarr.sh- Install Mode —
defaultfor a flat untagged network, oradvancedto also set a VLAN tag - Storage & Network Selection — Choose container storage, template storage, network bridge, gateway, CIDR, and (advanced only) the VLAN tag applied to every container
- App Selection — Pick which *arr apps, media server, and download clients to install
- Example Indexer Prompt — Optionally seed Prowlarr with a disabled public indexer
- IP Assignment — Enter IPs for each container (interactive form or list mode)
- CTID Allocation — Set starting container ID (auto-increments for used IDs)
- Confirmation — Review full config before deployment
- Template Preparation — Verifies and downloads any LXC templates the selected apps require
- Installation — Downloads and deploys each container with progress gauge
- Credential Extraction — Waits for startup, extracts API keys
- API Wiring — Connects Prowlarr → Sonarr/Radarr/Lidarr, adds qBittorrent/SABnzbd to *arr apps, wires Bazarr
- Summary — Displays URLs, credentials, and manual next steps
After provisioning:
- Prowlarr — Add indexers. If you accepted the example indexer, 1337x is present but disabled — verify you trust it before enabling via Settings → Indexers → 1337x → Enable
- Sonarr/Radarr/Lidarr — Set root folders and create quality profiles
- Bazarr (if selected) — Open
http://<ip>:6767and configure subtitle providers and languages - Jellyfin (if selected) — Open
http://<ip>:8096, complete the setup wizard, and configure library paths - SABnzbd (if selected) — Open web wizard at
http://<ip>:7777and complete setup - Seerr (if selected) — Open web wizard at
http://<ip>:5055, then add Sonarr/Radarr instances
The optional example indexer is a public indexer. Public indexers can surface malicious or mislabeled content. It is deliberately added in a disabled state and is never enabled automatically. Verify it is a legitimate indexer you trust before enabling it.
This script is one-time provisioning only — it is not designed to be re-run or auto-update.
However, each container can be updated independently via its own ProxmoxVE helper script:
Open the terminal on the container you want to update and simply type update
Each *arr container script is separately maintained by the community-scripts project and can be updated without affecting others.
installarr.sh— Main provisioning script (one-time use)/root/installarr-summary.txt— Generated summary (created after successful run)/tmp/installarr-<pid>.log— Verbose log of suppressed command output
Check /tmp/installarr-<pid>.log for detailed error logs. Script will display the last 20 lines on exit.
The script checks the node's template catalog with pveam and downloads what the selected apps need. If a template is unavailable, confirm the node can reach the catalog and that the chosen template storage accepts vztmpl content.
Ensure containers are fully started and listening on their ports. Check container logs:
pct logs <ctid>If the script detects a failure, the default adminadmin password remains active. Set manually via web UI.
Derived from community-scripts (MIT License).
When requesting help, include the log file from your pve server /tmp/installarr-<pid>.log for debugging output from failed deployments.