Voltar as noticias
Downtime é uma Oportunidade: Domínios Personalizados, Cloudflare e MCP
MCP ProtocolMediaEN

Downtime é uma Oportunidade: Domínios Personalizados, Cloudflare e MCP

Dev.to - MCP·7 de maio de 2026

Você sabe como é no desenvolvimento de IA — às vezes você fica assistindo as barras de progresso se arrastarem. 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 os percentuais 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:

  1. Colocar minha instância do Coder auto-hospedada atrás de um domínio real
  2. Fortalecer a configuração do Cloudflare (e descobrir uma armadilha que todo criador de conteúdo precisa saber)
  3. 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 da Vercel (já que comprei o domínio através da Vercel) apontando o subdomínio coder para a URL do túnel existente.

Armadilha #1: O formulário de DNS da Vercel padrão é do 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 do Tipo para "CNAME." Pequena coisa, mas vai te atrapalhar se você não estiver prestando atenção nos padrões do formulário.

Formulário de DNS da Vercel mostrando

O formulário de DNS da Vercel 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 ser alterado. Os badges abaixo contam a história: CLI --access-url, ENV CODER_ACCESS_URL, YAML accessURL. Somente configuração do servidor.

Como o Coder roda via systemd na minha casa, a configuração fica 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 Portas (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 portas no roteador — um TP-Link Archer BE800.

O aplicativo do roteador não expõe o encaminhamento de portas. 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 Portas.

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 timeout — 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 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 timeout 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 portas. Sem configuração de roteador. Sem exposição de IP público. E é gratuito.

Passo 1: Mover Servidores de Nomes

Como eu precisava que o Cloudflare gerenciasse o DNS para vibescoder.dev, eu:

  1. Criei uma conta gratuita no Cloudflare
  2. Adicionei vibescoder.dev como um site
  3. Deixei que ele importasse automaticamente meus registros DNS existentes (registros A da Vercel, registros CAA, tudo)
  4. Selecionei o plano gratuito
  5. Atualizei os servidores de nomes na 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 da Vercel.

Página de configuração de DNS do Cloudflare mostrando

O Cloudflare importa automaticamente seus registros DNS existentes — o blog continua funcionando enquanto você configura o túnel.

Passo 2: Criar o Túnel

Na máquina 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

Página de sucesso da instalação do certificado Cloudflared

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 de aplicativos do Coder — encaminhamento de portas, 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

Contexto Triplo Up

Empresas brasileiras podem se beneficiar ao entender como gerenciar domínios e conexões de rede para suas aplicações de IA. A configuração correta do MCP e do Cloudflare pode melhorar a segurança e a acessibilidade dos serviços. Isso é crucial para a adoção de soluções de IA em ambientes corporativos.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.