Why NextWhy Next
Voltar à lista
💻 Dev3 min de leitura

Self-hosting num mini PC com Docker + Cloudflare Tunnel

Como expor vários serviços web com segurança usando um único mini PC em casa. HTTPS via Cloudflare Tunnel sem abrir portas, e tudo rodando com Docker Compose.

Resumo

Suba os serviços com Docker Compose no mini PC e conecte domínio e HTTPS com o Cloudflare Tunnel (cloudflared), sem abrir nenhuma porta. Não precisa configurar o roteador, nem de IP fixo, nem de renovação de certificado.

Nesta página

A conta da nuvem pesa mais do que parece para projetos pequenos. Eu rodo alguns serviços, incluindo este blog, num único mini PC aqui de casa. Vou compartilhar como.

Por que um mini PC

  • Fica sempre ligado, e a conta de luz é de alguns trocados por mês
  • Com Docker, o ambiente de deploy é idêntico ao da nuvem
  • Se o tráfego crescer, é só migrar quando chegar a hora

O problema é um só: "como expor a rede de casa para fora com segurança".

Não abra portas

O jeito tradicional é port forwarding no roteador + DDNS + renovação de certificado. É trabalhoso e perigoso, porque na prática você abre a sua rede doméstica direto para a internet.

Em vez disso, use o Cloudflare Tunnel. No mini PC, o cloudflared abre uma conexão de dentro para fora com a Cloudflare, e o tráfego entra por esse túnel. O número de portas de entrada abertas para o mundo é 0.

사용자 → Cloudflare(HTTPS) → 터널 → 미니 PC 의 컨테이너
  • Não precisa de IP público nem de port forwarding
  • O certificado HTTPS é gerenciado automaticamente pela Cloudflare
  • IP dinâmico não faz diferença nenhuma

Agrupando serviços com Docker Compose

Cada serviço sobe como um container. Se for um app Next.js, faça o build com output: "standalone" para gerar uma imagem leve.

services:
  blog:
    build:
      context: .
      dockerfile: apps/blog/Dockerfile
    container_name: why-next-blog
    restart: unless-stopped
    networks: [api]

networks:
  api:
    external: true   # cloudflared 와 같은 네트워크

O ponto principal é colocar tudo na mesma rede Docker do cloudflared. É assim que o túnel encontra o serviço pelo nome do container.

Conectando o domínio

No dashboard da Cloudflare (ou na configuração do túnel), adicione um Public Hostname.

blog.example.com  →  http://why-next-blog:3001

E é isso. Rode docker compose up -d --build e, alguns minutos depois, o site abre no seu domínio.

Resumo

  • Mini PC + Docker = deploy barato e idêntico ao da nuvem
  • Cloudflare Tunnel traz HTTPS e domínio sem abrir portas
  • Coloque os containers na mesma rede do cloudflared
  • Mapeie domínio → container:porta com Public Hostname

Para serviços pequenos, essa combinação aguenta por muito tempo. É assim que eu rodo vários apps e vou expandindo as coisas que eu criei.

Perguntas frequentes

Meu IP residencial é dinâmico, tem problema?

Nenhum problema. No Cloudflare Tunnel é o mini PC que abre a conexão de saída para a Cloudflare, então IP público, port forwarding e DDNS são totalmente desnecessários.

Tem algum custo?

O Cloudflare Tunnel em si é gratuito. Só com o custo do domínio você já consegue começar.

Artigos relacionados