Usando o Caddy como proxy reverso local com Docker
Configurar um servidor local geralmente exige uma maneira eficiente de direcionar o tráfego web de entrada para vários contêineres Docker internos. Combinando Caddy e Docker, você pode estabelecer um sistema de proxy reverso limpo e automatizado que lida com o roteamento sem esforço.
Configurando o proxy reverso Caddy
Para começar, organize seus serviços centrais compartilhados em um diretório dedicado no seu servidor. Crie e navegue até o diretório designado para o Caddy executando os seguintes comandos no seu terminal:
mkdir -p /srv/core-and-shared/caddy
cd /srv/core-and-shared/caddy
Em seguida, defina a configuração do seu contêiner. Crie o arquivo compose.yaml dentro do seu diretório /srv/core-and-shared/caddy/ usando seu editor de texto preferido.
/srv/core-and-shared/caddy/compose.yaml:
services:
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
networks:
- ingress
- caddy
volumes:
caddy-data:
caddy-config:
networks:
ingress:
name: ingress
external: true
caddy:
name: caddy
Agora, configure suas regras de roteamento e blocos de servidor. Crie o Caddyfile no mesmo diretório para lidar com solicitações de entrada e mapeá-las para seus serviços locais.
/srv/core-and-shared/caddy/Caddyfile:
http://<domain> {
respond "Hello World!"
}
Inicie seu contêiner Caddy em modo desacoplado para iniciar o serviço:
docker compose up -d
Verifique se o proxy está respondendo corretamente fazendo uma solicitação HTTP para o seu endpoint configurado:
curl https://<domain>
Integrando túneis do Cloudflare
Se você precisar tornar seus serviços locais acessíveis externamente sem abrir portas de firewall, você pode parear sua configuração com um túnel seguro.
Para aprender como expor com segurança um servidor local à internet usando o Cloudflare Tunnel e o Docker Compose sem encaminhamento de porta ou abertura de portas de firewall, confira o seguinte guia:
Exponha um servidor local com Cloudflare Tunnel
Aprenda a expor um servidor Linux local à internet usando Cloudflare Tunnel e Docker Compose com instruções passo a passo.
Prepare um diretório separado para a configuração do túnel e configure seu arquivo compose correspondente:
mkdir -p /srv/core-and-shared/cloudflared/
cd /srv/core-and-shared/cloudflared/
/srv/core-and-shared/cloudflared/compose.yaml:
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel --no-autoupdate run --token ${TUNNEL_TOKEN} --url http://caddy:80
networks:
- ingress
networks:
ingress:
name: ingress
external: true
Inicie o túnel usando o Docker Compose:
curl https://<domain>
Para explorar estratégias alternativas de implantação de proxy e técnicas de endurecimento para ambientes de produção, leia este tutorial relacionado:
Proteja serviços Docker com Caddy em uma VPS
Aprenda a proteger serviços Docker em uma VPS usando Caddy como proxy reverso, redes Docker externas, Caddyfiles customizados e túneis Cloudflare opcionalmente.