Table of Contents
- What Is XUI.ONE?
- Before You Start: Requirements
- Step 1 - Prepare Your Server
- Step 2 - Install MariaDB & Create the Database
- Step 3 - Run the XUI.ONE Installer
- Step 4 - First Login & Initial Setup
- Step 5 - Post-Install Fixes (Essential)
- Common Installation Errors & Fixes
- XUI.ONE Limitations You Should Know
- Frequently Asked Questions
What Is XUI.ONE and Why Is Everyone Searching for It?
XUI.ONE is a free, continued fork of the original Xtream UI project, which itself was a community rebuild of the legendary Xtream Codes panel after its 2019 takedown. If you have landed here searching for “how to install XUI.ONE”, “XUI panel install”, or “XUI one ubuntu setup”, you are in the right place.
XUI.ONE gives small IPTV operators a starting point with a web-based admin dashboard, MAG emulation, HLS/RTMP output, a reseller system, and built-in transcoding through FFmpeg. It is popular because it is free and feature-rich on paper. But like every free panel, it comes with caveats that we will cover at the end of this guide.
Before You Start: Server Requirements for XUI.ONE
XUI.ONE is not a lightweight piece of software. Even an empty panel with no streams added consumes noticeable RAM due to PHP-FPM workers and its DB schema. Minimum specs we recommend:
- Operating System: Ubuntu 20.04 LTS (recommended), Ubuntu 22.04 is possible with workarounds.
- CPU: 4 vCPU minimum for a small panel; 8+ vCPU for anything past 100 concurrent users.
- RAM: 8 GB minimum, 16 GB is the realistic starting point for production.
- Disk: 40 GB SSD, 100 GB+ if you plan to run VOD.
- Network: 1 Gbps port (10 Gbps for resellers with 500+ concurrent lines).
- Access: A clean root SSH session. XUI.ONE will not install cleanly alongside cPanel, Plesk, or an existing LAMP stack.
1Prepare Your Server
Log in to your server as root over SSH. If your provider gave you a non-root user, switch to root first:
Update the package index and install the basic tools the installer needs:
Set a proper hostname (some XUI.ONE scripts misbehave with the default cloud hostname):
Disable ufw during installation (you will re-enable it afterwards):
Reboot once to make sure kernel updates are applied:
2Install MariaDB & Create the Database
XUI.ONE uses MariaDB (a drop-in MySQL replacement). Install the stable version:
Run the secure installation wizard and answer the prompts:
- Enter current root password: press Enter (none yet).
- Switch to unix_socket authentication: N.
- Change root password: Y → enter a strong password and save it somewhere safe.
- Remove anonymous users: Y.
- Disallow remote root login: Y.
- Remove test database: Y.
- Reload privilege tables: Y.
Create the XUI.ONE database and its user:
Open the MariaDB config and allow larger packets (XUI.ONE ships large migration files):
Under the [mysqld] section add or update these lines:
Save and restart MariaDB:
3Run the XUI.ONE Installer
XUI.ONE is distributed via a shell installer. Grab the current copy and run it:
The installer will prompt you for:
- Installation type → choose
mainfor the primary admin panel. Pickload_balanceronly if this server will only receive streams. - MySQL host →
127.0.0.1. - MySQL root password → the one you set in step 2.
- Admin panel port → default
8080is fine (or change for security). - Client port → default
2086for the HLS/HTTP output. - Time zone → set to your country (
Europe/London,America/New_York, etc.).
The installer downloads FFmpeg, Nginx, PHP, the web UI, and seeds the database. On an average VPS expect this to take 5 to 10 minutes. Do not close the SSH session during this step.
4First Login & Initial Setup
When the installer finishes, it prints your URLs. Open them in a browser:
The default credentials are:
- Username:
admin - Password:
admin
Once in, walk through these initial settings:
- Settings → General: Set your panel name, default language, and timezone.
- Settings → Servers: Verify the main server appears with the correct public IP.
- Settings → Transcoding profiles: Disable any profile you are not using to save CPU.
- Management → Packages: Create at least one user package before you onboard any customers.
5Post-Install Fixes (Essential)
Fresh XUI.ONE installs ship with a few rough edges that will bite you in production. Apply these fixes now, not later.
Fix 1: File Descriptor Limits
XUI.ONE opens one file descriptor per stream. The default Ubuntu limit (1024) caps you around 300 concurrent users.
Add at the end:
Also edit /etc/systemd/system.conf and /etc/systemd/user.conf and set:
Reboot for the change to take effect.
Fix 2: TCP Tuning for High Concurrency
Append:
Apply:
Fix 3: PHP-FPM Workers
XUI.ONE uses a bundled PHP-FPM in /home/xui/content/php/etc/php-fpm.conf. Open it and increase pool size:
Fix 4: Enable UFW with the Right Ports
Fix 5: Daily Database Backup Cron
Common XUI.ONE Installation Errors & Fixes
“Port 8080 is already in use”
Another service (Apache, Tomcat, a leftover Nginx) is bound to 8080. Identify it and stop it:
“Cannot connect to MySQL”
Either MariaDB is not running or the root password was entered incorrectly. Verify:
“FFmpeg: command not found” after install
The bundled FFmpeg did not link. Install the distro version as a fallback:
“Blank white page on first login”
Almost always a PHP-FPM crash. Check the XUI.ONE PHP log:
The most common cause is missing php-mcrypt or an incompatible libssl. On 22.04+ install the compatibility package:
“Streams show offline but FFmpeg is running”
The classic GeoIP breakage. Reinstall the MMDB file:
XUI.ONE Limitations You Should Know Before Going Live
At this point your XUI.ONE server is up, secured, and tuned. This is a good result. But before you onboard paying customers, here is the unvarnished truth about what XUI.ONE cannot do:
- No active security development. Patches arrive unpredictably. Several CVE-class issues in its embedded Nginx and PHP-FPM remain unfixed.
- No built-in DDoS protection. Layer 7 floods against
/c/and/live/endpoints can take the entire panel down within seconds. - No DRM. If you plan to restream premium MPD/DASH content with Widevine keys, XUI.ONE has no key pipeline, no named-pipe handling, no license rotation.
- Weak anti-sharing. The default “Max Connections” field is trivially defeated by shared accounts. There is no device binding, no ActiveCode, no fingerprinting.
- Single point of failure. Without a built-in load balancer orchestrator and encrypted cloud backup, a dead server means a dead service.
- Memory leaks. On a 16 GB server under real load, RAM typically climbs until an OOM kill restarts PHP-FPM. See our dedicated XUI.ONE memory leak fix.
- CPU spikes. Transcoding through the bundled FFmpeg profiles is not optimized. See our XUI.ONE high CPU fix.
None of this makes XUI.ONE useless — it is a perfectly reasonable lab panel to learn IPTV operations on. It stops being reasonable the moment you depend on it for income.
