Xtream Codes is the most widely deployed IPTV management panel in the world — and even though the original company was raided in 2019, the panel software (often referred to as Xtream Codes UI v1.x and the various community-maintained forks like XUI.ONE) is still the de facto standard for running an IPTV business. This guide walks you through a clean install of the original Xtream Codes panel on a fresh Ubuntu server.

// Note
If you don't already have a license/installer, we recommend looking at XUI.ONE instead — it's actively maintained and similar in feature set. This guide assumes you have a legitimate Xtream Codes installer package.

1. Server requirements

  • OS: Ubuntu 18.04 LTS (most stable for the legacy installer) — newer versions need package compatibility patches
  • RAM: 4 GB minimum, 8 GB recommended for 100+ concurrent viewers
  • CPU: 4 vCPU, dedicated cores preferred (avoid noisy-neighbor VPS providers)
  • Disk: 80 GB SSD minimum (catch-up TV/VOD will require much more)
  • Bandwidth: 1 Gbps unmetered uplink — IPTV is bandwidth-heavy
  • Network: Public IPv4 address, ports 25461/25500 open

2. Pre-install preparation

SSH into your server as root and update the system:

apt update && apt upgrade -y
apt install -y wget curl nano sudo software-properties-common

Set the hostname and timezone:

hostnamectl set-hostname iptv.yourdomain.com
timedatectl set-timezone UTC

Disable IPv6 if your provider has unstable v6 routing (common cause of "stream loads in some apps but not others"):

echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p

3. Run the installer

Download the official installer package (you'll receive this with your license):

cd /tmp
wget https://your-installer-url/install.tar.gz
tar -xzf install.tar.gz
cd install
chmod +x install.sh
./install.sh

The installer will prompt you for several values. Recommended answers:

  • Server type: Main (for a single-server install) or Load Balancer (for multi-server clusters)
  • Admin port: Keep 25500 (default) unless you're behind a corporate firewall
  • Client port: Keep 25461 (default)
  • MariaDB password: Generate a strong password — save it in your password manager
  • Timezone: Match your customer base, not your server

The installer takes 15–25 minutes depending on your server's network speed.

4. License activation

Once installed, navigate to http://your-server-ip:25500. Log in with the default credentials (admin / the password you set during install). The first thing you'll see is the license activation prompt.

Enter your license key. The panel will phone home to verify — this requires outbound HTTPS to be open. If you get a "license server unreachable" error, check:

curl -v https://license-server-url
ufw status

5. Initial database tuning

Out of the box, MariaDB ships with very conservative defaults that bottleneck IPTV panels at ~50 concurrent users. Edit the config:

nano /etc/mysql/my.cnf

Add these settings under [mysqld]:

innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
max_connections = 500
query_cache_size = 64M
tmp_table_size = 128M
max_heap_table_size = 128M

Restart MariaDB:

systemctl restart mariadb

6. Adding your first source & channels

Inside the panel, go to Streams → Add Stream. Pick the source type — most resellers use one of:

  • HLS / M3U8: Direct stream URL from supplier
  • MPEG-TS UDP: For IPTV multicast feeds (rare)
  • RTMP: If your supplier provides RTMP feeds
  • Local file: For VOD content stored on disk

Pro tip: don't import 5,000 channels in your first hour. Add 20 test channels, verify they play in IPTV Smarters/TiviMate, then bulk-import the rest. This catches encoding/codec issues before they become a customer support nightmare.

7. SSL certificate

Running an IPTV panel without SSL means customer credentials transmit in plaintext over public networks — a major security and privacy issue. Install Certbot:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d iptv.yourdomain.com

Note: Xtream Codes serves on custom ports, so you'll need a small NGINX reverse proxy to terminate SSL. Our server hardening guide covers the exact NGINX config.

8. Common installation errors

  • "License is invalid": Check server time with date — license verification fails if clock drifts more than 5 minutes
  • "Cannot connect to MariaDB": Check that MariaDB is running with systemctl status mariadb and that the password in /home/xtreamcodes/iptv_xtream_codes/config matches
  • Streams load but immediately disconnect: Almost always a firewall issue — confirm port 25461 is open both inbound and that your panel can reach your source server
  • Admin panel returns 502: NGINX is up but PHP-FPM isn't — restart with systemctl restart php7.0-fpm (or your PHP version)

9. Next steps

After your panel is running, we recommend:

// Done?
If your panel is up but you're seeing freezing or buffering on customer devices, the bottleneck is usually your source, not your panel. A managed restream service sits between your panel and your supplier, smoothing out source instability. Learn more →