Xtream UI (e seus forks como XUI.one) continua sendo o painel IPTV mais amplamente implantado, e conseguir uma instalação limpa em uma máquina Ubuntu nova é onde a maioria dos operadores encontra dificuldades. Este guia descreve os passos exatos que nosso NOC usa para configurar um painel em um servidor dedicado, desde um sistema operacional básico até um login de administrador funcional.

Nosso alvo será o Ubuntu 22.04 LTS em uma máquina com uma única CPU — o tier Xeon E5-2690 v3 é um excelente ponto de partida para painéis com até ~15 mil linhas ativas.

Pré-requisitos

  • Um servidor dedicado ou VPS executando Ubuntu 22.04 LTS (instalação nova, sem painel de controle)
  • Acesso SSH root
  • Pelo menos 4 GB de RAM (8+ GB recomendado), 2 núcleos de CPU, 40 GB de disco
  • Um domínio ou subdomínio apontado para o IP do servidor
Uma nota sobre legalidade: Xtream UI hospeda e distribui streams para os quais você deve ter os direitos. A Hostfory permite a hospedagem de painéis IPTV, mas você é responsável pelo licenciamento do conteúdo em seus mercados-alvo. Consulte nossa AUP.

Passo 1 — Atualizar o sistema base

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

Defina o relógio da máquina para UTC e gerencie o deslocamento de fuso horário na configuração do painel — o tempo do EPG se comporta de forma mais previsível assim.

Passo 2 — Desativar serviços conflitantes

Xtream UI vem com seu próprio nginx e MariaDB corrigidos. Remova as versões da distribuição para que não haja conflito pelas portas 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

Passo 3 — Definir hostname e locale

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

Passo 4 — Executar o instalador

Reconecte após a reinicialização e, em seguida, execute o instalador Xtream UI / XUI.one escolhido:

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

O instalador compila nginx + PHP, configura o MariaDB e solicita um nome de usuário de administrador, senha e porta de administrador (padrão 25500). Anote-os — eles passam rapidamente no final sem recuperação fácil.

Passo 5 — Abrir o firewall

Em uma máquina Hostfory, você gerencia o firewall por conta própria:

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 25500/tcp     # painel de administração — use SUA porta
ufw allow 8000:8100/tcp # faixa de portas de streaming
ufw --force enable

Passo 6 — Primeiro login

http://panel.yourdomain.com:25500

Se você receber 'conexão recusada':

systemctl status nginx_xui
netstat -tlnp | grep 25500

Passo 7 — Proteger o sistema

Altere a porta SSH e desative a autenticação por senha:

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

Restrinja a porta de administração ao seu próprio IP se você tiver um endereço estático:

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

Ative a proteção DDoS — painéis são constantemente atacados. Na Hostfory, ela está ativada por padrão, mas certifique-se de que seu IP real não esteja vazando através do histórico de DNS.

Passo 8 — Verificação de dimensionamento de largura de banda

O pico de saída é aproximadamente active_lines × peak_concurrency × avg_bitrate × abr_multiplier. Para um painel de 10 mil linhas com 38% de concorrência, 5 Mbps, 1.25 ABR, isso é ~24 Gbit/s — já ultrapassando uma única porta de 10G. Consulte nosso guia de dimensionamento de largura de banda e escolha a velocidade de porta correta.

Solução de problemas

Streams com buffer, painel funcionando: largura de banda. Verifique iftop durante o pico; se a porta estiver saturada, você precisa de um uplink maior.

Painel de administração 502: PHP-FPM empacotado parou de funcionar. systemctl restart php-fpm_xui (o nome varia por fork).

MariaDB não inicia após a reinicialização: ibdata corrompido após desligamento incorreto. Verifique journalctl -u mariadb; você pode precisar de innodb_force_recovery=1 em my.cnf para iniciá-lo e despejar os dados.

Próximos passos

Mova a transcodificação para um servidor GPU com NVENC (consulte nosso guia FFmpeg NVENC), adicione um servidor de armazenamento para catch-up/VOD e coloque um CDN edge na frente. Se o seu dimensionamento estiver entre nossos tiers, fale com a engenharia.