Criando um Servidor de Streaming 24/7: Parte 1 - Infraestrutura Inicial
Este é o primeiro post de uma série sobre como criei, passo a passo, um servidor completo de streaming 24/7, usando FFPlayout, MediaMTX e Nginx. Além da parte técnica, compartilho também os desafios reais e aprendizados que surgiram durante o processo.
🚩 A ideia inicial e escolha da VPS
Tudo começou com uma tarefa aparentemente simples: colocar no ar um canal de TV online para transmitir conteúdos pré-gravados e eventualmente fazer transmissões ao vivo. Eu já tinha experiência com edição de vídeos e conhecia o básico do FFPlayout, mas nunca havia montado um servidor completo, muito menos configurado um serviço de streaming do zero.
Meu primeiro grande desafio foi escolher a infraestrutura. Inicialmente testei algumas opções na AWS, mas logo percebi que o custo para manter portas abertas e garantir performance ficaria acima do meu orçamento inicial.
Depois de pesquisar bastante, encontrei uma opção acessível na Contabo com as seguintes especificações:
- 6 vCPUs
- 12 GB RAM
- 500 GB SSD
Era exatamente o que eu precisava para ter liberdade de experimentar sem me preocupar com custos inesperados.
🔥 Desbravando o Ubuntu
Instalei o Ubuntu Server 22.04 LTS e parti para a configuração inicial, que envolveu abrir portas específicas no firewall:
sudo ufw allow 1935/tcp # RTMP
sudo ufw allow 8888/tcp # HLS
sudo ufw allow 8890/udp # SRT
sudo ufw enable
Essas portas seriam essenciais para o funcionamento dos protocolos que eu pretendia usar (RTMP, HLS e SRT).
Aprendi também a usar systemd
para criar serviços que mantivessem meus aplicativos rodando automaticamente após reinicializações do servidor. Foi uma experiência nova e, de certa forma, assustadora lidar com arquivos de serviço e permissões pela primeira vez.
Exemplo básico da criação do serviço para o MediaMTX:
[Unit]
Description=MediaMTX Streaming Server
After=network.target
[Service]
User=stream
ExecStart=/usr/local/bin/mediamtx /etc/mediamtx/mediamtx.yml
Restart=always
[Install]
WantedBy=multi-user.target
📌 Primeiros aprendizados
Cada pequeno erro gerava um aprendizado, e cada vitória, uma celebração pessoal. Rapidamente percebi que escolher o provedor certo (no meu caso, a Contabo) fez toda a diferença no quanto eu pude explorar e aprender sem barreiras.
Essa primeira fase, apesar de ser apenas a fundação, foi crucial para tudo o que veio a seguir.
No próximo post, conto como enfrentei o desafio do MediaMTX, incluindo problemas complicados com YAML e configurações padrão que quase sabotaram todo o projeto.
Top comments (0)