A comprehensive IPTV management system with automatic provider synchronization, intelligent category mapping, and multi-user support.
- Multi-User Management: Support for multiple users with individual channel configurations, secure login, and customizable concurrent stream limits (max connections).
- Provider Management: Connect to multiple IPTV providers via Xtream Codes API with automatic connection pooling.
- Category Organization: Drag & drop sorting and visual channel assignment.
- EPG Integration: Comprehensive Electronic Program Guide (EPG) support with automatic updates.
- Automatic Synchronization: Configurable intervals (hourly, daily, weekly) with intelligent category mapping.
- Provider Connection Pooling: Add the same provider multiple times to create a pool; streams automatically round-robin and fall back to available accounts when connection limits are reached.
- HDHomeRun Emulation: Emulate HDHomeRun devices for seamless integration with Plex, Emby, and Jellyfin.
- Shared Links: Create public share links with customizable slugs (short URLs) and expiration dates.
- Bulk Operations: Optimized bulk category import and deletion for managing large playlists efficiently.
- VOD & Series Support: Full proxy support for Movies and TV Series.
- Internationalization: Localized UI (English, German, French, Greek).
- M3U Playlist Generation: Generate custom M3U playlists for external players.
- Import/Export: Secure, password-protected data migration.
- User Backups: Automatically create and manage backups of assigned categories and channels per user.
- π‘οΈ SSRF Protection: Robust validation of upstream URLs (preventing access to private IPs, localhost, cloud metadata).
- π Rate Limiting: Protection against brute force (Login) and DoS attacks (Client Logs).
- π« Secure Authentication: JWT-based auth with session management and Bcrypt password hashing.
- π« IP Blocking: Configurable IP blocking and whitelisting.
- π Security Headers: Comprehensive Helmet.js security headers.
- π₯ Multi-Core Optimization: Node.js Clustering utilizes all CPU cores.
- β‘ Optional Redis: High-performance tracking for active streams (recommended for >500 users).
- π§΅ Worker Threads: Offloads CPU-intensive tasks like EPG mapping.
- β‘ Optimized Channel Matching: Fast channel matching algorithms using bitwise signatures.
- β‘ Optimized Database Schema: Optimized indices for faster streaming performance and EPG updates.
- Node.js: 20.x+
- npm: 9.x+
- SQLite: 3.x (included)
- MaxMind GeoLite2 License Key: While basic region locking functions work out of the box with the included database, updating the internal GeoIP database requires a free MaxMind License Key. You can get one at maxmind.com and enter it in the WebUI Security Settings.
For production environments, it is strongly recommended to set NODE_ENV=production and run the application behind a reverse proxy (like Nginx or Traefik) that handles HTTPS. The application will enforce secure cookies when in production mode.
- Create
docker-compose.yml:services: iptv-manager: image: ghcr.io/bladestar2105/iptv-manager:latest container_name: iptv-manager restart: unless-stopped ports: - "3000:3000" volumes: - ./data:/data environment: - DATA_DIR=/data
- Run
docker-compose up -d. - Access at
http://localhost:3000.
We provide automated scripts for easy local deployment on Debian and Ubuntu systems. This is ideal for users who do not want to use Docker.
To install IPTV-Manager as a background systemd service, run the following command as root:
curl -fsSL https://raw.githubusercontent.com/Bladestar2105/IPTV-Manager/main/scripts/install.sh -o install.sh
chmod +x install.sh
sudo ./install.shTo update an existing automated installation, simply navigate to the installation directory and run the update script:
cd /opt/iptv-manager
sudo ./scripts/update.sh- Clone repo:
git clone https://github.com/Bladestar2105/IPTV-Manager.git - Install:
npm install - Configure:
cp .env.example .env(edit as needed) - Run:
npm start
For Proxmox VE users, you can easily deploy an LXC container running IPTV-Manager. Run the following command directly on your Proxmox Host Shell:
curl -fsSL https://raw.githubusercontent.com/Bladestar2105/IPTV-Manager/main/scripts/proxmox.sh -o proxmox.sh
chmod +x proxmox.sh
./proxmox.sh- Linting:
npm run lint - Testing:
npm test
- Default Username:
admin - Default Password: Automatically generated (check your console output).
- Important: Change password immediately after login.
The application blocks Cross-Origin Resource Sharing (CORS) by default for security. If you need to access the API or streams from another domain (e.g., an external web player), you must configure the ALLOWED_ORIGINS environment variable.
- Default: Cross-origin requests are blocked (
false). - Setup: Add
ALLOWED_ORIGINS=https://your-web-player.com,https://another-site.comto your.envfile. - Allow All: Set
ALLOWED_ORIGINS=*to allow all domains (β οΈ Not recommended for production).
| Login | Dashboard |
|---|---|
![]() |
![]() |
| User Backups | Import/Export |
|---|---|
![]() |
![]() |
| Categories | Channels |
|---|---|
![]() |
![]() |
| Sync Logs |
|---|
![]() |
| EPG Sources | EPG Browse |
|---|---|
![]() |
![]() |
| EPG Mapping | Statistics |
|---|---|
![]() |
![]() |
| Security | Xtream Credentials |
|---|---|
![]() |
![]() |
| Web Player |
|---|
![]() |
- Auth:
/api/login,/api/change-password - Users:
/api/users(CRUD) - Providers:
/api/providers(CRUD, Sync, Import) - Categories:
/api/user-categories(Manage, Reorder) - EPG:
/api/epg-sources(Manage, Update) - Shares:
/api/shares(Create, Update, Delete)
GET /player_api.php: Auth & MetadataGET /live/:user/:pass/:id.ts: Live StreamGET /movie/:user/:pass/:id.ext: Movie StreamGET /series/:user/:pass/:id.ext: Series StreamGET /xmltv.php: XMLTV EPG
GET /hdhr/:token/discover.jsonGET /hdhr/:token/lineup.jsonGET /hdhr/:token/auto/v:channelId
MIT License













