selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
Episeerr logo

Self-host Episeerr

v4.0.5

Smart episode manager for Sonarr with automated cleanup

ReleaseOpen SourceAGPL-3.0
Updated2 days ago
LanguagePython
Setup difficultyModerate
Stars
146
Port
5002 (Web UI and API)
Requires
Sonarr, TMDB
Docker
vansmak/episeerr
Install with Docker Compose

What is Episeerr?

Episeerr is a self-hosted TV episode management tool that works with Sonarr to automate downloading and cleanup. It provides four independent features: Episode Selection for picking specific episodes across seasons, Viewing Automation that prepares the next episode when you watch, Storage Management with grace periods and dormant cleanup, and Plex Watchlist Sync that adds shows from your Plex watchlist. It integrates with Plex (native webhooks or Tautulli), Jellyfin, Emby for viewing automation, and Jellyseerr/Overseerr for request handling. Configuration is done via a web UI at /setup or environment variables. An optional Android companion app (EpiseerrApp) exists for mobile management. The project is licensed under AGPL-3.0 and runs as a Docker container on port 5002.

Should you self-host Episeerr?

Episeerr scores 47/100 on selfhost.directory (how scoring works) and ranks #71 of 118 in Media Server. It has 146 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v4.0.5, came out on 25 October 2026. New versions land roughly every 1 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Jellyfin (88/100, 58 801 stars). It scores higher overall, so compare the two before you pick. See Episeerr vs Jellyfin side by side.

Features

  • Always Have
  • Dashboard integrationsBeta feature
  • Dry Run Mode
  • Episode Selection
  • GUI Setup Page
  • Movie Cleanup
  • Multi-user support
  • Rule-based Management
  • Season-level Grace Periods
  • Sequential Activation
  • Storage Management
  • Storage Threshold Cleanup
  • Viewing Automation
  • Webhook Integration

Episeerr README

Episeerr

Smart episode management for Sonarr - Get episodes as you watch, clean up automatically when storage gets low. This project started as scratching my own itch - I wanted more granular series management and couldn't find exactly what I wanted. I'm not a programmer by trade, but I had a clear vision for the solution I needed. I used AI as a development tool to help implement my ideas faster, just like any other tool. The creativity, problem-solving, architecture decisions, and feature design are all mine - AI helped with code, syntax and implementation details. Although I run everything in my own production environment first, it is catered to my environment and is use at your own risk. All code is open source for anyone to review and audit. The tool has been useful for me, and I shared it in case others can benefit from it too - but I absolutely understand if some prefer to stick with established solutions.

How to install Episeerr

Install Episeerr with Docker Compose

Docker and Docker Compose
Environment variables
SONARR_URL, SONARR_API_KEY, TMDB_API_KEY, PLEX_URL, PLEX_TOKEN, TAUTULLI_URL, TAUTULLI_API_KEY, JELLYFIN_URL, JELLYFIN_API_KEY, JELLYFIN_USER_ID, EMBY_URL, EMBY_API_KEY, EMBY_USER_ID, JELLYSEERR_URL, JELLYSEERR_API_KEY, OVERSEERR_URL, OVERSEERR_API_KEY, REQUIRE_AUTH, AUTH_USERNAME, AUTH_PASSWORD, SECRET_KEY, AUTH_BYPASS_LOCALHOST, AUTH_SESSION_TIMEOUT, CUSTOMAPP_URL, CUSTOMAPP_NAME, CUSTOMAPP_ICON

services: episeerr: image: vansmak/episeerr:latest container_name: episeerr environment: - SONARR_URL=http://your-sonarr:8989 - SONARR_API_KEY=your_sonarr_api_key - TMDB_API_KEY=your_tmdb_read_access_token volumes: - ./config:/app/config - ./logs:/app/logs - ./data:/app/data - ./temp:/app/temp ports: - "5002:5002" restart: unless-stopped

Recommended installation method. Configure via /setup page after starting.

How to configure Episeerr

  • SONARR_URLSonarr base URL (e.g., http://sonarr:8989)
  • SONARR_API_KEYSonarr API key from Settings → General
  • TMDB_API_KEYTMDB Read Access Token (not API key v3)
  • PLEX_URLPlex server URL (e.g., http://plex:32400)
  • PLEX_TOKENPlex authentication token

Episeerr releases & version history

FAQ

Can I change which rule a series uses?

Yes. Either change tag in Sonarr (tag drift detection will update Episeerr) or manually reassign in Series Management.

How do I use tags for specific rules?

Tag format is episeerr_[rule_name]. If you have a rule named binge_watcher, use tag episeerr_binge_watcher.

Why did my tag disappear?

Tags are temporary signals. After processing, the tag is removed. Check Series Management to verify assignment succeeded.

Will this download my entire library?

No. Only series assigned to rules are managed. Use episode selection or auto-assign to control what gets managed.

What's the difference between tags and auto-assign?

Tags (episeerr_[rule_name]) provide immediate processing with specific rules. Auto-assign is passive assignment that waits for first watch.

Can I use both Tautulli and Jellyfin?

No need — choose one based on your media server (Plex = Tautulli, Jellyfin = Jellyfin webhook).

Will Always Have re-download episodes I deleted manually?

Not automatically. Always Have runs on rule assignment and protects during cleanup. It doesn't continuously scan for missing episodes.

Does Always Have apply when I move a show to a different rule?

Yes. Whether it's a new show or a reassignment, the Always Have expression runs and ensures those episodes are monitored.

What does Always Have do?

It's an expression on a rule that defines episodes to always keep. When a show enters the rule, those episodes get downloaded immediately. Grace and Keep cleanup won't delete them. Only Dormant overrides it.

Do I need all the webhooks?

No. Only set up webhooks for features you want: Episode Selection only needs Sonarr webhook; Viewing Automation needs Sonarr + Tautulli/Jellyfin; Full automation needs all webhooks.

Can I change the sync interval?

Yes — Setup page → Plex section → Sync Interval. Options range from 30 minutes to 24 hours.

TV shows from my watchlist aren't downloading automatically — is that right?

Yes, by design. TV shows get the episeerr_select tag and land in Pending Requests so you can choose a rule or pick specific episodes first. Movies go straight to Radarr.

Why does my username not work in get_plex_token.py?

Use your Plex username, not your email address. Check your username at plex.tv/account.

Where do I get my Plex token?

Run python get_plex_token.py from the repo, or manually: sign in to plex.tv, open any media item, click ··· → Get Info, find X-Plex-Token in the URL.

Do I need Tautulli for Plex watchlist sync?

No. Watchlist sync uses the Plex.tv API directly with your Plex token — Tautulli is only needed for viewing automation.

More in Media Server

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…