Projetos
O que eu já construí: homelab com 39 serviços e zero porta aberta, um servidor que virou console de sala, e este site.
Cada projeto aqui tem o mesmo esqueleto: qual era o problema, o que eu fiz, com o que fiz, e o que deu para medir depois. Se não der para verificar, não entra.
Homelab: 39 serviços, zero porta aberta
O problema. Rodar dezenas de serviços em casa (automação, banco de dados, mídia, ferramentas de análise) e alcançá-los de fora sem transformar a rede doméstica em superfície de ataque.
O que eu fiz. Montei um servidor Ubuntu com todos os serviços em stacks Docker separadas, cada uma versionada e ligável de forma independente. A exposição para a internet é feita por túnel de saída da Cloudflare, com um proxy reverso na frente para roteamento e TLS.
O resultado. Nenhuma porta encaminhada no roteador, inclusive SSH fica fechado para fora. O IP residencial nunca aparece: todo o tráfego chega pela borda da Cloudflare. Serviços novos entram em minutos, porque o padrão já está pronto.
Stack. Ubuntu 24.04, Docker Compose, Cloudflare Tunnel, Nginx Proxy Manager, n8n.
Um servidor que virou console de sala
O problema. A GPU boa estava no servidor, no escritório. A TV boa estava na sala. Comprar um segundo PC para jogar na sala seria gastar caro para duplicar hardware que já existia ocioso.
O que eu fiz. Transformei o servidor em host de jogos com streaming de baixa latência para a TV, usando a GPU dedicada dentro de container e um cliente leve na sala.
O resultado. Jogo na TV com a placa que já estava paga, sem hardware novo. E três problemas específicos resolvidos no caminho, que renderam o artigo abaixo.
Stack. Wolf (Games on Whales), NVIDIA RTX 3080, Proton, Docker com passagem de GPU.
Este site
O problema. Eu precisava de um lugar meu para publicar, com newsletter, comentários e área de membros, sem alugar plataforma e sem depender de ninguém para mexer.
O que eu fiz. Subi o Ghost como mais uma stack Docker no meu servidor, com banco isolado do meu outro site, roteado pelo mesmo túnel Cloudflare que já existia. O container não publica nenhuma porta no host: o proxy chega nele pela rede interna do Docker.
O detalhe que interessa a quem trabalha com mídia. O redirecionamento de www para o domínio raiz preserva a query string. Parece bobagem até você perceber que, sem isso, todo clique que chega em www com UTM entra no seu analytics como tráfego direto. É o tipo de erro silencioso que faz relatório mentir por meses.
Stack. Ghost 6, MySQL 8, Docker Compose, Cloudflare Tunnel, regra de redirecionamento na borda.