Skip to content

Caddy reverse proxy (local HTTPS) ​

This guide shows how to use Caddy as an external reverse proxy in front of the frontend container. It is most useful for local HTTPS or internal networks.

Prerequisites ​

  • Expose the frontend container on a host port (default 8080)
  • Add a local domain to your hosts file (or use internal DNS)
  • Install Caddy

Step 1: Expose the frontend service ​

Include the no-proxy override so the frontend is reachable on the host:

sh
docker compose -f compose.yaml \
  -f overrides/compose.mariadb.yaml \
  -f overrides/compose.redis.yaml \
  -f overrides/compose.noproxy.yaml \
  config > ~/gitops/docker-compose.yml

docker compose --project-name <project-name> -f ~/gitops/docker-compose.yml up -d

If you changed the HTTP port, note the value of HTTP_PUBLISH_PORT for the next step.

Step 2: Configure Caddy ​

Add a site block to your Caddyfile (usually /etc/caddy/Caddyfile):

caddy
erp.localdev.net {
  tls internal
  reverse_proxy localhost:8080
}

Replace 8080 with your published frontend port if you changed it.

Step 3: Trust the Caddy root certificate ​

When using tls internal, Caddy issues certificates from its internal CA. Import and trust the Caddy root certificate on any client that needs to access the site.

See also: TLS/SSL Setup Overview.