Skip to content

Instantly share code, notes, and snippets.

@cleytonferrari
Last active January 4, 2024 10:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save cleytonferrari/c352a4abce0e44911375066d6275eab9 to your computer and use it in GitHub Desktop.
Save cleytonferrari/c352a4abce0e44911375066d6275eab9 to your computer and use it in GitHub Desktop.
Caddy com Cloudflare - Docker

Usando Caddy com o plugin da CloudFlare, rodando no Docker com docker compose.

Criando o Dockerfile

No meu caso chamei o dockerfile de Dockerfile.caddy.cloudflare, adicione dentro do arquivo o código abaixo:

# syntax=docker/dockerfile:1
FROM caddy:2.7.4-builder AS builder
RUN xcaddy build --with github.com/caddy-dns/cloudflare

FROM caddy:2.7.4
COPY --from=builder /usr/bin/caddy /usr/bin/caddy

Este aquivo é para criar uma imagem do docker copilada com o plugin da cloudflare.

Criando o docker-compose.yaml

Adicione o código abaixo no arquivo docker-compose.yaml. Agora você vai precisar da chave API da Cloudflare, adicione ela no local marcado no arquivo.

version: '3.8' #https://docs.docker.com/compose/compose-file/compose-versioning/

services:
    caddy_cloudflare:
        image: cleytonferrari/caddy.cloudflare
        build:
          context: .
          dockerfile: Dockerfile.Caddy.CloudFlare
        container_name: caddy.cloudflare
        restart: always
        deploy:
            resources:
                limits:
                    memory: 256M
                reservations:
                    memory: 128M
        ports:
            - 80:80
            - 443:443
        volumes:
            - ./Caddyfile:/etc/caddy/Caddyfile:ro
            - ./caddy-config:/config
            - ./caddy-data:/data
        networks:
            - caddy-network
        environment:
            - CF_API_TOKEN=COLE AQUI SUA CHAVE API DA CLOUDFLARE

networks:
    caddy-network:
        name: caddy-network
        driver: bridge

Criando o arquivo Caddyfile

Adicione o código abaixo no arquivo Caddyfile, este é um exemplo, aqui você deve alterar para o seu dominio e apontar para o serviço que você quer expor.

#aqui você troca pelo seu dominio
https://seudominio.com.br:443 {
        tls {
                dns cloudflare {env.CF_API_TOKEN}
        }
        encode gzip
        #aqui você coloca o ip do seu serviço e porta
        reverse_proxy http://192.168.130.253:5660 {
                header_up X-Real-IP {remote_host}
        }
}

Referências

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment