# Guia Completo: Cloudflare Tunnel & Zero Trust (Split-Port) (Dansk) 馃寪 **Languages:** 馃嚭馃嚫 [English](../../../../docs/cloudflare-zero-trust-guide.md) 路 馃嚜馃嚫 [es](../../es/docs/cloudflare-zero-trust-guide.md) 路 馃嚝馃嚪 [fr](../../fr/docs/cloudflare-zero-trust-guide.md) 路 馃嚛馃嚜 [de](../../de/docs/cloudflare-zero-trust-guide.md) 路 馃嚠馃嚬 [it](../../it/docs/cloudflare-zero-trust-guide.md) 路 馃嚪馃嚭 [ru](../../ru/docs/cloudflare-zero-trust-guide.md) 路 馃嚚馃嚦 [zh-CN](../../zh-CN/docs/cloudflare-zero-trust-guide.md) 路 馃嚡馃嚨 [ja](../../ja/docs/cloudflare-zero-trust-guide.md) 路 馃嚢馃嚪 [ko](../../ko/docs/cloudflare-zero-trust-guide.md) 路 馃嚫馃嚘 [ar](../../ar/docs/cloudflare-zero-trust-guide.md) 路 馃嚠馃嚦 [hi](../../hi/docs/cloudflare-zero-trust-guide.md) 路 馃嚠馃嚦 [in](../../in/docs/cloudflare-zero-trust-guide.md) 路 馃嚬馃嚟 [th](../../th/docs/cloudflare-zero-trust-guide.md) 路 馃嚮馃嚦 [vi](../../vi/docs/cloudflare-zero-trust-guide.md) 路 馃嚠馃嚛 [id](../../id/docs/cloudflare-zero-trust-guide.md) 路 馃嚥馃嚲 [ms](../../ms/docs/cloudflare-zero-trust-guide.md) 路 馃嚦馃嚤 [nl](../../nl/docs/cloudflare-zero-trust-guide.md) 路 馃嚨馃嚤 [pl](../../pl/docs/cloudflare-zero-trust-guide.md) 路 馃嚫馃嚜 [sv](../../sv/docs/cloudflare-zero-trust-guide.md) 路 馃嚦馃嚧 [no](../../no/docs/cloudflare-zero-trust-guide.md) 路 馃嚛馃嚢 [da](../../da/docs/cloudflare-zero-trust-guide.md) 路 馃嚝馃嚠 [fi](../../fi/docs/cloudflare-zero-trust-guide.md) 路 馃嚨馃嚬 [pt](../../pt/docs/cloudflare-zero-trust-guide.md) 路 馃嚪馃嚧 [ro](../../ro/docs/cloudflare-zero-trust-guide.md) 路 馃嚟馃嚭 [hu](../../hu/docs/cloudflare-zero-trust-guide.md) 路 馃嚙馃嚞 [bg](../../bg/docs/cloudflare-zero-trust-guide.md) 路 馃嚫馃嚢 [sk](../../sk/docs/cloudflare-zero-trust-guide.md) 路 馃嚭馃嚘 [uk-UA](../../uk-UA/docs/cloudflare-zero-trust-guide.md) 路 馃嚠馃嚤 [he](../../he/docs/cloudflare-zero-trust-guide.md) 路 馃嚨馃嚟 [phi](../../phi/docs/cloudflare-zero-trust-guide.md) 路 馃嚙馃嚪 [pt-BR](../../pt-BR/docs/cloudflare-zero-trust-guide.md) 路 馃嚚馃嚳 [cs](../../cs/docs/cloudflare-zero-trust-guide.md) 路 馃嚬馃嚪 [tr](../../tr/docs/cloudflare-zero-trust-guide.md) --- Este guia documenta o padr茫o ouro de infraestrutura de rede para proteger o **OmniRoute** e expor sua aplica莽茫o de forma segura para a internet, **sem abrir nenhuma porta (Zero Inbound)**. ## O que foi feito na sua VM? N贸s ativamos o OmniRoute em modo **Split-Port** atrav茅s do PM2: - **Porta \`20128\`:** Roda **apenas a API** `/v1`. - **Porta \`20129\`:** Roda **apenas o Dashboard** Administrativo visual. Al茅m disso, o servi莽o interno exige \`REQUIRE_API_KEY=true\`, o que significa que nenhum agente pode consumir os endpoints da API sem enviar um "Bearer Token" leg铆timo gerado na aba API Keys do Painel. Isso nos permite criar duas regras completamente independentes na rede. 脡 aqui que entra o **Cloudflare Tunnel (cloudflared)**. --- ## 1. Como Criar o T煤nel na Cloudflare O utilit谩rio \`cloudflared\` j谩 est谩 instalado na sua m谩quina. Siga os passos na nuvem: 1. Acesse seu painel **Cloudflare Zero Trust** (One.dash.cloudflare.com). 2. No menu 脿 esquerda, v谩 em **Networks > Tunnels**. 3. Clique em **Add a Tunnel**, escolha **Cloudflared** e d锚 o nome \`OmniRoute-VM\`. 4. Ele vai gerar um comando na tela chamado "Install and run a connector". **Voc锚 s贸 precisa copiar o Token (a string longa ap贸s `--token`)**. 5. Logue via SSH na sua m谩quina virtual (ou Terminal do Proxmox) e execute: \`\`\`bash # Inicia e amarra o t煤nel permanentemente 脿 sua conta cloudflared service install SEU_TOKEN_GIGANTE_AQUI \`\`\` --- ## 2. Configurando o Roteamento (Public Hostnames) Ainda na tela do Tunnel rec茅m-criado, v谩 para a aba **Public Hostnames** e adicione as **duas** rotas, aproveitando a separa莽茫o que fizemos: ### Rota 1: API Segura (Limitada) - **Subdomain:** \`api\` - **Domain:** \`seuglobal.com.br\` (escolha seu dom铆nio real) - **Service Type:** \`HTTP\` - **URL:** \`127.0.0.1:20128\` _(Porta interna da API)_ ### Rota 2: Painel Zero Trust (Fechado) - **Subdomain:** \`omniroute\` ou \`painel\` - **Domain:** \`seuglobal.com.br\` - **Service Type:** \`HTTP\` - **URL:** \`127.0.0.1:20129\` _(Porta interna do App/Visual)_ Neste momento, a conectividade "F铆sica" est谩 resolvida. Agora vamos blindar de verdade. --- ## 3. Blindando o Painel com Zero Trust (Access) Nenhuma senha local protege melhor o seu painel do que remover totalmente o acesso a ele da internet aberta. 1. No painel Zero Trust, v谩 em **Access > Applications > Add an application**. 2. Selecione **Self-hosted**. 3. Em **Application name**, coloque \`Painel OmniRoute\`. 4. Em **Application domain**, coloque \`omniroute.seuglobal.com.br\` (O mesmo que voc锚 fez na "Rota 2"). 5. Clique em **Next**. 6. Em **Rule action**, escolha \`Allow\`. Em nome da Rule coloque \`Admin Apenas\`. 7. Em **Include**, no seletor de "Selector" escolha \`Emails\` e digite o seu email, por exemplo \`admin@spgeo.com.br\`. 8. Salve (`Add application`). > **O que isso fez:** Se voc锚 tentar abrir \`omniroute.seuglobal.com.br\`, n茫o cai mais na sua aplica莽茫o OmniRoute! Cai numa tela elegante da Cloudflare pedindo para digitar seu email. Somente se voc锚 (ou o email que voc锚 botou) for digitado l谩, ele recebe no Outlook/Gmail um c贸digo de 6 d铆gitos tempor谩rio que libera o t煤nel at茅 a porta \`20129\`. --- ## 4. Limitando e Protegendo a API com Rate Limit (WAF) O Dashboard do Zero Trust n茫o se aplica 脿 rota da API (\`api.seuglobal.com.br\`), porque 茅 um acesso program谩tico via ferramentas automatizadas (agentes) sem navegador. Para ele, usaremos o Firewall principal (WAF) da Cloudflare. 1. Acesse o **Painel Normal** da Cloudflare (dash.cloudflare.com) e entre no seu Dom铆nio. 2. No menu esquerdo, v谩 em **Security > WAF > Rate limiting rules**. 3. Clique em **Create rule**. 4. **Name:** \`Anti-Abuso OmniRoute API\` 5. **If incoming requests match...** - Escolha em Field: \`Hostname\` - Operator: \`equals\` - Value: \`api.seuglobal.com.br\` 6. Em **With the same characteristics:** Mantenha \`IP\`. 7. Nos limites (Limit): - **When requests exceed:** \`50\` - **Period:** \`1 minute\` 8. No final, em **Action**: \`Block\` (Bloquear) e decida se o bloqueio dura por 1 minuto ou 1 hora. 9. **Deploy**. > **O que isso fez:** Ningu茅m pode mandar mais de 50 requisi莽玫es num per铆odo de 60 segundos na sua URL de API. Como voc锚 roda v谩rios agentes e os consumos por tr谩s j谩 batem rate limit e j谩 rastreiam tokens, isso 茅 apenas uma medida na Borda da Internet (Edge Layer) que protege sua Inst芒ncia On-Premises de cair por estresse t茅rmico antes mesmo do tr谩fego descer pelo t煤nel. --- ## Finaliza莽茫o 1. A sua VM **n茫o possui nenhuma porta exposta** em `/etc/ufw`. 2. O OmniRoute s贸 conversa HTTPS saindo (\`cloudflared\`) e n茫o recebendo TCP direto do mundo. 3. Seus requets pro OpenAI s茫o ofuscados porque configuramos eles globalmente pra passar em um Proxy SOCKS5 (A nuvem n茫o liga pro SOCKS5 porque ela vem Inbound). 4. Seu painel web tem 2-Factor com Email. 5. Sua API est谩 ratelimitada na borda pela Cloudflare e s贸 trafega Bearer Tokens.