Files
tuliprox/README.md
T
euzuandGitHub 9aec9594aa Fix/ws protocol version stream measure hls entry stream table (#660)
* sidebar scrollable
* fixed metering values for stream table
* Using native linux approach for sysinfo
* fixed stream table hls display and actie connections
* shared stream reconnect bug fix
* foxed some rabbitai findings
* Fixed hls stream table prune
2026-03-22 13:19:01 +01:00

120 lines
4.5 KiB
Markdown

## **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](https://github.com/user-attachments/assets/8ef9ea79-62ff-4298-978f-22326c5c3d02)
## 🔧 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](https://discord.gg/gkzCmWw9Tf)
## License
See [`LICENSE`](https://github.com/euzu/tuliprox/blob/develop/LICENSE).
## Quick start
Install with docker the latest image.
```docker
services:
tuliprox:
container_name: tuliprox
image: ghcr.io/euzu/tuliprox-alpine:latest
working_dir: /app
volumes:
- /home/tuliprox/tuliprox:/app/tuliprox
- /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`](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`](docs/src/getting-started.md)
- [`Core Features`](docs/src/features.md)
- [`Config Reference`](docs/src/configuration/main-config.md)
- [`Sources And Targets`](docs/src/configuration/sources-and-targets.md)
- [`API Proxy`](docs/src/configuration/api-proxy.md)
- [`Streaming And Proxy Behavior`](docs/src/streaming-and-proxy.md)
- [`Mapping And Templates`](docs/src/mapping-and-templates.md)
- [`Deployment`](docs/src/deployment.md)
- [`Examples And Recipes`](docs/src/examples-and-recipes.md)