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 UTCUstaw 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/nullKrok 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
rebootKrok 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.shInstalator 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 enableKrok 6 — Pierwsze logowanie
http://panel.yourdomain.com:25500Jeśli otrzymasz komunikat o odmowie połączenia:
systemctl status nginx_xui
netstat -tlnp | grep 25500Krok 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/tcpOgranicz 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 tcpWłą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ź
iftopw 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=1wmy.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.