From 203e51c576ea8d2208f2d4fa1f3dcbe724a6171e Mon Sep 17 00:00:00 2001 From: Davide Date: Wed, 18 Sep 2024 11:58:12 +0200 Subject: [PATCH] First draft of using Caddy as the reverse proxy --- caddy-docker-proxy/Caddyfile | 13 ++++++ caddy-docker-proxy/docker-compose.yml | 59 +++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 caddy-docker-proxy/Caddyfile create mode 100644 caddy-docker-proxy/docker-compose.yml diff --git a/caddy-docker-proxy/Caddyfile b/caddy-docker-proxy/Caddyfile new file mode 100644 index 0000000..f0d39ce --- /dev/null +++ b/caddy-docker-proxy/Caddyfile @@ -0,0 +1,13 @@ +# https://caddyserver.com/docs/metrics +:9000 { + metrics +} + +subdomain.domain.tld { + reverse_proxy ${local_ip}:${port} + # https://caddyserver.com/docs/caddyfile/directives/basic_auth + basic_auth { + Username hashed_password + } + log +} diff --git a/caddy-docker-proxy/docker-compose.yml b/caddy-docker-proxy/docker-compose.yml new file mode 100644 index 0000000..12e1a61 --- /dev/null +++ b/caddy-docker-proxy/docker-compose.yml @@ -0,0 +1,59 @@ +--- +x-logging: + &default-logging + driver: syslog + options: + # This requires two files in /etc/rsyslog.d + # https://www.loggly.com/use-cases/docker-syslog-logging-and-troubleshooting/ + tag: "container_name/{{.Name}}" + labels: "${hostname}" + syslog-facility: # cron, local7, etc. + +# Can be removed if not needed +x-opt-values: + &volume-opt + driver_opts: &options + type: "nfs" + o: "addr=${IP},rw" + +services: + caddy: + image: lucaslorentz/caddy-docker-proxy:ci-alpine + container_name: caddy + restart: unless-stopped + labels: + caddy.email: ${CADDY_EMAIL} + environment: + # $ docker network create caddy + CADDY_INGRESS_NETWORKS: caddy + CADDY_DOCKER_CADDYFILE_PATH: "/etc/caddy/Caddyfile" + ports: + - 80:80 + - 443:443 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - caddy_data:/data + - ./Caddyfile:/etc/caddy/Caddyfile + networks: + - caddy + ulimits: + nofile: 65535 + logging: *default-logging + +networks: + caddy: + external: true + +volumes: + caddy_data: {} + +# What if I want to use the x-opt-values: +# acme: +# <<: *volume-opt +# driver_opts: +# <<: *options +# device: ":/mnt/path/nginx-proxy/acme" +# o: "new_opts" +# type: "new_type" +# +# 'o' and 'type' can be redifined again or left at default