All apps · 0 apps
PlexHarvester
Docker app from grtgbln's Repository
Overview
Readme
View on GitHubPlexHarvester
PlexHarvester is a self-hosted web application that compares your local Plex library against shared remote servers, indexes FTP sources for automatic downloading, and manages MKV audio tracks — all from a clean web interface.
Features
- Library Comparison — Compare movies and TV shows between your local Plex server and any shared remote server, with smart cross-language title matching (e.g. EN vs FR titles)
- FTP Integration — Index multiple FTP servers, queue downloads automatically, and route content to the right Plex library folder
- MKV Processing — Remux video files with MKVToolNix to set the correct default audio track and fix language metadata per track
- Snapshots — Save library snapshots and diff them over time to track additions and removals
- Multilingual — Full French and English interface
- Real-time Logs — Live log viewer with SSE streaming and configurable retention
- Auto-download scheduling — Time-windowed automatic FTP downloads with daily limits and skip days
Quick Start
Docker Compose
services:
plexharvester:
image: misterkqc/plexharvester:latest
container_name: plexharvester
ports:
- "5000:5000"
volumes:
- /mnt/user/appdata/plexharvester:/config
environment:
TZ: America/Montreal
SECRET_KEY: "your-random-secret-key"
restart: unless-stopped
Then open http://YOUR_IP:5000 in your browser.
Docker Run
docker run -d \
--name plexharvester \
-p 5000:5000 \
-e SECRET_KEY="your-random-secret-key" \
-e TZ="America/Montreal" \
-v /mnt/user/appdata/plexharvester:/config \
--restart unless-stopped \
misterkqc/plexharvester:latest
Unraid Installation
Option 1 — Community Applications (recommended)
- In Unraid, open Apps (Community Applications)
- Search for PlexHarvester
- Click Install — all fields are pre-filled, just enter your
SECRET_KEY
Option 2 — Template URL
- In Unraid → Docker → Add Container
- At the very top of the page, find the "Template URL" field
- Paste the URL below and click the arrow button next to it:
https://raw.githubusercontent.com/MisterK-Qc/plexharvester/main/unraid-template/plexharvester.xml - All fields pre-fill automatically — enter your
SECRET_KEYand click Apply
Option 3 — Via SSH (saves template permanently)
Run this once in your Unraid terminal:
wget -O /boot/config/plugins/dockerMan/templates-user/plexharvester.xml \
https://raw.githubusercontent.com/MisterK-Qc/plexharvester/main/unraid-template/plexharvester.xml
Then: Docker → Add Container → select PlexHarvester under User Templates
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
SECRET_KEY |
No | (auto-generated) | Flask secret key used to sign and encrypt session cookies. If not set, a key is auto-generated on first start and saved to /config/secret_key.txt. |
TZ |
No | America/Montreal |
Container timezone |
PLEX_COMPARE_CONFIG_DIR |
No | /config |
Internal config directory (do not change) |
Volumes
| Container path | Description |
|---|---|
/config |
Required. Persistent storage for config, cache, and logs. |
First Launch
- Open http://YOUR_IP:5000
- Log in with your Plex account — the token is retrieved automatically
- Select the remote server to compare against
- Go to Config (⚙️) to set up:
- TMDB API key (optional)
- FTP servers (optional)
- Default audio language for MKV processing
- Interface language (French / English)
Configuration
All settings are managed through the web interface under Config. The configuration is stored in /config/config.json.
See config.example.json for a reference of all available options.
MKV Processing
MKVToolNix is included in the Docker image — no separate installation required. The default binary path is /usr/bin.
Features:
- Auto-detect audio track languages from file metadata
- Set default audio track based on your preferred language
- Override language per track directly from the UI
- Add custom language codes to the dropdown list
Architecture
Built with:
- Python 3.12 + Flask — Web framework
- PlexAPI — Plex server communication
- Gunicorn — WSGI server (1 worker, 4 threads)
- MKVToolNix — MKV remuxing and metadata editing
app/
routes/ Flask blueprints (dashboard, config, FTP, MKV, auth)
services/ Business logic (Plex, FTP, MKV, cache, config)
templates/ Jinja2 HTML templates
languages/ i18n files (fr.json, en.json)
static/ CSS, favicon
Building from Source
git clone https://github.com/MisterK-Qc/plexharvester.git
cd plexharvester
docker build -t plexharvester:latest .
Code changes in
app/andrun.pyonly require a container restart when using bind mounts — no rebuild needed.
License
MIT — see LICENSE
Install PlexHarvester on Unraid in a few clicks.
Find PlexHarvester 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.
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
misterkqc/plexharvester:latestRuntime arguments
- Web UI
http://[IP]:[PORT:5000]/- Network
bridge- Shell
bash- Privileged
- false
Template configuration
Port for the PlexHarvester web interface.
- Target
- 5000
- Default
- 5000
- Value
- 5000
Persistent storage for configuration, cache, and logs.
- Target
- /config
- Default
- /mnt/user/appdata/plexharvester
- Value
- /mnt/user/appdata/plexharvester
Flask secret key for session security. If left empty, a key is auto-generated and saved to /config/secret_key.txt on first start.
Internal path for configuration files. Do not change unless you have a specific reason.
- Target
- PLEX_COMPARE_CONFIG_DIR
- Default
- /config
- Value
- /config