Tuliprox
Flexible IPTV playlist processor & proxy in Rust 🦀 - supports M3U, Xtream Codes, HDHomeRun, Plex, Emby & Jellyfin. Filtering, merging, scheduling & web delivery.
Install / Use
/learn @euzu/TuliproxREADME
tuliprox - A Powerful IPTV Proxy & Playlist Processor
tuliprox is a high-performance IPTV proxy and playlist processor written in Rust 🦀.
It ingests M3U/M3U8 playlists, Xtream sources and local media, reshapes them into clean outputs, and serves them to Plex,
Jellyfin, Emby, Kodi and similar clients.
🔧 Core Features
- Advanced Playlist Processing: Filter, rename, map, and sort entries with ease.
- Flexible Proxy Support: Acts as a reverse/redirect proxy for EXTM3U, Xtream Codes, HDHomeRun, and STRM formats (Kodi, Plex, Emby, Jellyfin)
with:
- app-specific naming conventions
- flat directory structure option (for compatibility reasons of some media scanners)
- Local Media Library Management: Scan and serve local video files with automatic metadata resolution:
- Recursive directory scanning for movies and TV series
- Multi-source metadata (NFO files, TMDB API, filename parsing)
- Automatic classification (Movies vs Series)
- Integration with Xtream API and M3U playlists
- Multi-Source Handling: Supports multiple input and output sources. Merge various playlists and generate custom outputs.
- Scheduled Updates: Keep playlists fresh with automatic updates in server mode.
- Web Delivery: Run as a CLI tool to create m3u playlist to serve with web servers like Nginx or Apache.
- Template Reuse (DRY): Create and reuse templates using regular expressions and declarative logic.
🔍 Smart Filtering
Define complex filters using expressive logic, e.g.:
(Group ~ "^FR.*") AND NOT (Group ~ ".*XXX.*" OR Group ~ ".*SERIES.*" OR Group ~ ".*MOVIES.*")
📢 Monitoring & Alerts
- Send notifications via Telegram, Pushover, or custom REST endpoints when problems occur.
- Track group changes and get real-time alerts.
🔒 Role-Based Access Control
- Fine-grained permissions across 7 domains (config, source, user, playlist, library, system, epg).
- Manage users and groups via flat files (
user.txt,groups.txt) or the Web UI. - Permissions encoded as compact bitmask in JWT — zero file I/O on every request.
- Built-in
admingroup with full access; custom groups with any permission combination. - Backward compatible — existing
user.txtfiles work without changes.
📺 Stream Management
- Share live TV connections.
- Show a fallback video stream if a channel becomes unavailable.
- Integrate HDHomeRun devices with Plex, Emby, or Jellyfin.
- Use provider aliases to manage multiple lines from the same source.
- Per-stream bandwidth and transferred-bytes metrics (opt-in).
🐋 Docker Container Templates
- traefik template
- crowdsec template
- gluetun/socks5 template
- tuliprox (incl. traefik) template
> ./docker/container-templates
Want to join the community
License
See LICENSE.
Quick start
Install with docker the latest image.
services:
tuliprox:
container_name: tuliprox
image: ghcr.io/euzu/tuliprox-alpine:latest
working_dir: /app
volumes:
- /home/tuliprox/config:/app/config
- /home/tuliprox/data:/app/data
- /home/tuliprox/cache:/app/cache
environment:
- TZ=Europe/Paris
ports:
- "8901:8901"
restart: unless-stopped
Open the Browser and continue setup.
Project layout
backend/: main server and processing pipelinefrontend/: Yew Web UIshared/: DTOs and shared logicconfig/: example configurationdocs/: Markdown source for the project documentation
Documentation
The detailed documentation lives in Markdown under docs/ and is meant to be rendered as a static site.
- Docs source:
docs/src/index.md - Build static docs:
make docs - Serve generated docs with the Web UI build at
/static/docs/
Main entry points:
- Getting Started
- Core Features
- Build & Deploy
- Installation
- Configuration Overview
- Examples & Recipes
- Operations & Debugging
- Troubleshooting & Resilience
Documentation strategy
The recommended format is:
- source in Markdown
- generated as static HTML
- shipped together with the frontend/web root
For this repository, mdBook is the best fit:
- Markdown stays easy to edit in Git
- static HTML output is simple to host
- it fits a Rust project better than a Node-heavy doc stack
- navigation and search come out of the box
Related Skills
openhue
339.1kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
339.1kElevenLabs text-to-speech with mac-style say UX.
weather
339.1kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.5kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
