Serviço de Streaming doméstico

Tem gigabytes de vídeos preciosos gravados no seu iPhone, guardados num NAS (Network Attached Storage) ou num disco de rede? Em vez de os ver num ecrã pequeno ou de os ligar na TV, porque não criar o seu próprio serviço pessoal de streaming?

Este guia detalhado irá mostrar-lhe como usar um servidor de media central e um par de Raspberry Pis para criar um “Netflix” pessoal, robusto e acessível de qualquer lugar, focado em resiliência e num acesso externo unificado.

Enquadramento: O Básico de Streaming de Vídeo

Antes de mergulharmos na prática, vamos entender o que acontece nos bastidores.

  • Codecs vs. Contentores: Pense num codec (como H.264 ou H.265/HEVC, que o seu iPhone provavelmente usa) como a linguagem que comprime o vídeo para poupar espaço. Pense num contentor (como .MP4 ou .MOV) como a “caixa” que armazena o vídeo comprimido, o áudio e as legendas. O streaming envolve enviar esta “caixa” de forma eficiente.
  • Protocolos de Streaming: Não basta enviar o ficheiro. O streaming moderno usa protocolos que “partem” o vídeo em pequenos pedaços.
    • HLS (HTTP Live Streaming): Criado pela Apple, é o padrão de facto. Funciona sobre HTTP/S (a mesma tecnologia das páginas web), o que o torna fácil de gerir em firewalls. É ótimo para “streaming adaptativo”.
    • DASH (Dynamic Adaptive Streaming over HTTP): O concorrente “standard” do HLS.
    • Streaming Adaptativo (Adaptive Bitrate): Esta é a magia. O servidor deteta a velocidade da sua internet (ou a do seu amigo a aceder do exterior) e envia pedaços de vídeo de maior ou menor qualidade (ex: 4K, 1080p, 720p) em tempo real. Isto evita pausas (buffering).
  • Transcodificação (Transcoding): O seu iPhone grava em 4K HEVC, mas o seu Raspberry Pi (ou o seu telemóvel numa ligação 4G) pode não conseguir reproduzi-lo. Transcodificar é o processo de o servidor converter o vídeo “on-the-fly” (em tempo real) para um formato/qualidade que o cliente (o Pi) consiga suportar. Este é o processo que mais exige do seu servidor.

 A Arquitetura do Nosso Sistema

O nosso sistema terá três componentes principais:

  1. O Backend (O Cérebro): Onde os vídeos são armazenados e o software do servidor corre.
    • Software: Jellyfin (a minha recomendação por ser 100% open-source e gratuito) ou Plex (mais polido, mas com algumas funcionalidades pagas).
    • Hardware: O seu NAS (Synology, QNAP, etc.) ou um PC dedicado. Nota: Para transcodificação 4K, este servidor precisa de ser razoavelmente potente.
  2. Os Frontends (Os Clientes): Neste exemplo dois Raspberry Pis.
    • Estes são os dispositivos ligados às suas TVs. Eles não armazenam os vídeos; apenas recebem o stream do servidor.
    • Software: Kodi com o add-on Jellyfin, ou simplesmente um browser em modo quiosque.
  3. A Rede (A Cola): O que liga tudo e permite o acesso externo.
    • Acesso Externo: Um Reverse Proxy (Proxy Inverso) e Dynamic DNS (DDNS).
    • Resiliência: RAID para os dados, Docker para o serviço.

 Implementação: Passo a Passo

1. O Backend: Servidor Jellyfin e Resiliência de Dados

O seu ponto único de falha mais crítico é o armazenamento.

  • Resiliência de Dados (RAID): Configure o seu NAS para usar RAID 1 (espelhamento) ou RAID 5/6. Se um disco rígido falhar, os seus vídeos (e a base de dados do Jellyfin) não se perdem.
  • Instalação do Servidor (Jellyfin): A melhor forma de gerir o Jellyfin é usando Docker. Docker “contentoriza” a aplicação, tornando-a isolada, fácil de atualizar e de reiniciar.
    • Instale o Docker no seu NAS ou PC.
    • Use um ficheiro docker-compose.yml para lançar o Jellyfin. Aponte a pasta /media do contentor para a pasta no seu NAS onde estão os seus vídeos do iPhone.
  • Resiliência do Serviço (Docker): No seu docker-compose.yml, adicione a linha: restart: always.
    Isto é crucial: Se o serviço Jellyfin falhar ou o servidor reiniciar, o Docker irá automaticamente reiniciar o serviço Jellyfin. Esta é a sua “resiliência de serviço” a nível de software.
  • Configuração: Aceda à interface web do Jellyfin, crie um utilizador e adicione as suas bibliotecas de media (apontando para os seus vídeos).

2. O Frontend: Configurar os clientes com Raspberry Pi

Cada Raspberry Pi liga-se a uma televisão, num ponto da casa onde pretenda aceder ao serviço.

Configuração para cada Pi:

  1. Instale o OS: Use o Raspberry Pi OS Lite (para ser leve) ou uma distribuição focada em media como LibreELEC (que corre Kodi diretamente).
  2. Instale o Cliente (Recomendado): Instale o Kodi.
  3. Instale o Add-on: Dentro do Kodi, vá ao repositório de add-ons e instale o Jellyfin for Kodi.
  4. Conecte: Configure o add-on com o endereço IP interno do seu servidor Jellyfin (ex: 192.168.1.100).
  5. Repita: Faça exatamente o mesmo no segundo Pi.

Agora, ambos os Pis têm acesso à sua biblioteca e sincronizam o progresso (se começar um filme na sala, pode terminá-lo no quarto).

3. O Acesso do exterior: O “IP Único” Seguro

Aqui está a parte mais complexa e crucial para a segurança. Nunca exponha o seu servidor Jellyfin diretamente à internet.

O seu “IP único” não será um IP (porque o seu IP de casa muda), mas sim um nome de domínio (hostname).

  1. Dynamic DNS (DDNS):
    • O seu router tem um IP público (ex: 80.10.20.30) que o seu ISP lhe atribui, mas este muda (é dinâmico).
    • Crie uma conta num serviço de DDNS gratuito como o DuckDNS ou No-IP.
    • Isto dar-lhe-á um nome fixo, como omeustreaming.duckdns.org.
    • Configure o seu router (ou um script no seu servidor) para “avisar” o DuckDNS sempre que o seu IP mudar. Agora, omeustreaming.duckdns.org apontará sempre para a sua casa.
  2. Reverse Proxy (O Porteiro Seguro):
    • Um Reverse Proxy fica “à frente” do seu serviço Jellyfin. Ele recebe todo o tráfego da internet e encaminha-o para o serviço correto.
    • Software: Use o Nginx Proxy Manager (NPM). É a ferramenta mais fácil para isto e também corre em Docker.
    • Benefício Principal (HTTPS): O NPM irá automaticamente obter e renovar certificados SSL (Let’s Encrypt) para o seu domínio (omeustreaming.duckdns.org). Isto significa que toda a sua ligação externa será encriptada (HTTPS), tal como um banco ou o Netflix.
  3. Configuração do Router (Port Forwarding):
    • No seu router, não abra a porta do Jellyfin (ex: 8096).
    • Abra apenas as portas 80 (para HTTP) e 443 (para HTTPS).
    • Encaminhe (Port Forward) estas duas portas para o endereço IP interno do servidor que está a correr o Nginx Proxy Manager.

O Fluxo de Acesso Externo será: Internet -> omeustreaming.duckdns.org -> Router (Porta 443) -> Nginx Proxy Manager -> (com SSL) -> Servidor Jellyfin (interno)

Resumo da Solução

  • Armazenamento: NAS com RAID 1 ou superior para resiliência de dados.
  • Servidor: Jellyfin a correr em Docker com restart: always para resiliência de serviço.
  • Clientes: Dois (ou mais) Raspberry Pi a correr Kodi com o add-on Jellyfin, atuando como frontends independentes.
  • Acesso Externo: Um DDNS (ex: DuckDNS) para lhe dar um nome de anfitrião fixo (o seu “IP único”).
  • Segurança: Um Nginx Proxy Manager a correr em Docker para gerir o tráfego de entrada, fornecer HTTPS (SSL) e atuar como reverse proxy.
  • Router: Apenas as portas 80 e 443 estão abertas, apontadas para o Nginx Proxy Manager.

Com esta configuração, terá um serviço de streaming de vídeo robusto, seguro e acessível tanto em casa (nos seus Pis) como no exterior (através do seu telemóvel ou portátil), usando um único endereço web seguro.

Pedro Coelho

Deixe um comentário