Turn your Plex library into an IPTV service! Watch your Plex movies and TV shows in any IPTV player like TiviMate, IPTV Smarters, and more.
This bridge transforms your Plex Media Server into an Xtream Codes API service, allowing you to:
- β Access your Plex movies and TV shows through any IPTV player
- β Get high-quality movie posters from TMDb (optional)
- β Browse your entire library with beautiful artwork
- β Stream directly from Plex to your IPTV app
The easiest way to run this is with Docker/Portainer:
docker pull ghcr.io/kohnorw/plex-vod:latest- Open Portainer β Stacks β + Add stack
- Name it:
plex-vod - Paste this:
version: '3.8'
services:
plex-vod:
image: ghcr.io/kohnorw/plex-vod:latest
container_name: plex-vod
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- plex-vod-data:/app/data
environment:
- BRIDGE_HOST=0.0.0.0
- BRIDGE_PORT=8080
volumes:
plex-vod-data:- Click Deploy the stack
Visit: http://YOUR_SERVER_IP:8080/admin
Login with:
- Username:
admin - Password:
admin123(you'll change this on first login)
Add your Plex info:
- Plex Server URL - Usually
http://192.168.1.X:32400 - Plex Token - How to find your Plex token
- TMDb API Key (optional) - Get free API key for high-quality posters
In TiviMate, IPTV Smarters, or any Xtream player:
- Server URL:
http://YOUR_SERVER_IP:8080 - Username:
admin(or what you set) - Password: Your bridge password (set in settings)
- Type: Xtream Codes API
Done! π Your Plex library is now in your IPTV player!
Docker Command Line
docker run -d \
--name plex-vod \
-p 8080:8080 \
-v plex-vod-data:/app/data \
--restart unless-stopped \
ghcr.io/kohnorw/plex-vod:latestDocker Compose
Create docker-compose.yml:
version: '3.8'
services:
plex-vod:
image: ghcr.io/kohnorw/plex-vod:latest
container_name: plex-vod
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- plex-vod-data:/app/data
volumes:
plex-vod-data:Run: docker-compose up -d
Linux Install (without Docker)
# Clone the repository
git clone https://github.com/kohnorw/plex-vod.git
cd plex-vod
# Run installer
chmod +x install.sh
./install.sh --install-service
# Access at http://YOUR_IP:8080/admin- π₯ Full Plex Integration - All your movies and TV shows
- πΊ Xtream Codes API - Works with all IPTV players
- πΌοΈ TMDb Posters - High-quality artwork (optional)
- π Auto-Matching - Automatically fetches posters every 30 minutes
- πΎ Persistent Cache - Saves poster matches (survives restarts)
- π Web Interface - Easy configuration
- π Manual Matching - Search and fix poster matches
- π Pagination - Browse all your content
- π Secure - Password protected
- β‘ Multi-User - Handles many users at once
- π Fast - Optimized caching
- πͺ Reliable - Auto-restart on errors
Works perfectly with:
- β TiviMate (Recommended)
- β IPTV Smarters Pro
- β Chilio
- β Dispatcharr
- β Perfect Player
- β GSE Smart IPTV
- Plex Server URL - Your Plex server address
- Plex Token - Authentication token from Plex
- TMDb API Key - For high-quality posters (free)
- Bridge Username - For IPTV player login
- Bridge Password - For IPTV player login
- Open Plex Web App
- Play any movie/show
- Click "..." β Get Info
- Click "View XML"
- Look in the URL:
X-Plex-Token=YOUR_TOKEN_HERE
- Create account at TMDb.org
- Go to Settings β API
- Request API key (free)
- Copy the "API Key (v3 auth)"
Check container is running:
docker ps | grep plex-vodCheck logs:
docker logs plex-vodCheck port:
netstat -tlnp | grep 8080- β Make sure Plex URL is correct
- β Make sure Plex Token is valid
- β Try accessing Plex URL from the container
- β
If Plex is in Docker, use
http://host.docker.internal:32400
- β Add TMDb API key (optional but recommended)
- β Wait for auto-match to run (30 minutes)
- β Or manually trigger: Click "Auto-Match Unmatched" in admin
- β Verify Plex connection in admin panel
- β Check credentials in IPTV player
- β Make sure content exists in Plex libraries
βββββββββββββββ ββββββββββββββββ ββββββββββββββ
β β β β β β
β Plex VOD βββββββββββ Plex βββββββββββ TMDb β
β Bridge β Auth β Server β Meta β API β
β β β β β (optional)β
ββββββββ¬βββββββ ββββββββββββββββ ββββββββββββββ
β
β Xtream API
β
βΌ
βββββββββββββββ
β IPTV β
β Player β
β (TiviMate) β
βββββββββββββββ
- Bridge connects to your Plex server
- Optionally fetches high-quality posters from TMDb
- Exposes everything via Xtream Codes API
- IPTV players connect and stream from Plex
- π Encrypted Storage - API keys encrypted with AES-256
- π Hashed Passwords - SHA-256 password hashing
- π‘οΈ Session Security - Secure Flask sessions
- π Force Password Change - Must change default password
Important: Change the default password on first login!
Need help?
- π Check the Troubleshooting section
- π¬ Open an issue
- π See full documentation in PORTAINER.md and GHCR.md
MIT License - see LICENSE file
- Plex - Amazing media server
- TMDb - Movie/TV metadata and artwork
- PlexAPI - Python library for Plex
- Some code written by bigverm23
If this helped you, give it a star! β It helps others find it too.
Made with β€οΈ for the Plex community