auditorr

auditorr

Docker app from thrill-burn's Repository

Overview

An audit tool for hardlinked media libraries using qBittorrent / qui + Sonarr / Radarr.

A dashboard with health score, per-tracker analytics, and cross-seed effectiveness tells you what's wrong with your library. Five automated workflows fix it.

  • Health score (0-100) showing how clean and efficient your library is
  • Five workflows: Backfill (re-seed orphaned media via Sonarr/Radarr search), Cleanup (reviewed delete script for orphaned torrent files), Triage (explains every problem torrent — dead seeds, unregistered, superseded, pending imports — with rescan/exclude/delete actions), Dedupe (replace duplicate copies with verified hardlinks), Trumped (paste a tracker trump PM to swap the whole cross-seed group for its replacement)
  • Upload analytics and library yield: daily upload volume per tracker, yield % over time, multi-tracker comparison charts
  • Cross-seeding insights: weighted average seed multiplier, segmented disk bar, per-tracker breakdown
  • Powerful file explorer with tree and flat views, filterable by status, tracker, seed count, size, filename
  • File-level change log between every audit, kept indefinitely
  • Sonarr/Radarr integration and a guided first-run setup wizard

Follows the TRaSH Guides folder structure. Read-only and non-destructive by default — all delete actions are opt-in, reviewed, and confirmed.

auditorr

An audit tool for hardlinked media libraries using qBittorrent / qui + Sonarr / Radarr. A dashboard with health score, per-tracker analytics, and cross-seed effectiveness tells you what's wrong with your library. Five automated workflows fix it.

auditorr dashboard


What's new in 1.7.0

  • A rebuilt UI - a top-to-bottom design pass with consistent buttons and spacing, and a calmer library-health dial.
  • Four new workflows - Backfill is now joined by Cleanup, Triage, Dedupe, and Trumped, so every dashboard problem has a fix.
  • Leaner on big libraries - backend memory optimizations, tested on libraries up to 500 TB in size.

Media explorer

Media explorer
Tree or flat view of your library. Click a file to see every hardlink sibling and which tracker is seeding it.

Torrents

Torrents
Every file qBittorrent / qui is seeding, with tracker, status, and reverse hardlink lookup.

Trackers

Trackers
Configurable chart of per-tracker analytics. Deep-link into the explorer pre-filtered by tracker.

Change log

Change log
File-level diff between every consecutive audit, kept indefinitely.


Workflows

The dashboard tells you what's wrong; workflows fix it.

Backfill

Targets orphaned media: files on disk with no hardlink to a seeding torrent and no way to grow one (trumped, dead tracker, your own rip). Search the same title on the tracker you want, grab a version that actually seeds, and swap it in via Sonarr / Radarr.

Backfill workflow

Cleanup

Targets orphaned torrent files: files in your torrent folder the client has no torrent for. Review them grouped by release folder, then generate a reviewed delete script — or exclude the ones you put there on purpose.

Cleanup workflow

Triage

Explains every problem torrent and what to do about it: dead seeds, dead registrations, unregistered, superseded quality, pending imports, and not in library. Trigger a Sonarr/Radarr rescan, exclude, or delete torrents and their files directly through qBittorrent / qui.

Triage workflow

Dedupe

Targets duplicate files: review duplicate groups and generate a script that replaces copies with hardlinks, verified with cmp before linking.

Dedupe workflow

Trumped

Automates the private-tracker trump swap. Paste the tracker's "this release has been trumped" PM; auditorr parses the old and new release names, finds the entire hardlink group (every cross-seed of the old content), removes it from the client with its files, and grabs the exact replacement through Sonarr/Radarr — wizard-style, confirmed at every step.

Trumped workflow


Install

Unraid

auditorr is on Unraid Community Apps — search for auditorr in the Apps tab and install in one click.

  • WebUI: http://[IP]:[PORT:8677]/
  • Appdata: /mnt/user/appdata/auditorr/data/app/data
  • Data: /mnt/user/data/data (read-only)

Docker Compose

services:
  auditorr:
    image: ghcr.io/thrill-burn/auditorr:latest
    container_name: auditorr
    restart: unless-stopped
    ports:
      - "8677:8677"
    volumes:
      - ./data:/app/data
      - /path/to/media:/data/media:ro
      - /path/to/torrents:/data/torrents:ro
Build from source
git clone https://github.com/thrill-burn/auditorr.git
cd auditorr
docker build -t auditorr .
docker run -d \
  --name auditorr \
  -p 8677:8677 \
  -v /path/to/appdata:/app/data \
  -v /path/to/media:/data/media:ro \
  -v /path/to/torrents:/data/torrents:ro \
  auditorr

[!IMPORTANT] The Hardlinked Media score assumes you use hardlinks between your torrent folder and your media library — the TRaSH Guides folder structure. Without hardlinks, this score is 0 regardless of how healthy the rest of your library is.


License

MIT — see LICENSE.

Install Auditorr on Unraid in a few clicks.

Find Auditorr in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Auditorr Review the template variables and paths Click Install

Related apps

Details

Repository
ghcr.io/thrill-burn/auditorr:latest
Last Updated2026-07-17
First Seen2026-05-13

Runtime arguments

Web UI
http://[IP]:[PORT:8677]/
Network
bridge
Shell
sh
Privileged
false

Template configuration

WebUIPorttcp

Container Port: 8677 — auditorr web interface

Target
8677
Default
8677
Value
8677
App DataPathrw

Container Path: /app/data — config, audit history, SQLite database. Persistent app state lives here.

Target
/app/data
Default
/mnt/user/appdata/auditorr/data
Value
/mnt/user/appdata/auditorr/data
DataPathro

Container Path: /data — your unified TRaSH-style media + torrents share (the parent of /data/media and /data/torrents). auditorr mounts this read-only by design.

Target
/data
Default
/mnt/user/data
Value
/mnt/user/data
AUDITORR_PORTVariable

Container Variable: AUDITORR_PORT — port the app listens on inside the container. Must match the WebUI Container Port above.

Default
8677
Value
8677
AUDITORR_SECRETVariable

Container Variable: AUDITORR_SECRET — optional secret to require an X-Auditorr-Secret header on API calls. Leave blank to disable auth.