Cloudflare Tunnel permite expor um backend local na internet sem abrir portas no roteador.
Linux:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.debmacOS:
brew install cloudflare/cloudflare/cloudflaredcloudflared tunnel --url http://localhost:8001
cloudflared tunnel --url http://localhost:8002
cloudflared tunnel --url http://localhost:8003O comando exibira uma URL https://...trycloudflare.com.
As frontends usam URLs relativas por padrao, entao funcionam quando servidas pelo proprio backend.
Para deploy repetivel em VPS, crie um Cloudflare Tunnel nomeado no dashboard da Cloudflare e configure hostnames publicos apontando para o Caddy:
| Hostname publico | Service |
|---|---|
corecraft.example.com |
http://caddy:80 |
Depois salve o token do tunnel no secret CLOUDFLARE_TUNNEL_TOKEN do GitHub e execute o workflow Deploy com target vps-cloudflare.
O workflow usa docker-compose.cloudflare.yml, que sobe um sidecar cloudflared na mesma rede Docker do Caddy:
docker compose \
-f docker-compose.yml \
-f docker-compose.cloudflare.yml \
--profile all \
--profile cloudflare \
up -d --buildAssim, nao e necessario expor as portas da aplicacao diretamente no firewall da VPS.
ngrok http 8001
ngrok http 8002
ngrok http 8003