Xtream Server Setup Guide: Install Xtream UI on Ubuntu
- September 18, 2026
- 9:00 am
- By Adrien Roche
- Updated October 3, 2026
- Networking

What an Xtream server actually is
An Xtream server is a Linux machine running an IPTV management panel that speaks the Xtream Codes API. The panel does three jobs: it ingests live streams and video sources, it manages lines (user accounts with a username, password, expiry date and a connection limit), and it serves everything back out over HTTP through a handful of well-known endpoints (player_api.php for metadata, get.php for M3U playlists, xmltv.php for EPG data). Because nearly every IPTV client app implements this API, "Xtream server" has become shorthand for any panel that exposes it, whatever software actually runs underneath.
One sentence of scope before the technical part: this guide covers infrastructure and panel administration only, and the operator is responsible for holding the broadcasting rights to every stream distributed through the panel. If the underlying concepts are new to you, start with our primer on how IPTV works at the protocol level. The panel's terminology will make much more sense afterwards.
From Xtream Codes to Xtream UI and XUI.one
Xtream Codes was the commercial panel that defined the category. In September 2019, a law-enforcement operation coordinated by Italian authorities and Europol seized the company's infrastructure, and the software was never sold or updated again. The client-side API, however, was already the industry standard, so the ecosystem outlived the company.
Two projects filled the gap. Xtream UI is a free community fork built on the last public 2.9 codebase; it kept the panel alive for years, but its public development has largely stalled. XUI.one is a closed-source commercial panel written by a former Xtream UI developer and is the de facto maintained successor today. Both keep the same API, the same line model and the same default ports, which is why installation guides for one mostly apply to the other, and why this article stays fork-agnostic.
Server requirements: CPU, RAM and bandwidth
Every fork wants a fresh, minimal Ubuntu LTS installation, and most target one specific release. Check the fork's documentation before ordering the server, because installing on the wrong Ubuntu version is the most common cause of a broken install. The installer deploys its own bundled nginx, PHP and MariaDB under /home/xtreamcodes/, so never put it on a machine that already runs a web stack or a hosting control panel: they will fight over ports and packages.
Sizing comes down to one question: are you restreaming (passing streams through untouched) or transcoding (re-encoding them with ffmpeg)? Restreaming barely touches the CPU: the server mostly copies bytes between sockets. Software transcoding costs roughly one modern core per 1080p channel, which is where budgets explode. For RAM, 4 GB runs a small test panel; 8 GB or more is sensible in production once MariaDB caching and a few ffmpeg processes stack up. Keep the database on SSD storage.
Bandwidth is pure arithmetic: peak concurrent viewers multiplied by stream bitrate, plus headroom. No panel setting changes that math.
| Peak concurrent viewers | CPU (restream only) | RAM | Bandwidth at 8 Mbps per viewer |
|---|---|---|---|
| 25 | 2 cores | 4 GB | ~200 Mbps |
| 100 | 4 cores | 8 GB | ~800 Mbps |
| 250 | 6-8 cores | 16 GB | ~2 Gbps |
These figures assume restreaming only and a typical 8 Mbps 1080p bitrate; transcoding multiplies the CPU column, not the bandwidth one. Sustained throughput matters far more than the advertised port speed, so test under real load. If you would rather skip the sizing homework, our servers built for streaming workloads are dimensioned for exactly this kind of sustained-throughput usage.
Installing an Xtream UI-style panel on Ubuntu
Every fork ships its own installer, but they all follow the same three-step shape. The commands below are deliberately generic: download the installer only from your fork's official release page, never from a random re-upload, and read the script before running it as root.
Step 1: Prepare a clean system
apt update && apt upgrade -y
apt install -y wget unzip python3 net-tools
timedatectl set-timezone UTCReboot if a new kernel was installed, and set the timezone deliberately: EPG scheduling depends on the system clock, and drift produces programme guides that are off by hours.
Step 2: Run the fork's installer
cd /root
wget "$INSTALLER_URL" -O install.py # from your fork's official release page
python3 install.pyThe script installs the bundled stack, creates the database (Xtream UI, for example, runs its own MariaDB on 127.0.0.1:7999 with a database named xtream_iptvpro) and prints the admin URL, port and credentials when it finishes. Record them immediately: some forks generate a randomized admin path or port and will not display it a second time.
Step 3: First login and sanity checks
Open http://your-server-ip:25500 in a browser, log in with the generated credentials and change the admin password before anything else. Then confirm the services are actually listening:
ss -tlnp | grep -E '25500|25461'You should see the panel's bundled nginx bound to both ports. From there, the panel-side work (defining the main server, creating categories and a test line) happens entirely in the web interface.
Ports, reverse proxy and TLS
The defaults inherited from Xtream Codes are 25500 for the admin panel and 25461 for client-facing HTTP output (the port lines connect to for playlists and streams). Open only what you need and firewall the rest; if your admin IP is static, restrict the panel port to it:
ufw allow 22/tcp
ufw allow 25461/tcp
ufw allow from YOUR_ADMIN_IP to any port 25500 proto tcp
ufw enableThen verify what the outside world actually sees. Our guide to checking open ports on Linux covers ss, nmap and the difference between listening and reachable.
Many operators put nginx or HAProxy in front of the client port on 80, 443 or 8080, because some networks block non-standard ports outright; the proxy can also terminate TLS for the admin panel. One honest caveat: plenty of older set-top boxes and IPTV apps still behave better over plain HTTP, so test your actual client mix before forcing HTTPS on the streaming port. And do not mistake any of this for security: moving the admin panel to an unusual port only reduces scanner noise in your logs. Real hardening is a strict firewall, strong unique passwords, TLS on the admin interface and an up-to-date OS.
Backups, monitoring and updates
The database is the panel: streams, lines, bouquets and EPG configuration all live in MariaDB. Dump it daily and copy the dump off the server:
mysqldump -h 127.0.0.1 -P 7999 -u user_iptvpro -p xtream_iptvpro | gzip > /root/xtream-db-$(date +%F).sql.gz
tar czf /root/xtream-config-$(date +%F).tar.gz /home/xtreamcodes/iptv_xtream_codes/configFor monitoring, the panel dashboard already shows live connections per stream; add vnstat for the bandwidth trend and htop to spot a runaway ffmpeg process. High connection counts also mean thousands of open sockets, so verify that the installer raised the file-descriptor limits. Most do, via sysctl and limits.conf tweaks, but check. Finally, be realistic about the software you are running: a fork that no longer receives patches should be treated as a legacy internet-facing PHP application. Keep it on a dedicated server that does nothing else, expose the minimum, and patch the OS underneath it regularly.
None of this needs exotic hardware. It needs a clean Ubuntu LTS box with root access and a network that stays flat when a hundred sockets each pull 8 Mbps all evening. That is what our Linux VPS plans are built for: dedicated CPU and RAM, unlimited (fair-use) bandwidth, full admin access with no KYC, and delivery about 10 seconds after payment confirms. Order, run the installer, and you can be at the panel login screen within the hour.
Frequently Asked Questions
Is Xtream UI still maintained?
What is the difference between an Xtream server and a Plex or Jellyfin server?
How much bandwidth does one IPTV stream use?
Can I install an Xtream panel on shared hosting or alongside cPanel?
/home/xtreamcodes/ and bind to fixed ports such as 25500 and 25461. Shared hosting gives you neither root access nor free ports, and control panels like cPanel or Plesk conflict directly with the bundled stack. The minimum viable platform is a clean Ubuntu LTS VPS or dedicated server that runs nothing else.Adrien Roche, Infrastructure & Hosting Editor
Systems engineer with 10+ years operating Windows Server and Linux fleets. Adrien runs the rdp.monster infrastructure documentation and writes our guides on RDP, VPS hosting, server administration, networking and privacy tooling.




