Xtream UI (i jego forki, takie jak XUI.one) pozostaje najczęściej wdrażanym panelem IPTV, a czysta instalacja na świeżej maszynie z Ubuntu to miejsce, w którym większość operatorów napotyka problemy. Ten przewodnik przedstawia dokładne kroki, których nasz NOC używa do uruchomienia panelu na serwerze dedykowanym, od czystego systemu operacyjnego do działającego logowania administratora.

Będziemy celować w Ubuntu 22.04 LTS na maszynie z jednym procesorem — poziom Xeon E5-2690 v3 to solidny punkt wyjścia dla paneli obsługujących do ~15 tys. aktywnych linii.

Wymagania wstępne

  • Serwer dedykowany lub VPS z systemem Ubuntu 22.04 LTS (świeża instalacja, bez panelu sterowania)
  • Dostęp SSH z uprawnieniami root
  • Co najmniej 4 GB RAM (zalecane 8+ GB), 2 rdzenie CPU, 40 GB dysku
  • Domena lub subdomena wskazująca na adres IP serwera
Uwaga dotycząca legalności: Xtream UI hostuje i dystrybuuje strumienie, do których musisz posiadać prawa. Hostfory zezwala na hosting paneli IPTV, ale to Ty jesteś odpowiedzialny za licencjonowanie treści na swoich rynkach docelowych. Zobacz nasze AUP.

Krok 1 — Aktualizacja systemu bazowego

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

Ustaw zegar maszyny na UTC i obsługuj przesunięcie strefy czasowej w konfiguracji panelu — w ten sposób synchronizacja EPG zachowuje się bardziej przewidywalnie.

Krok 2 — Wyłączenie konfliktujących usług

Xtream UI dostarcza własne, załatane wersje nginx i MariaDB. Usuń wersje dystrybucyjne, aby nie walczyły o porty 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

Krok 3 — Ustawienie nazwy hosta i lokalizacji

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

Krok 4 — Uruchomienie instalatora

Po ponownym uruchomieniu połącz się ponownie, a następnie uruchom wybrany instalator Xtream UI / XUI.one:

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

Instalator kompiluje nginx + PHP, konfiguruje MariaDB i prosi o podanie nazwy użytkownika administratora, hasła oraz portu administratora (domyślnie 25500). Zapisz te dane — przewijają się one na końcu i nie ma łatwego sposobu na ich odzyskanie.

Krok 5 — Otwarcie zapory sieciowej

Na maszynie Hostfory zarządzasz zaporą sieciową samodzielnie:

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

Krok 6 — Pierwsze logowanie

http://panel.yourdomain.com:25500

Jeśli otrzymasz komunikat o odmowie połączenia:

systemctl status nginx_xui
netstat -tlnp | grep 25500

Krok 7 — Zabezpieczenie

Zmień port SSH i wyłącz uwierzytelnianie hasłem:

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

Ogranicz dostęp do portu administratora tylko do Twojego adresu IP, jeśli masz statyczny adres:

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

Włącz ochronę DDoS — panele są stale atakowane. W Hostfory jest ona domyślnie włączona, ale upewnij się, że Twój prawdziwy adres IP nie wycieka przez historię DNS.

Krok 8 — Sprawdzenie przepustowości

Szczytowy ruch wychodzący to w przybliżeniu active_lines × peak_concurrency × avg_bitrate × abr_multiplier. Dla panelu z 10 tys. linii przy 38% współbieżności, 5 Mbps, 1.25 ABR daje to około 24 Gbit/s — już powyżej pojedynczego portu 10G. Zobacz nasz przewodnik po doborze przepustowości i wybierz odpowiednią prędkość portu.

Rozwiązywanie problemów

  • Strumienie buforują, panel działa: przepustowość. Sprawdź iftop w szczycie; jeśli port jest nasycony, potrzebujesz większego uplinku.
  • Panel administracyjny 502: dołączony PHP-FPM przestał działać. systemctl restart php-fpm_xui (nazwa różni się w zależności od forka).
  • MariaDB nie uruchamia się po restarcie: uszkodzone ibdata po nieczystym zamknięciu. Sprawdź journalctl -u mariadb; być może będziesz potrzebować innodb_force_recovery=1 w my.cnf, aby go uruchomić i zrzucić dane.

Co dalej

Przenieś transkodowanie na serwer GPU z NVENC (zobacz nasz przewodnik FFmpeg NVENC), dodaj serwer pamięci masowej dla catch-up/VOD i umieść przed nim punkt brzegowy CDN. Jeśli Twoje wymagania dotyczące rozmiaru mieszczą się między naszymi poziomami, skontaktuj się z inżynierami.