1. The problem I’m having:
I am currently using Caddy on a VPS, running it in a Docker container. So far, I have successfully configured it as a reverse proxy to route traffic from different FQDNs to various Docker containers on the same VPS. Everything is working smoothly.
Now, I would like to set up Caddy to act as a reverse proxy for another server that connects to this VPS via reverse tunneling.
2. Error messages and/or full log output:
caddy | {"level":"info","ts":1743593370.2042847,"msg":"using config from file","file":"/etc/caddy/Caddyfile"}
caddy | Error: adapting config using caddyfile: ambiguous site definition: plane.k.b4m.jp
3. Caddy version:
v2.9.1 h1:OEYiZ7DbCzAWVb6TNEkjRcSCRGHVoZsJinoDR/n9oaY=
4. How I installed and ran Caddy:
a. System environment:
Ubuntu 24.04.2 LTS
Docker version 28.0.4, build b8034c0
b. Command:
docker compose up -d
c. Service/unit/compose file:
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9000:9000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
networks:
- caddy_network
caddy:
image: caddy:latest
container_name: caddy
restart: always
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- caddy_network
volumes:
portainer_data:
caddy_data:
caddy_config:
networks:
caddy_network:
driver: bridge
d. My complete Caddy config:
{
email REDACTED
debug
}
docker.k.b4m.jp {
reverse_proxy portainer:9000
}
n8n.k.b4m.jp {
reverse_proxy n8n:5678
}
bitwarden.k.b4m.jp {
reverse_proxy vaultwarden:80
}
git.k.b4m.jp {
reverse_proxy gitea:3000
}
obsidian.k.b4m.jp {
reverse_proxy couchdb:5984
}
photo.k.kohki.org {
reverse_proxy photoprism:2342
}
# This one is only not working fine.
plane.k.b4m.jp {
reverse_proxy localhost:81
}
5. Links to relevant resources:
kohki@mbam3 ~ % curl -vL https://plane.k.b4m.jp/
* Host plane.k.b4m.jp:443 was resolved.
* IPv6: (none)
* IPv4: 163.44.110.55
* Trying 163.44.110.55:443...
* Connected to plane.k.b4m.jp (163.44.110.55) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
* subject: CN=plane.k.b4m.jp
* start date: Mar 27 06:28:55 2025 GMT
* expire date: Jun 25 06:28:54 2025 GMT
* subjectAltName: host "plane.k.b4m.jp" matched cert's "plane.k.b4m.jp"
* issuer: C=US; O=Let's Encrypt; CN=E5
* SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://plane.k.b4m.jp/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: plane.k.b4m.jp]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [accept: */*]
> GET / HTTP/2
> Host: plane.k.b4m.jp
> User-Agent: curl/8.7.1
> Accept: */*
>
* Request completely sent off
< HTTP/2 502
< alt-svc: h3=":443"; ma=2592000
< server: Caddy
< content-length: 0
< date: Wed, 02 Apr 2025 11:41:44 GMT
<
* Connection #0 to host plane.k.b4m.jp left intact