Plex-Notifier

Plex-Notifier

Docker app from jermcee's Repository

Overview

Plex Notifier periodically checks for new Plex episodes and sends user-specific email alerts based on their watch history, powered by Tautulli. βœ… Supports per-user unsubscribe links (global and per-show) πŸ” Protects the settings WebUI with optional HTTP Basic Auth πŸ“§ All configuration (Plex, Tautulli, SMTP) is done in the Web UI

Plex Notifier Logo

πŸ“Ί Plex Notifier

Plex Notifier is a lightweight Flask-based web service that monitors your Plex library and emails users when new episodes are available β€” but only for shows they’ve already shown interest in (i.e. fully watched at least one episode).

Built with Docker, designed for Unraid, and powered by Tautulli.


✨ Features

  • βœ… Sends personalized email notifications for new episodes
  • βœ… Automatically detects user interest via Tautulli watch history
  • βœ… Fully responsive Web UI for configuring:
    • Plex and Tautulli credentials
    • Email (SMTP) settings
    • Notification interval
  • βœ… Users can unsubscribe globally or per-show (Beta)
  • πŸ” Optional admin login screen for admin access
  • πŸ“„ Per-user logs stored locally for review (Beta)
  • ♻️ Skips duplicate notifications by tracking each user's last 200 alerts
  • 🐳 Runs cleanly in Docker with Unraid support

🧰 Requirements

  • A running Plex Media Server
  • A Tautulli instance connected to your Plex
  • SMTP credentials (Gmail, Mailgun, etc.)
  • Docker (or Unraid)

πŸš€ Getting Started

Docker CLI

docker run -d \
  --name plex-notifier \
  --net=host \
  -v /mnt/cache/appdata/plex-notifier:/app/instance \
  -e TZ=America/Chicago \
  -e SECRET_KEY=$(openssl rand -hex 32) \
  -e WEBUI_USER=admin \
  -e WEBUI_PASS=changeme \
  jjermany/plex-notifier:beta

Replace the env values as needed. The container runs on port 5000.


Unraid Setup

  1. Go to the Apps tab (Community Applications).
  2. Add this template repo:
    https://github.com/jjermany/unraid-templates
    
  3. Install the Plex Notifier (Beta) template.
  4. Configure your settings in the WebUI (http://[Unraid IP]:5000).

πŸ”’ Authentication

The admin login screen is optional but recommended. Set the following environment variables to enable the login form:

WEBUI_USER=yourusername
WEBUI_PASS=yourpassword

When set, the Web UI redirects to a login page at /login, and a session cookie is used after successful sign-in. The WEBUI_USER and WEBUI_PASS values are the exact credentials users must enter on the login form.


πŸ“¬ Email Configuration

The following SMTP fields are required and configured via the Web UI:

  • SMTP Host
  • SMTP Port
  • SMTP Username
  • SMTP Password
  • From Address (email)
  • Base URL (used in unsubscribe links)

πŸ“ Subscription Management

Each email includes a secure unsubscribe link:

  • Global opt-out: stop all future notifications
  • Per-show opt-out: stop notifications for specific shows only

You can review and manage preferences directly in the Web UI after clicking the unsubscribe link.


πŸ“¦ Data & Logs

  • All settings and user preferences are saved in:
    /app/instance/config.sqlite3
    
  • Each user also gets a personal log file:
    /app/instance/logs/[user]-notification.log
    

πŸ§ͺ Development

Want to help or test features?

git clone https://github.com/jjermany/plex-notifier.git
cd plex-notifier
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
flask run

You can also use Docker Compose for local dev (optional).


πŸ™Œ Contributing

Pull requests welcome! Please:

  • Follow existing coding patterns
  • Keep logging clean and minimal
  • Add clear commit messages

πŸ› οΈ Roadmap

  • βœ… Per-show opt-out
  • βœ… Web UI settings panel
  • ⏳ Discord/Pushbullet support (future)
  • ⏳ Plex token auto-refresh (if needed)

πŸ“˜ License

MIT License. See LICENSE for details.


πŸ›  Web UI Configuration Guide

After starting the container, navigate to the Web UI (e.g. http://localhost:5000) and fill in the following fields:

πŸ“Ί Plex & Tautulli

Field Example Description
Plex URL http://localhost:32400 URL to your Plex server. Use http://[LAN IP]:32400 if running separately.
Plex Token xxxxx Get your token from: Plex Token Guide
Tautulli URL http://localhost:8181 URL to your Tautulli instance (must be reachable by this container).
Tautulli API Key xxxxxxxx Found under Tautulli Settings β†’ Web Interface β†’ API.

πŸ“§ Email Settings

Field Example Description
SMTP Host smtp.gmail.com Your email provider’s SMTP server.
SMTP Port 587 Common ports: 587 (TLS), 465 (SSL).
SMTP Username your.email@gmail.com The email address you’ll send from.
SMTP Password xxxxxxxx App-specific password (for Gmail/Mailgun/etc).
From Address notifier@example.com The email address shown to recipients.
Base URL http://notifier.example.com Publicly accessible URL to your notifier app. Usually this is a domain or tunnel (e.g. Cloudflare Tunnel, NGINX Proxy Manager) pointing to your app’s port. This is used for unsubscribe links.

⏱️ Polling Interval

Field Example Description
Notify Interval 30 How often (in minutes) to check for new Plex episodes. Default is 30.

πŸ§ͺ Testing

  • Use the "Send Test Email" form to verify SMTP settings.
  • Use "Run Now (last 24h)" to manually trigger a check for new episodes.

β˜• Support

If you find Plex Notifier helpful, consider supporting the project:

Buy Me a Coffee

Install Plex-Notifier on Unraid in a few clicks.

Find Plex-Notifier 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 Plex-Notifier Review the template variables and paths Click Install

Related apps

Explore more like this

Explore all

Details

Repository
jjermany/plex-notifier:latest
Last Updated2026-07-17
First Seen2025-07-28

Runtime arguments

Web UI
http://[IP]:[PORT:5000]/
Network
host
Shell
sh
Privileged
false

Template configuration

WebUI PortPorttcp

Container listens on port 5000

Target
5000
Default
5000
Value
5000
AppdataPathrw

Stores user config and internal database

Target
/app/instance
Default
/mnt/user/appdata/plex-notifier
Value
/mnt/user/appdata/plex-notifier
TimezoneVariable

Container timezone

Target
TZ
Default
America/Chicago
Value
America/Chicago
SECRET_KEYVariable

Required. Generate with: openssl rand -hex 32

WEBUI_USERVariable

Optional username for HTTP Basic Auth protecting the WebUI

WEBUI_PASSVariable

Optional password for HTTP Basic Auth protecting the WebUI