mirror of
https://github.com/euzu/tuliprox.git
synced 2026-10-11 02:12:23 +02:00
6fcfca1d4a695259233aebe09de031d9a311cd79
While "max_connections: 0" was correctly allocated as unlimited, the session reservation could still lock that same provider for other sessions. This caused the path to erroneously fall into the generic "exhausted" handling later on. (#677)
While "max_connections: 0" was correctly allocated as unlimited, the session reservation could still lock that same provider for other sessions. This caused the path to erroneously fall into the generic "exhausted" handling later on. (#677)
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