Skip to content

diybits/seekarr

Repository files navigation

Seekarr - Find Missing & Upgrade Media Items

Seekarr Logo


Note: Seekarr is a rebranded and actively maintained fork of Huntarr. It includes all original functionality plus security improvements, reverse proxy support, session persistence, and ongoing updates. If you are upgrading from Huntarr, see the migration notes in CHANGELOG.md.


Want to Help? Click the Star in the Upper-Right Corner! ⭐

Application Status
Sonarr ✅ Ready
Radarr ✅ Ready
Lidarr ✅ Ready
Readarr ✅ Ready
Whisparr v2 ✅ Ready
Whisparr v3 (Eros) ✅ Ready
Bazarr ❌ Not Ready

Note for curated collections: Seekarr only processes items that are marked as monitored in your *Arr application. If you have hand-selected media you don't want auto-searched or upgraded, unmonitor those items in Sonarr/Radarr/etc. before enabling Seekarr — this is the standard way to exclude specific content from any automated activity.

Table of Contents

Overview

This application continually searches your media libraries for missing content and items that need quality upgrades. It automatically triggers searches for both missing items and those below your quality cutoff. It's designed to run continuously while being gentle on your indexers, helping you gradually complete your media collection with the best available quality.

For detailed documentation, please visit the Seekarr Docs.

How It Works

🔄 Continuous Automation Cycle

1️⃣ Connect & Analyze

🔌 Seekarr connects to your Sonarr/Radarr/Lidarr/Readarr/Whisparr v2/Whisparr v3 instances and analyzes your media libraries to identify both missing content and potential quality upgrades.

2️⃣ Hunt Missing Content

  • 🔍 Efficient Refreshing: Skip metadata refresh to reduce disk I/O and database load
  • 🔮 Future-Aware: Automatically skip content with future release dates
  • 🎯 Precise Control: Configure exactly how many items to process per cycle
  • 👀 Monitored Only: Focus only on content you've marked as monitored

3️⃣ Hunt Quality Upgrades

  • ⬆️ Quality Improvement: Find content below your quality cutoff settings
  • 📦 Batch Processing: Set specific numbers of upgrades to process per cycle
  • 🚦 Queue Management: Automatically pauses when download queue exceeds your threshold
  • ⏱️ Command Monitoring: Waits for commands to complete with consistent timeouts

4️⃣ API Management

  • 🛡️ Rate Protection: Hourly caps prevent overloading your indexers
  • ⏲️ Universal Timeouts: Consistent API timeouts (120s) across all applications
  • 🔄 Consistent Headers: Identifies as Seekarr to all Arr applications
  • 📊 Intelligent Monitoring: Visual indicators show API usage limits

5️⃣ Repeat & Rest

💤 Seekarr waits for your configured interval (adjustable in settings) before starting the next cycle, ensuring your indexers aren't overloaded while maintaining continuous improvement of your library.

Web Interface

Seekarr's live homepage provides statistics on how many missing items and quality upgrades have been processed.

Homepage
Homepage

Seekarr includes a real-time log viewer and settings management web interface that allows you to monitor and configure its operation directly from your browser.

Logger UI
Logger UI

How to Access

The web interface is available on port 9705. Simply navigate to:

http://YOUR_SERVER_IP:9705

The URL will be displayed in the logs when Seekarr starts, using the same hostname you configured for your API_URL.

Web UI Settings

The web interface allows you to configure all of Seekarr's settings:

Settings UI
Settings UI

Volume Mapping

To ensure data persistence, make sure you map the /config directory to a persistent volume on your host system:

-v /your-path/appdata/seekarr:/config

Installation Methods

Docker Run

The simplest way to run Seekarr is via Docker (all configuration is done via the web UI):

Platforms: The image is published as a multi-arch manifest supporting linux/amd64 and linux/arm64 (Raspberry Pi 4/5, Apple Silicon via Docker Desktop, etc.). Docker pulls the correct variant automatically.

docker run -d --name seekarr \
  --restart always \
  -p 9705:9705 \
  -v /your-path/seekarr:/config \
  -e TZ=America/New_York \
  ghcr.io/diybits/seekarr:latest

To check on the status of the program, you can use the web interface at http://YOUR_SERVER_IP:9705 or check the logs with:

docker logs seekarr

Docker Compose

For those who prefer Docker Compose, add this to your docker-compose.yml file:

services:
  seekarr:
    image: ghcr.io/diybits/seekarr:latest
    container_name: seekarr
    restart: always
    ports:
      - "9705:9705"
    volumes:
      - /your-path/seekarr:/config
    environment:
      - TZ=America/New_York

Then run:

docker-compose up -d seekarr

Unraid Users

Run from the Unraid terminal:

docker run -d --name seekarr \
  --restart always \
  -p 9705:9705 \
  -v /mnt/user/appdata/seekarr:/config \
  -e TZ=America/New_York \
  ghcr.io/diybits/seekarr:latest

Tips

  • First-Time Setup: Navigate to the web interface after installation to create your admin account with 2FA option
  • API Connections: Configure connections to your *Arr applications through the dedicated settings pages
  • Search Frequency: Adjust Sleep Duration (default: 900 seconds) based on your indexer's rate limits
  • Batch Processing: Set Hunt Missing and Upgrade values to control how many items are processed per cycle
  • Queue Management: Use Minimum Download Queue Size to pause searching when downloads are backed up
  • Skip Processing: Enable Skip Series/Movie/Artist Refresh to significantly reduce disk I/O and database load
  • Future Content: Keep Skip Future Items enabled to avoid searching for unreleased content
  • Authentication: Enable two-factor authentication for additional security on your Seekarr instance
  • API Rate Limits: Configure hourly API caps to prevent rate limiting by your indexers
  • Universal Timeouts: All apps use consistent 120s timeouts for reliable command completion
  • Monitored Only: Filter searches to focus only on content you've marked as monitored

Troubleshooting

For common problems and step-by-step solutions — connection test failures, SSL errors, no items found, Whisparr v2 vs Eros, log location, and more — see the Troubleshooting Guide.

Security

  • Session Secret Key: Seekarr automatically generates a unique, cryptographically random session key on first start and stores it at /config/secret_key (readable only by the process owner). No action is required. If you prefer to supply your own key, set the SECRET_KEY environment variable — it takes precedence over the auto-generated file.
  • Two-Factor Authentication: Enable TOTP-based 2FA in the user profile settings for an additional layer of protection.
  • Authentication Modes: Three modes are available — standard login, local-network bypass, and no-login mode. Local-network bypass and no-login mode are intended for trusted private networks only.
  • Local Network Bypass: When local-network bypass mode is enabled, authentication is skipped only for requests whose TCP source address (remote_addr) falls within a private IP range. Proxy headers such as X-Forwarded-For are intentionally ignored for this check and cannot be used to spoof a local address. This mode requires Seekarr to be directly reachable on your local network — do not use it when Seekarr sits behind a reverse proxy; use No Login Mode instead.
  • Reverse Proxy: When running behind Nginx, Traefik, Caddy, or any other reverse proxy, set the TRUSTED_PROXIES environment variable. Use * to trust any upstream (simple LAN setups), or supply a comma-separated list of specific proxy IPs and/or CIDR ranges (e.g. 10.0.1.5,192.168.1.0/24) for load-balanced or multi-proxy deployments. When set, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host, and X-Forwarded-Prefix headers are trusted only from matching upstream IPs, real client IPs are correctly visible to the local-bypass check, and the session cookie receives the Secure flag. Forwarded headers from untrusted connections are stripped to prevent spoofing. Do not set TRUSTED_PROXIES on deployments that are directly internet-facing.
  • Stats Reset: The /api/stats/reset endpoint requires an authenticated session. The former unauthenticated /api/stats/reset_public endpoint has been removed — if you were calling it directly, switch to /api/stats/reset with a valid session cookie.
  • Password Storage: Passwords are hashed with bcrypt, a purpose-built algorithm with a tunable cost factor that makes brute-force attacks computationally expensive. Existing accounts are migrated to bcrypt automatically on next login — no action required.

Change Log

See CHANGELOG.md for a detailed history of security fixes and breaking changes.

For full release notes visit: https://github.com/diybits/seekarr/releases/

About

Automated missing media hunter and quality upgrade tool for Sonarr, Radarr, Lidarr, Readarr, and Whisparr

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors