DEV Community

Matheus Torres
Matheus Torres

Posted on

Criando um Servidor de Streaming 24/7: Parte 1 - Infraestrutura Inicial

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

📌 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)