Guide· legacy
How to install XUI One: requirements, steps and hardening (2026)
Install XUI One on a clean Ubuntu server: hardware and OS requirements, the install steps, first login, post-install hardening and the errors you will hit.
GuideLegacy software· advanced
Installing Xtream UI in 2026: what the R22F installer does, why Ubuntu 18.04 is a problem, what community mods change, and how to harden an unmaintained panel.
Legacy software
This guide documents Xtream UI. Xtream UI has had no official maintenance since its last public releases; XUI One is proprietary with its own licence terms. We document them because many operators still run them. Running either is your decision and your risk, and we do not link to modified or cracked builds.
Installing Xtream UI in 2026 means installing software that nobody maintains. That is not a reason to skip this guide; it is the reason to read it. Thousands of panels still run on it, operators still inherit it, and the old forum posts that explained the installation are badly outdated. This guide replaces them. It explains what the R22F installer does, why the Ubuntu 18.04 requirement is a problem, what the community “mods” changed, and how to harden a panel whose upstream disappeared.
Xtream UI appeared after the original Xtream Codes service was shut down in September 2019. A group of developers took the panel code base, kept the Xtream Codes database layout and API, and released it as a free download. Because the API stayed compatible, players and resellers that had worked with Xtream Codes kept working. The last official releases were R21 (stable) and R22F (early access). After that the project site went offline and no further official release followed. Anything newer that calls itself Xtream UI is a third-party build.
Two points follow from this history:
For the architecture of the panel (main server, load balancers, bouquets, lines) read the Xtream UI panel guide. This article is only about getting it onto a server and keeping it from falling over.
The old articles sold Xtream UI as “the most complete free IPTV panel”. In 2026 the honest description is: a capable panel frozen in 2021. Before you provision a server, weigh these points.
The original installer targets Ubuntu 18.04 LTS. Canonical ended standard support for 18.04 in May 2023. Without an Ubuntu Pro subscription you receive no security updates for the kernel, OpenSSL, the C library or anything else. A streaming server exposed to the internet on an unpatched OS is a liability, and the panel itself does not stay hidden: the client port is probed constantly.
Xtream UI ships its own nginx and PHP-FPM binaries inside /home/xtreamcodes/iptv_xtream_codes/ and uses the MariaDB package of the host OS. The bundled PHP belongs to the 7.x generation, which stopped receiving security fixes at the end of 2022. The MariaDB version that Ubuntu 18.04 provides is equally old. You cannot swap these components for current versions without breaking the panel’s compiled extensions and SQL assumptions. Community installers that claim Ubuntu 20.04 or 22.04 support work around this by shipping their own binaries or by pinning repositories; check the current release notes of whichever build you use, because the details differ.
Xtream UI inherited the Xtream Codes code base, and that code base had publicly discussed weaknesses: predictable admin paths, weak default credentials, SQL injection reports in reseller endpoints, and an API that leaks more than it should. Some of these were fixed in R22F, some only in community builds, some never. Running the panel behind a firewall that allows only the ports you need is not optional.
The forum post this article replaces promoted “CK MODS 41”, a community-modified build that bundled security fixes and extra features. Such builds exist for every release and they do fix real bugs. They also come from anonymous sources, cannot be audited by you, and have repeatedly been found with added backdoors or phone-home code. We name them as history. We do not link them, and we recommend you do not install one on a server that handles customer data or payments.
The panel is just software. What you stream through it is your responsibility. This guide does not cover content sourcing, and nothing here changes your obligations under the copyright law of your country and your customers’ countries.
If any of this makes you hesitate, look at the XUI One vs Xtream UI comparison first. If you still want to proceed, continue.
The 2023 advice was “never on a VPS”. That was partly marketing for a hosting affiliate. The real constraint is bandwidth and CPU: a main server that only runs the panel, the database and the EPG grabber is fine on a well-sized VPS with a few dedicated cores and 8–16 GB RAM. Load balancers that push streams need predictable, unmetered bandwidth and real cores, which usually means a dedicated server. Size them from your bitrate times concurrent viewers, plus a reserve of at least 20 percent.
You have three realistic choices:
Whatever you pick, start from a clean image. Do not install the panel on a server that already runs a web stack, because the installer assumes it owns nginx’s ports and the MariaDB instance.
Understanding the installer helps you debug it and helps you notice when a mirror has changed it. The original R22F installer is a Python 2 script run as root. In order, it:
paramiko), unzip, e2fsprogs.xtreamcodes system user and /home/xtreamcodes/iptv_xtream_codes/.xtream_iptvpro, imports the schema and writes the connection details into an encoded config file.chattr +i, runs permissions.sh and starts the services via start_services.sh.A load-balancer install runs the same script with the server type set to load balancer, plus the main server’s IP and the key the panel generates under Servers → Add. The load balancer then pulls its configuration from the main server over the Xtream API.
The old guide also showed an “update to R22F” step: delete the admin and pytools directories, unpack a release zip over the installation, re-apply chattr, fix ownership with chown -R xtreamcodes:xtreamcodes, re-run permissions.sh and restart services. That is the generic Xtream UI upgrade procedure, and restoring from a backup archive follows the same steps.
The commands below are generic. We deliberately leave out download URLs. Fetch the installer from a source you have decided to trust, and read the script before you run it as root.
apt update && apt full-upgrade -y
adduser ops
usermod -aG sudo ops
mkdir -p /home/ops/.ssh && cp ~/.ssh/authorized_keys /home/ops/.ssh/
chown -R ops:ops /home/ops/.ssh
Then in /etc/ssh/sshd_config set PasswordAuthentication no and PermitRootLogin prohibit-password, restart sshd, and confirm you can log in as the new user before closing the root session.
Install and arm a firewall before the panel opens its ports:
apt install -y ufw
ufw default deny incoming
ufw allow 22/tcp
ufw allow 25461/tcp
ufw enable
Port 25461 is the default client port. Do not open the admin port (25500 by default) to the world; reach it through an SSH tunnel or a VPN, or restrict it to your office IP with ufw allow from <ip> to any port 25500.
On Ubuntu 18.04 the installer expects Python 2 and a handful of libraries:
apt install -y libxslt1-dev libcurl3 libgeoip-dev python unzip e2fsprogs python-paramiko
On 20.04 and later libcurl3 no longer exists and Python 2 is not installed by default; community installers deal with this, which is exactly why they diverge from the original. Check the current release notes of the build you use.
Run the installer as root, choose MAIN, and wait. Copy the credentials it prints into your password manager now; the database password is not shown again.
Open http://<server-ip>:25500 through your tunnel. Log in with the printed credentials and, before anything else:
admin.On each streaming server, prepare the OS exactly as in step 1 (firewall included), run the installer, choose LB, and enter the main server IP and the key from Servers → Add Server. Back in the panel, the new server should appear online within a minute. If it stays offline, check that the load balancer can reach the main server on the client port and that the main server’s firewall allows the load balancer’s IP.
In the old forum thread a reader’s load balancer install hung for hours. The cause was a dead download mirror inside the installer. Expect this failure mode with abandoned software: the script is fine, the URL it fetches is gone.
Xtream UI predates the expectation that everything speaks HTTPS, and the bundled nginx is not managed by your distribution. You have two workable approaches:
/home/xtreamcodes/iptv_xtream_codes/nginx/conf/nginx.conf at your certificate files. You then have to renew and reload by hand or by a cron job you write yourself.Do not rely on the certbot package from the Ubuntu 18.04 archive. It is unmaintained and older ACME clients have broken before when Let’s Encrypt retired protocol versions and intermediate certificates. Use the snap package or a client on a current OS.
Dump the database nightly and ship it off the server:
mysqldump --single-transaction xtream_iptvpro | gzip > /var/backups/xtream-$(date +%F).sql.gz
Also archive /home/xtreamcodes/iptv_xtream_codes/ once after installation and after every configuration change; it holds the encoded config, the admin web root and your nginx edits. Test a restore on a scratch server at least once. If you later leave the platform, the uninstall guide explains how to remove it cleanly.
fail2ban or equivalent on SSH.Installing Xtream UI in 2026 is justified for a lab, for keeping a legacy business alive while you migrate, or for studying the API that most players still implement. It is hard to justify for a new service with paying customers. The maintained alternatives are XUI One, a paid panel from the same lineage that still targets current Ubuntu releases (see the XUI One installation guide), or a hosted panel where the operator does not own the servers at all. Our IPTVOS review covers that third model, including its limits. Whichever you choose, the time you spend hardening an abandoned stack is time you could spend on the business.
No. The last official releases (R21 stable, R22F early access) date from the 2020–2021 period and the project site went offline afterwards. Everything published since comes from third parties.
Not with the original installer. It targets Ubuntu 18.04 and its package names. Community installers exist for newer releases, but each one patches the panel differently, so check its notes and test on a disposable server first.
A series of community-modified Xtream UI builds that bundled fixes and extra features. They are unofficial, their origin cannot be verified, and we do not link them.
Usually not. The software is unmaintained, runs on an end-of-life OS and has a weak security record. Compare it with XUI One or a hosted panel before you commit.
The script itself runs for ten to thirty minutes depending on the server. Plan several hours for OS hardening, TLS and a working backup before you add a single stream.
Topicsxtream-uiinstallation
Guide· legacy
Install XUI One on a clean Ubuntu server: hardware and OS requirements, the install steps, first login, post-install hardening and the errors you will hit.
Guide· legacy
Remove Xtream UI from a main server or load balancer without losing data: what to back up and export, the uninstall steps, and the MariaDB and nginx clean-up.
Guide· legacy
How the Xtream UI panel works: main server and load balancers, streams, bouquets, lines, resellers, EPG, sizing, and where the unmaintained panel falls short.
Comments