Rust-EPG
Rust-EPG is a self-hosted TV program guide server written in Rust that collects listings from XMLTV, JSON, or CSV sources and serves them to IPTV players like Jellyfin and Emby, with a web UI, Redis caching, and a one-command install.
Rust-EPG is a self-hosted Electronic Program Guide system, which means it collects, stores, and serves TV schedule data the way a cable provider's on-screen guide does. It is written primarily in Rust for the server side and Vue 3 for the web interface. The README is in Chinese, so this explanation is based on a translation of that content.
The system pulls TV listings from external sources in XMLTV, JSON, or CSV formats on a schedule, stores them in a SQLite database, and caches lookups in Redis for speed. It then makes those listings available in two standard IPTV subscription formats: XMLTV (used by media players like Jellyfin, Emby, and many Android apps) and DIYP (a format popular in the Chinese IPTV ecosystem). There is also a web interface with 47 built-in visual themes where you can browse channels and programs or paste an external XMLTV URL for a live preview without importing anything.
Installation is a single shell command that handles everything: detecting your server's CPU architecture (standard x86 servers, ARM64 for devices like Raspberry Pi 4, or older ARMv7 boards), downloading the matching pre-compiled binary, setting up Redis, configuring nginx as a reverse proxy, and registering the service so it restarts automatically if the server reboots or the process crashes. Pre-compiled binaries are statically linked and have no external library dependencies. The README also includes a dedicated setup path for servers running the BT Panel (Baota) web hosting control panel, which uses a non-standard nginx layout.
The service includes memory protection: it is configured to restart automatically if memory usage exceeds 300 MB, which the README notes is roughly ten times the typical usage of 12 to 30 MB even when parsing an 85 MB EPG feed. This is intended for small VPS servers with limited RAM. A Prometheus metrics endpoint is included for monitoring. Default login credentials are admin and admin123, and the README explicitly instructs users to change the password on first login.
Where it fits
- Self-host a TV program guide that feeds schedule data to IPTV players like Jellyfin or Emby in standard XMLTV format.
- Serve Chinese IPTV channel listings in DIYP format from a Raspberry Pi or low-end VPS with very low memory usage.
- Browse TV channels through a web UI with 47 built-in themes, or preview external XMLTV feeds live without importing them into the database.
- Auto-pull and refresh TV listing updates on a schedule from multiple sources with automatic service restarts on crashes or memory spikes.