euzuandGitHub 6fcfca1d4a 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)
2026-03-28 17:29:24 +01:00
2026-03-15 10:15:08 +01:00
2026-03-13 16:12:43 +01:00
2026-02-23 11:46:21 +01:00
2026-02-14 15:13:11 +01:00
2026-02-14 15:13:11 +01:00
2026-03-15 10:15:08 +01:00
2026-02-14 15:13:11 +01:00
2025-10-02 12:15:21 +02:00
2021-09-22 10:55:12 +02:00
2026-03-15 10:15:08 +01:00

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.

tuliprox logo

🔧 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 admin group with full access; custom groups with any permission combination.
  • Backward compatible — existing user.txt files 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

Join us on Discord

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 pipeline
  • frontend/: Yew Web UI
  • shared/: DTOs and shared logic
  • config/: example configuration
  • docs/: 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:

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
S
Description
Flexible IPTV playlist processor & proxy in Rust 🦀 - supports M3U, Xtream Codes, HDHomeRun, Plex, Emby & Jellyfin. Filtering, merging, scheduling & web delivery.
Readme MIT
165 MiB
v3.3.0
Latest
2026-04-02 14:05:15 +02:00
Languages
Rust 97%
SCSS 2.3%
Shell 0.5%