Table of Contents
Why Installing XUI.ONE on Ubuntu 22.04 Is Not Plug & Play
XUI.ONE was written against Ubuntu 18.04 and is comfortable on 20.04. Ubuntu 22.04 (Jammy) drops three things the panel depends on:
- libssl1.1 (replaced by libssl3)
- Python 2 (removed from main repos)
- MariaDB 10.3 (22.04 ships 10.6, which has stricter SQL modes)
If you run the vanilla installer on a stock 22.04 box, it will either fail mid-install, produce a blank admin panel, or silently run without FFmpeg transcoding. This guide patches all three issues before you ever touch the installer.
Server Requirements for XUI.ONE on 22.04
- OS: Ubuntu 22.04 LTS (Jammy) - clean install, no cPanel or Plesk.
- CPU: 4 vCPU minimum.
- RAM: 8 GB minimum, 16 GB recommended for real traffic.
- Disk: 40 GB SSD.
- Access: Root SSH.
- Network: 1 Gbps uplink, a dedicated public IPv4, IPv6 optional.
1Update and Prepare Ubuntu 22.04
Log in as root, refresh the package lists, and install the standard tools:
Set your hostname and add it to /etc/hosts:
Disable ufw during install (you will re-enable it at the end):
2Install libssl1.1 (the PHP-FPM Killer Fix)
XUI.ONE bundles a PHP binary compiled against libssl1.1. Ubuntu 22.04 ships libssl3, which is not ABI compatible. Without this patch you get a blank page at :8080 and a symbol lookup error: /lib/...libssl.so.1.1: version `OPENSSL_1.1_1B' not found in the logs.
Install the legacy libssl1.1 package directly:
Verify the library is now available:
You should see both libssl.so.1.1 and libcrypto.so.1.1 listed.
3Install Python 2 (for the Legacy Installer Scripts)
Ubuntu 22.04 no longer ships Python 2 in its default repos. XUI.ONE's install helpers and some backup cron scripts still call python2. Add the Deadsnakes PPA and install it:
Create the python symlink that the legacy scripts expect:
You should see Python 2.7.x.
Install pip for Python 2 (needed for the GeoIP updater and some XUI.ONE helper tools):
4Install MariaDB on 22.04 (with Compatibility Mode)
MariaDB 10.6 on 22.04 has stricter defaults than what XUI.ONE was designed for. Install it and then open the compatibility flags.
Secure the install:
Now open 50-server.cnf and add the XUI.ONE-friendly tuning:
Under [mysqld] add:
sql-mode you will see Error 1067 (Invalid default value) during import.
Restart MariaDB and create the DB:
5Run the XUI.ONE Installer on 22.04
Now that the OS is prepared, the installer behaves.
When prompted:
- Installation type:
main - MySQL host:
127.0.0.1 - MySQL root password: the one you set in step 4
- Admin panel port:
8080(or custom) - Client port:
2086 - Timezone: your region
Installation usually completes in 6-10 minutes on 22.04. Do not close the terminal.
6Post-Install Patches Specific to 22.04
Patch 1: Force the Bundled PHP to Use libssl1.1
On some builds the XUI.ONE PHP still tries to dlopen libssl.so.3. Force the legacy library:
Patch 2: systemd Unit for XUI.ONE
The install script uses legacy /etc/rc.local which 22.04 does not run by default. Create a systemd unit:
Patch 3: File Descriptor Limits
Same as any XUI.ONE install, but on 22.04 you also need to set them in the systemd drop-in:
Patch 4: Replace the 22.04 GeoLite2 DB
The GeoIP DB shipped with XUI.ONE crashes on 22.04's updated libmaxminddb. Replace it:
Patch 5: Re-enable UFW
Troubleshooting XUI.ONE on 22.04
Blank page at /login
99 percent of the time this is libssl1.1. Confirm:
If it reports a symbol error, re-run step 2.
Error 1067 on database import
You forgot the non-strict SQL mode. Re-check 50-server.cnf, restart MariaDB, drop the DB and re-import.
FFmpeg: Segmentation fault
The bundled FFmpeg is linked against an old libx264. Install the distro FFmpeg and symlink it:
“Python: command not found” in cron log
Deadsnakes only installs python2, not python. Make sure you created the symlink in step 3:
Panel loads but streams show offline
Usually means PermitRootLogin is off and the panel cannot SSH to its own localhost for stream management. Either enable root SSH or set the panel to use a dedicated service user in Settings → General → SSH.
