Skip to content

Installation

o51r15 edited this page Jun 20, 2026 · 6 revisions

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.


Requirements

  • 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)

Docker

Pull the prebuilt image from GHCR:

docker pull ghcr.io/o51r15/inspectarr:latest

A minimal compose file:

services:
  inspectarr:
    container_name: inspectarr
    image: ghcr.io/o51r15/inspectarr:latest
    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_York

Start it:

docker compose up -d

The 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.


Bare Python

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.py

Dependencies are deliberately minimal: requests, pyyaml, and flask. No ORM, no async — SQLite is used through the standard library.


Systemd (auto-start on boot)

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 inspectarr

Check status and follow logs:

sudo systemctl status inspectarr
sudo journalctl -u inspectarr -f

Updating

Docker:

docker compose pull && docker compose up -d

Bare Python / systemd:

cd /path/to/inspectarr
git pull
sudo systemctl restart inspectarr

Your data (the data/ directory and config.yaml) is preserved across updates.


Persistent data

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
inspectarr.log.json JSON Lines — one event object per line

A note on *arr base paths

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.

Clone this wiki locally