Skip to content

Lightweight web UI for Sonarr/Radarr subscribing, calendar, and flexible notifications via Email, ntfy, and Apprise.ptions with Jellyfin lo

License

Notifications You must be signed in to change notification settings

jschaufuss/subscribarr

Repository files navigation

Warning

This project was largely written with GitHub Copilot. I apologize to all developers out there for using GitHub Copilot. I’m looking for a competent maintainer. If multiple users rely on it and no maintainer steps up, I’ll level up my Django skills and take it over myself.

Subscribarr

License MIT Python 3.13 Django 5 docker pulls ntfy supported Apprise supported

Lightweight web UI for Sonarr/Radarr subscriptions with Jellyfin login, calendar, and flexible notifications via Email, ntfy, and Apprise.

Features

  • Sign in with Jellyfin
  • Sonarr/Radarr‑style calendar (upcoming episodes/movies)
  • Subscribe/unsubscribe from the UI (series & movies)
  • Admin overview of all users subscriptions
  • Per‑user notification channels:
    • Email (SMTP)
    • ntfy (Bearer token or Basic Auth)
    • Apprise (Discord, Gotify, Pushover, Webhooks, and many more)
  • Docker‑ready
  • Multiple Sonarr/Radarr instances
  • Early‑availability notifications (configurable lookahead)
  • Duplicate suppression per user/item/day and admin tooling (send test, reset tokens)
  • 4K subscriptions: detection across all Radarr instances
  • YouTube subscriptions

Screenshots

Release Overview 4K Movies Section YouTube Section
Release Overview 4K Movies YouTube Subscriptions
Main release overview page 4K movie management YouTube subscription management
Calendar Month View Calendar Week View Calendar List View
Calendar Month Calendar Week Calendar List
Monthly calendar view Weekly calendar view List view of releases
Administration Panel Additional Admin Features Profile Settings
Administration Admin Features Profile Settings
Main administration panel Additional admin tools User profile settings
User Profile User Subscription Management User Subscription Details
User Profile User Subscriptions Subscription Details
User profile configuration Managing user subscriptions Detailed subscription view

Quickstart (Docker Compose)

Option 1: Direct Access (No Reverse Proxy)

Create a docker-compose.yml file:

version: '3.8'
services:
  subscribarr:
    image: 10010011/subscribarr:latest
    container_name: subscribarr
    ports:
      - "8081:8000"
    environment:
      - DJANGO_ALLOWED_HOSTS=*
      - DJANGO_SECRET_KEY=change-me
      - NOTIFICATIONS_ALLOW_DUPLICATES=false
      - DJANGO_CSRF_TRUSTED_ORIGINS="http://localhost:8081,http://127.0.0.1:8081"
      # Cron schedule (default every 30min)
      - CRON_SCHEDULE=*/30 * * * *
    volumes:
      - ./data:/app/data
    restart: unless-stopped

Run with:

docker compose up -d

Access at: http://127.0.0.1:8081

Option 2: With Reverse Proxy (Behind Nginx/Traefik)

Create a docker-compose.yml file:

version: '3.8'
services:
  subscribarr:
    image: 10010011/subscribarr:latest
    container_name: subscribarr
    ports:
      - "8081:8000"
    environment:
      - DJANGO_ALLOWED_HOSTS=*
      - DJANGO_SECRET_KEY=change-me
      - DJANGO_CSRF_TRUSTED_ORIGINS="https://subscribarr.example.com"
      - USE_X_FORWARDED_HOST=true
      - DJANGO_SECURE_PROXY_SSL_HEADER=true
      - DJANGO_CSRF_COOKIE_SECURE=true
      - DJANGO_SESSION_COOKIE_SECURE=true
      # Cron schedule (default every 30min)
      - CRON_SCHEDULE=*/30 * * * *
    volumes:
      - ./data:/app/data
    restart: unless-stopped

Run with:

docker compose up -d

Replace https://subscribarr.example.com with your actual domain.

Setup

After starting the container, open the web interface and complete the first‑run setup:

  1. Jellyfin server: URL + API key (required)
  2. Sonarr/Radarr: URLs + API keys (optional, can add more later)

Note: DJANGO_CSRF_TRUSTED_ORIGINS must include the exact scheme+host (+port if used).

In‑App Configuration

  • Settings → Jellyfin: server URL + API key
  • Settings →Sonarr/Radarr: base URLs + API keys (with “Test” button)
  • Settings →Mail server: SMTP (host/port/TLS/SSL/user/password/from)
  • Settings →Notifications:
    • ntfy: server URL, default topic, Basic Auth or Bearer token
    • Apprise: default URL(s) (one per line)
  • Profile (per user):
    • Choose channel: Email, ntfy, or Apprise
    • ntfy topic (optional, overrides default)
    • Apprise URL(s) (optional, appended to defaults)

ntfy Notes

  • Server URL: e.g., https://ntfy.sh or your own server
  • Auth:
    • Bearer token (Authorization header)
    • Basic Auth (username/password)
  • Topic selection:
    • Per user in the profile, or a global default topic in Settings

Apprise Notes

Provide one or more destination URLs (one per line), e.g.:

  • gotify://TOKEN@gotify.example.com/
  • discord://webhook_id/webhook_token
  • mailto://user:pass@smtp.example.com
  • pover://user@token
  • json://webhook.example.com/path

User URLs are added in addition to global defaults.

Notification Logic

  • Series: on the air date, Subscribarr checks Sonarr for the episode and only notifies when episode is downloaded and present.
  • Movies: similar via Radarr when movie is downloaded and present.
  • Duplicate suppression: entries are recorded in SentNotification per user/title/day; if sending fails, no record is stored.
  • Fallback: if ntfy/Apprise fail, Subscribarr falls back to Email (when configured).

Jobs / Manual Trigger

  • Periodic check via cron
  • Perform manual check:
docker exec -it subscribarr python manage.py check_new_media
docker exec -it subscribarr python manage.py check_4k
docker exec -it subscribarr python manage.py check_youtube

Security & Proxy

  • Set DJANGO_ALLOWED_HOSTS to your hostnames.
  • Include all used origins in DJANGO_CSRF_TRUSTED_ORIGINS (http/https and port where applicable).
  • Behind a reverse proxy with TLS: enable USE_X_FORWARDED_HOST, DJANGO_SECURE_PROXY_SSL_HEADER, and secure cookie flags.

Tech Stack

  • Backend: Django 5 + DRF
  • Integrations: Sonarr/Radarr (API v3)
  • Auth: Jellyfin
  • Notifications: SMTP, ntfy (HTTP), Apprise
  • Frontend: Templates + FullCalendar
  • DB: SQLite (default)

License

MIT (see LICENSE).

About

Lightweight web UI for Sonarr/Radarr subscribing, calendar, and flexible notifications via Email, ntfy, and Apprise.ptions with Jellyfin lo

Resources

License

Stars

Watchers

Forks

Packages

No packages published