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 UTCDefina 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/nullPasso 3 — Definir hostname e locale
hostnamectl set-hostname panel.yourdomain.com
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
rebootPasso 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.shO 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 enablePasso 6 — Primeiro login
http://panel.yourdomain.com:25500Se você receber 'conexão recusada':
systemctl status nginx_xui
netstat -tlnp | grep 25500Passo 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/tcpRestrinja 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 tcpAtive 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.