
Downtime é uma Oportunidade: Domínios Personalizados, Cloudflare e MCP
Você sabe como é no desenvolvimento de IA — às vezes você fica preso assistindo as barras de progresso avançarem lentamente. Eu estive me preparando para a próxima edição da série Local Model Showdown, e isso significa baixar alguns modelos pesados. O Kimi K2.6 decidiu levar seu tempo. Estamos falando de horas.
Mas aqui está a questão: o tempo de inatividade é realmente apenas uma oportunidade disfarçada. Em vez de assistir as porcentagens subirem, eu eliminei três itens da lista de pendências que estavam me incomodando há uma semana. Tudo feito de forma conversacional através de Coder Agents, naturalmente.
A lista de tarefas:
- Colocar minha instância do Coder auto-hospedada atrás de um domínio real
- Fortalecer a configuração do Cloudflare (e descobrir uma armadilha que todo criador de conteúdo precisa saber)
- Conectar servidores MCP para dar superpoderes aos meus agentes
O Objetivo: coder.vibescoder.dev
Minha instância do Coder estava rodando na minha estação de trabalho Ubuntu em casa, acessível através de uma URL de túnel try.coder.app — funcional, mas feia, difícil de lembrar e não exatamente alinhada à marca. Eu comprei vibescoder.dev para o blog. Hora de usar coder.vibescoder.dev para o ambiente de desenvolvimento.
Parece simples. Não era.
Tentativa 1: Registros CNAME (A Abordagem Ingênua)
A primeira ação foi direta — adicionar registros CNAME na gestão de DNS do Vercel (já que comprei o domínio através do Vercel) apontando o subdomínio coder para a URL do túnel existente.
Armadilha #1: O formulário de DNS do Vercel tem como padrão o tipo de registro "A" (que espera um endereço IPv4). Passei um minuto confuso com o erro "o valor deve corresponder ao formato ipv4" antes de perceber que precisava mudar o dropdown de Tipo para "CNAME." Pequena coisa, mas vai te atrapalhar se você não estiver prestando atenção nos padrões do formulário.
O formulário de DNS do Vercel tem como padrão um registro A — mude o tipo para CNAME ou você receberá este erro pouco útil.
Então fui atualizar a URL de Acesso no painel do Coder. Implantação → Geral → URL de Acesso. Está bem ali na tela... e é somente leitura. A interface mostra o valor, mas não pode mudá-lo. Os badges embaixo contam a história: CLI --access-url, ENV CODER_ACCESS_URL, YAML accessURL. Configuração do servidor apenas.
Como o Coder roda via systemd na minha casa, a configuração está em /etc/coder.d/coder.env. Mas antes que eu pudesse atualizá-la, precisava resolver o problema maior: fazer o tráfego da internet chegar até minha máquina.
Tentativa 2: Encaminhamento de Porta (O Desvio Frustrante)
Para que uma abordagem baseada em CNAME funcione, meu homelab precisa ser acessível da internet nas portas 80 e 443. Isso significa encaminhamento de porta no roteador — um TP-Link Archer BE800.
O aplicativo do roteador não expõe o encaminhamento de porta. O aplicativo Tether para iPhone tem um menu "Mais" com várias configurações, mas o Encaminhamento NAT não está lá. Tive que usar a interface web em 192.168.0.1 em vez disso. Encontrei isso em Avançado → Encaminhamento NAT → Encaminhamento de Porta.
Configurei as regras: portas 80 e 443, TCP, encaminhadas para o IP interno da minha máquina (192.168.0.243). Então testei com um simples servidor HTTP em Python:
sudo python3 -c "from http.server import HTTPServer, SimpleHTTPRequestHandler; HTTPServer(('0.0.0.0', 443), SimpleHTTPRequestHandler).handle_request()"
O curl local funcionou. Solicitações externas para meu IP público? "Conexão recusada." Não um tempo limite — recusada. Tentei portas não padrão também. Mesmo resultado.
A diagnose: "Conexão recusada" de fora enquanto "funciona localmente" significa que o tráfego está chegando ao IP público, mas está sendo ativamente rejeitado antes de atingir a máquina. O ISP provavelmente está bloqueando conexões de entrada ou há uma camada NAT além do roteador. Um tempo limite significaria que os pacotes estão sendo descartados. Recusada significa que algo está dizendo "não."
Gastei mais tempo nisso do que gostaria de admitir. Hora do Plano B.
A Solução: Túnel Cloudflare
O Túnel Cloudflare inverte completamente o modelo. Em vez de abrir portas de entrada, ele cria uma conexão de saída da sua máquina para a borda do Cloudflare. Sem encaminhamento de porta. Sem configuração de roteador. Sem exposição de IP público. E é grátis.
Passo 1: Mover Servidores de Nomes
Como eu precisava que o Cloudflare gerenciasse o DNS para vibescoder.dev, eu:
- Criei uma conta gratuita no Cloudflare
- Adicionei
vibescoder.devcomo um site - Deixei ele importar automaticamente meus registros DNS existentes (registros A do Vercel, registros CAA, tudo)
- Selecionei o plano gratuito
- Atualizei os servidores de nomes no Vercel (o registrador) para apontar para os servidores de nomes do Cloudflare
O blog continua funcionando — o Cloudflare importou todos os registros existentes, então vibescoder.dev ainda direciona para os servidores do Vercel.
O Cloudflare importa automaticamente seus registros DNS existentes — o blog continua funcionando enquanto você configura o túnel.
Passo 2: Criar o Túnel
No computador do homelab:
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb
cloudflared tunnel login
cloudflared tunnel create coder-tunnel
Após cloudflared tunnel login, o navegador confirma que o certificado está instalado e você está autorizado.
Arquivo de configuração em ~/.cloudflared/config.yml:
tunnel: a1b2c3d4-e5f6-7890-abcd-ef1234567890
credentials-file: /home/youruser/.cloudflared/a1b2c3d4-e5f6-7890-abcd-ef1234567890.json
ingress:
- hostname: coder.vibescoder.dev
service: http://localhost:3000
- hostname: "*.coder.vibescoder.dev"
service: http://localhost:3000
- service: http_status:404
A entrada wildcard lida com o proxy da aplicação do Coder — encaminhamento de porta, terminais web e aplicativos de espaço de trabalho usam todos subdomínios como 8080--main--ws--user--coder.vibescoder.dev.
Passo 3: Conectar DNS e Coder
Empresas brasileiras podem se beneficiar ao entender como gerenciar suas infraestruturas de TI de forma mais eficiente. O uso de soluções como Cloudflare pode melhorar a segurança e a acessibilidade de serviços online. Além disso, a integração com protocolos MCP pode otimizar o desempenho de aplicações baseadas em IA.
Noticias relacionadas

O que é MCP? Meu Guia para Iniciantes sobre o Protocolo de Contexto do Modelo
O artigo apresenta o Protocolo de Contexto do Modelo (MCP), explicando sua origem, funcionamento e como construir um servidor MCP. MCP conecta assistentes de IA a ferramentas e ambientes externos, simplificando integrações.

O Livro de Custos MCP: FinOps para 47 Agentes de IA Sem um Esquema de Tags
O artigo discute como a falta de um esquema de tags para agentes de IA pode complicar a alocação de custos, propondo um livro de custos que permite uma análise detalhada das despesas por agente.

Por que Servidores MCP Baseados em Pagamento x402 São Mais Seguros do que Chaves de API
O artigo discute como servidores MCP x402, que utilizam pagamentos em vez de chaves de API, podem melhorar a segurança, mas também introduzem novos riscos econômicos.
Gostou do conteudo?
Receba toda semana as principais novidades sobre WebMCP.

