Overview
PlayOnTV Server is a lightweight, cross-platform personal media server. Point it at your folders or existing M3U playlists, and it instantly creates a streaming service that any compatible IPTV player can connect to — including PlayOnTV Player.
What you get out of the box:
- Scans local directories for video files (MP4, MKV, AVI, MOV, WebM, MPEG-TS)
- Imports existing M3U / M3U8 playlists
- Exposes content via M3U URLs and the full Xtream Codes API
- Embedded SQLite database — no external dependencies
- Web-based admin interface
- Runs on Windows and Linux
Requirements
| Platform | Requirements |
|---|---|
| Windows | Windows 10 or later (64-bit) |
| Linux | 64-bit distribution with glibc 2.17+ |
No additional software or databases required. PlayOnTV Server uses an embedded SQLite database.
Getting Started
1. Download and run
Download the build for your platform and launch the executable. On first run, the server will:
- Create a
datadirectory for the database - Start the web interface on port 8080
- Redirect you to the setup page to create an admin account
2. Initial setup
Open your browser and visit:
http://localhost:8080
Create your admin account with a username and password. You’ll use it to manage the server and generate connection credentials for IPTV players.
3. Add content sources
In the admin interface, add your content sources:
- Local Directory: Point to a folder containing your media files.
- M3U Playlist: Import an existing M3U or M3U8 URL.
After adding a source, click Sync to scan and import the content.
4. Connect your player
Go to Credentials in the admin interface to find your connection details. Use them in PlayOnTV Player — or any compatible IPTV client.
Configuration
Create a config.yaml in the same directory as the server executable to customize settings:
# Server settings
server:
host: "0.0.0.0" # Listen on all interfaces
port: 8080 # HTTP port
base_url: "" # External URL (for remote access)
# Security settings
security:
max_connections_per_user: 0 # 0 = unlimited
# Database settings
database:
path: "./data/iptv.db"
max_connections_per_user: 0 — video players often open multiple connections for seeking and buffering.
Connecting IPTV Players
PlayOnTV Player
In PlayOnTV Player, add a new playlist using the Xtream Codes option:
- Server URL:
http://YOUR_SERVER_IP:8080 - Username: Your admin username
- Password: The stream token from the Credentials page
Other IPTV Players
PlayOnTV Server is compatible with any IPTV player that supports:
- M3U Playlists: Use the M3U URL from the Credentials page.
- Xtream Codes API: Use the server URL, username, and token.
Besides PlayOnTV Player, compatible players include TiviMate, IPTV Smarters, GSE Smart IPTV, VLC, and many others.
API Reference
Authentication
POST /api/auth/login
Authenticate and receive a JWT token for API access.
Content Sources
GET /api/sources
List all configured content sources.
POST /api/sources
Add a new content source (local directory or M3U URL).
POST /api/sources/:id/sync
Sync / scan a content source to import media.
Media Library
GET /api/library
List all media items in the library.
Playlist & Credentials
GET /api/playlist/credentials
Get the M3U URL and Xtream credentials for connecting players.
GET /api/playlist/m3u?token=TOKEN
Download the M3U playlist.
Xtream Codes API
Full Xtream Codes API compatibility for IPTV players:
GET /player_api.php?username=X&password=Y&action=ACTION
Main Xtream API endpoint. Supported actions include get_live_categories, get_live_streams, get_vod_categories, get_vod_streams, get_series_categories, get_series, and more.
GET /movie/USERNAME/PASSWORD/STREAM_ID.EXT
Stream VOD content (movies, series episodes).
GET /live/USERNAME/PASSWORD/STREAM_ID.ts
Stream live content.
Supported Media Formats
| Format | Extension | Notes |
|---|---|---|
| MP4 | .mp4, .m4v | Recommended for best compatibility |
| Matroska | .mkv | Full support including multiple audio / subtitle tracks |
| AVI | .avi | Legacy format, fully supported |
| QuickTime | .mov | Apple QuickTime format |
| WebM | .webm | Open web media format |
| MPEG-TS | .ts, .m2ts | Transport stream format |
Troubleshooting
Can’t connect from other devices
- Make sure the server is running with
host: "0.0.0.0" - Check your firewall allows connections on port 8080
- Use your computer’s LAN IP (e.g. 192.168.1.x), not
localhost
Video won’t play / Error 429
- Set
max_connections_per_user: 0inconfig.yaml - Restart the server after changing configuration
Media not showing after sync
- Make sure files have supported extensions (.mp4, .mkv, etc.)
- Check that the directory path is correct and accessible
- Try syncing the source again
Legal Notice
PlayOnTV Server is designed for personal use with your own legally obtained media. You’re responsible for ensuring you have the right to use, store, and stream any content you add. See our Terms of Use for the full details.