Files
tuliprox/README.md
T
euzuandGitHub d31c05463e refactored documentation (#645)
* refactored documentation
2026-03-15 10:15:08 +01:00

127 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.
## 📺 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.
- Optional per-input `disable_hls_streaming` flag to force direct TS stream endpoints instead of HLS reverse-proxy streaming.
## 🐋 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)
## 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