O BrutusForge serve tudo na mesma origem (single-origin): a Web, a Loja e a API respondem sob o mesmo domínio. O navegador faz chamadas relativas (/api, /socket.io) e o servidor Web (Next.js) faz o proxy interno para a API (API_INTERNAL_URL, padrão http://localhost:3001). Por isso, basta expor a porta da Web ao mundo — não é preciso publicar a porta da API.
1. Definir o domínio (no app)
- No setup inicial: preencha "Domínio público (opcional)" na última etapa.
- Depois, a qualquer momento: em Admin → Marca (whitelabel), card "Acesso público (domínio)", informe o domínio e clique Aplicar e reiniciar.
Em ambos os casos o BrutusForge grava no .env e reinicia API + Bot:
WEB_BASE_URL=https://<dominio>
CORS_ORIGIN=https://<dominio>
DISCORD_REDIRECT_URI=https://<dominio>/auth/callbackO .env é preservado entre reinícios do launcher — a configuração não é sobrescrita no boot.
2. Apontar o Cloudflare Tunnel para a porta da Web
Como é single-origin, uma única regra basta — aponte o túnel para a porta da Web (padrão 3000). A Web faz o proxy de /api e /socket.io para a API internamente.
config.yml do cloudflared (exemplo):
tunnel: ID-DO-TUNNEL
credentials-file: C:\Users\voce\.cloudflared\ID.json
ingress:
- hostname: painel.seudominio.com.br
service: http://localhost:3000
- service: http_status:404DNS: crie um CNAME painel apontando para ID-DO-TUNNEL.cfargotunnel.com (cloudflared tunnel route dns <tunnel> painel.seudominio.com.br).
WebSocket: o socket.io usa websocket com fallback automático para polling. O Cloudflare proxia WebSocket normalmente; quando passa pelo proxy interno do Next, o polling cobre o caso. Não é necessária nenhuma regra de path extra.
3. Registrar o callback do Discord
No Discord Developer Portal → sua aplicação → OAuth2 → Redirects, adicione exatamente:
https://painel.seudominio.com.br/auth/callbackTem que bater com o DISCORD_REDIRECT_URI gravado no passo 1. Sem isso, o login com Discord falha.
Resumo do que é automático vs. manual
| Etapa | Quem faz |
|---|---|
Gravar WEB_BASE_URL/CORS_ORIGIN/DISCORD_REDIRECT_URI + reiniciar serviços | App (setup ou card admin) |
Chamadas do navegador na mesma origem (sem localhost fixo) | App (já embutido) |
| Criar/rotear o Cloudflare Tunnel + DNS | Manual (passo 2) |
| Registrar o redirect no Discord | Manual (passo 3) |
Trocar o domínio no app não atualiza o túnel nem o redirect do Discord — refaça os passos 2 e 3 se o domínio mudar.