Xtream UI (et ses forks comme XUI.one) reste le panneau IPTV le plus largement déployé, et obtenir une installation propre sur une machine Ubuntu fraîche est là où la plupart des opérateurs trébuchent. Ce guide décrit les étapes exactes que notre NOC utilise pour mettre en place un panneau sur un serveur dédié, d'un OS nu à une connexion administrateur fonctionnelle.

Nous ciblerons Ubuntu 22.04 LTS sur une machine à un seul CPU — le niveau Xeon E5-2690 v3 est un excellent point de départ pour des panneaux allant jusqu'à environ 15 000 lignes actives.

Prérequis

  • Un serveur dédié ou VPS exécutant Ubuntu 22.04 LTS (installation fraîche, sans panneau de contrôle)
  • Accès SSH root
  • Au moins 4 Go de RAM (8+ Go recommandés), 2 cœurs de CPU, 40 Go de disque
  • Un domaine ou sous-domaine pointant vers l'IP du serveur
Note sur la légalité : Xtream UI héberge et distribue des flux pour lesquels vous devez détenir les droits. Hostfory autorise l'hébergement de panneaux IPTV, mais vous êtes responsable de l'octroi de licences de contenu sur vos marchés cibles. Consultez notre AUP.

Étape 1 — Mettre à jour le système de base

apt update && apt upgrade -y
apt install -y wget curl unzip nano net-tools
timedatectl set-timezone UTC

Réglez l'horloge de la machine sur UTC et gérez le décalage horaire dans la configuration du panneau — le timing EPG se comporte de manière plus prévisible de cette façon.

Étape 2 — Désactiver les services conflictuels

Xtream UI livre ses propres versions patchées de nginx et MariaDB. Supprimez les versions de la distribution afin qu'elles ne se disputent pas les ports 80/3306 :

systemctl stop apache2 mysql nginx 2>/dev/null
systemctl disable apache2 mysql nginx 2>/dev/null
apt remove -y apache2 mysql-server nginx 2>/dev/null

Étape 3 — Définir le nom d'hôte et la locale

hostnamectl set-hostname panel.yourdomain.com
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
reboot

Étape 4 — Exécuter l'installateur

Reconnectez-vous après le redémarrage, puis exécutez l'installateur Xtream UI / XUI.one de votre choix :

cd /root
wget -O install.sh "https://your-panel-source/install"
chmod +x install.sh
./install.sh

L'installateur compile nginx + PHP, configure MariaDB et vous demande un nom d'utilisateur administrateur, un mot de passe et un port administrateur (par défaut 25500). Notez-les — ils défilent à la fin sans possibilité de récupération facile.

Étape 5 — Ouvrir le pare-feu

Sur une machine Hostfory, vous gérez le pare-feu vous-même :

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 25500/tcp     # admin panel — use YOUR port
ufw allow 8000:8100/tcp # streaming port range
ufw --force enable

Étape 6 — Première connexion

http://panel.yourdomain.com:25500

Si vous obtenez une connexion refusée :

systemctl status nginx_xui
netstat -tlnp | grep 25500

Étape 7 — Sécuriser le système

Changez le port SSH et désactivez l'authentification par mot de passe :

nano /etc/ssh/sshd_config
# Port 2222
# PasswordAuthentication no
# PermitRootLogin prohibit-password
systemctl restart ssh
ufw allow 2222/tcp && ufw delete allow 22/tcp

Restreignez le port administrateur à votre propre IP si vous avez une adresse statique :

ufw delete allow 25500/tcp
ufw allow from YOUR.HOME.IP to any port 25500 proto tcp

Activez la protection DDoS — les panneaux sont constamment attaqués. Sur Hostfory, elle est activée par défaut, mais assurez-vous que votre véritable IP ne fuit pas via l'historique DNS.

Étape 8 — Vérification du dimensionnement de la bande passante

Le débit de sortie maximal est approximativement active_lines × peak_concurrency × avg_bitrate × abr_multiplier. Pour un panneau de 10 000 lignes avec 38 % de concurrence, 5 Mbps, 1,25 ABR, cela représente environ 24 Gbit/s — déjà au-delà d'un seul port 10G. Consultez notre guide de dimensionnement de la bande passante et choisissez la bonne vitesse de port.

Dépannage

Les flux mettent en mémoire tampon, le panneau fonctionne : bande passante. Vérifiez iftop pendant les pics ; si le port est saturé, vous avez besoin d'une liaison montante plus importante.

Panneau d'administration 502 : le PHP-FPM intégré est mort. systemctl restart php-fpm_xui (le nom varie selon le fork).

MariaDB ne démarre pas après un redémarrage : données ibdata corrompues après un arrêt incorrect. Vérifiez journalctl -u mariadb ; vous pourriez avoir besoin de innodb_force_recovery=1 dans my.cnf pour le démarrer et vider les données.

Prochaines étapes

Déplacez le transcodage vers un serveur GPU avec NVENC (consultez notre guide FFmpeg NVENC), ajoutez un serveur de stockage pour le rattrapage/VOD, et placez un CDN edge en amont. Si votre dimensionnement se situe entre nos niveaux, parlez à l'ingénierie.