-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
Inspectarr runs three ways: a web UI with a built-in scheduler daemon (the recommended setup), a systemd service, or a one-shot CLI for manual runs and testing. It's distributed as source and as a prebuilt Docker image.
- Python 3.12+ (only if running from source rather than Docker)
- qBittorrent with the Web UI enabled (v4.x or v5.x both supported)
- One or more of: Sonarr v4, Radarr v3, Lidarr v2
- Prowlarr (optional — required only for indexer scoring and grab attribution)
Pull the prebuilt image from GHCR:
docker pull ghcr.io/o51r15/inspectarr:latestA minimal compose file:
services:
inspectarr:
container_name: inspectarr
image: ghcr.io/o51r15/inspectarr:latest
user: "1000:1000"
restart: unless-stopped
ports:
- "8585:8585"
volumes:
- /path/to/config:/app/config.yaml # your config file
- /path/to/data:/app/data # SQLite + JSON log (persistent)
environment:
- TZ=America/New_YorkSet user to your host UID:GID (run id -u and id -g) so the container can write to mounted volumes. The repo's compose file uses PUID/PGID env vars defaulting to 1000.
Image tags:
| Tag | What it is |
|---|---|
:latest |
The current release. Recommended. |
:v2.0.0 |
A specific release, pinned. |
:dev |
Built on every push to main. Tracks development; expect rough edges. |
Pin to a version tag if you want upgrades to be a deliberate act rather than a docker compose pull.
Start it:
docker compose up -dThe web UI is available at http://your-server:8585. On first launch the scheduler is stopped — configure your connections and rules, confirm they're correct, then start the scheduler from the dashboard.
git clone https://github.com/o51r15/inspectarr.git
cd inspectarr
pip install -r requirements.txt
cp config.example.yaml config.yaml
# edit config.yaml with your URLs, credentials, and rules
python3 web.pyDependencies are deliberately minimal: requests, pyyaml, and flask. No ORM, no async — SQLite is used through the standard library.
An inspectarr.service unit is included in the repo. Copy it, then enable it:
sudo cp inspectarr.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable inspectarr
sudo systemctl start inspectarrCheck status and follow logs:
sudo systemctl status inspectarr
sudo journalctl -u inspectarr -fDocker:
docker compose pull && docker compose up -dBare Python / systemd:
cd /path/to/inspectarr
git pull
sudo systemctl restart inspectarrYour data (the data/ directory and config.yaml) is preserved across updates.
Everything Inspectarr needs to remember lives in the data/ directory — mount it as a volume so it survives container recreation.
| File | Contents |
|---|---|
inspectarr.db |
SQLite: processed hashes, retry queue, run history, indexer stats, grab attribution, inspection records, quarantine holds, model validation results |
inspectarr.log.json |
JSON Lines — one event object per line |
If your Sonarr, Radarr, or Prowlarr instances are served under a base path (for example http://host:7878/radarr rather than http://host:7878), you must include that base path in the URL you configure. The connection test may pass without it because the root API responds, but history lookups — which grab attribution depends on — will silently return nothing. See Troubleshooting.