1. The problem I’m having:
I’m setting up Caddy as a reverse proxy to my Seafile container. Everything was working correctly until I added Caddy, so I’m sure it’s something in my config files that aren’t correct. I’ve combed the internet looking for solutions and nothing seems to fix the error shown below. It would appear that Caddy isn’t able to proxy to the seafile container, why at this point I have no idea.
2. Error messages and/or full log output:
caddy_1 | {"level":"error","ts":1718826289.8752694,"logger":"http.log.error","msg":"dial tcp 172.19.0.6:8080: connect: connection refused","request":{"remote_ip":"71.88.214.165","remote_port":"51737","client_ip":"71.88.214.165","proto":"HTTP/3.0","method":"GET","host":"docs.eaglewings.com","uri":"/","headers":{"Sec-Ch-Ua":["\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Brave\";v=\"126\""],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Site":["cross-site"],"Sec-Fetch-Dest":["document"],"Sec-Gpc":["1"],"Cache-Control":["max-age=0"],"Sec-Ch-Ua-Platform":["\"Linux\""],"Sec-Fetch-Mode":["navigate"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Priority":["u=0, i"],"Sec-Ch-Ua-Mobile":["?0"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.8"],"Sec-Fetch-User":["?1"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"h3","server_name":"docs.eaglewings.com"}},"duration":0.001601044,"status":502,"err_id":"bghv089aa","err_trace":"reverseproxy.statusError (reverseproxy.go:1248)"}
3. Caddy version:
v2.7.4
4. How I installed and ran Caddy:
Install is via docker compose files
a. System environment:
Docker
b. Command:
Caddy Loads when the container runs
c. Service/unit/compose file:
version: "3"
networks:
docker-network:
driver: bridge
services:
caddy:
image: caddy:latest
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./data/caddy:/data
- ./caddy_config:/config
ports:
- "80:80"
- "443:443"
- "443:443/udp"
restart: unless-stopped
networks:
- docker-network
seafile:
image: seafileltd/seafile:latest
volumes:
- ./data/seafile:/shared
expose:
- 8000
- 8082
- 8080
restart: unless-stopped
environment:
- SEAFILE_ADMIN_EMAIL=${SEAFILE_ADMIN_EMAIL} # Specifies Seafile admin user, default is 'me@example.com'.
- SEAFILE_ADMIN_PASSWORD=${SEAFILE_PASSWORD} # Specifies Seafile admin password, default is 'asecret'.
- SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
- SEAFILE_SERVER_HOSTNAME=docs.${DOMAIN_NAME}
- SEAFILE_SERVICE_URL=https://docs.${DOMAIN_NAME}
- SEAFILE_FILE_SERVER_ROOT=https://docs.${DOMAIN_NAME}/seafhttp
- DB_HOST=seafile-db
- DB_PORT=3306
- MYSQL_HOST=seafile-db
- MYSQL_PORT=3306
- MYSQL_ROOT_PASSWORD=${SEAFILE_DB_PASSWORD}
- TIME_ZONE=Est/EST
networks:
- docker-network
seafile-db:
image: mariadb:latest
volumes:
- ./data/seafile-db:/var/lib/mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${SEAFILE_DB_PASSWORD}
networks:
- docker-network
trade-journal:
image: ghost:latest
volumes:
- ./data/trade-journal:/var/lib/ghost/content
restart: always
ports:
- 2368:2368
environment:
- database__client=mysql
- database__connection__host=trade-journal-db
- database__connection__user=trade-journal
- database__connection__password=${TRADE_JOURNAL_DB_PASSWORD}
- database__connection__database=trade-journal
- url=https://tradejournal.${DOMAIN_NAME}
networks:
- docker-network
trade-journal-db:
image: mariadb:latest
volumes:
- ./data/trade-journal-db:/var/lib/mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${TRADE_JOURNAL_DB_PASSWORD}
- MYSQL_DATABASE=trade-journal
- MYSQL_USER=trade-journal
- MYSQL_PASSWORD=${TRADE_JOURNAL_DB_PASSWORD}
networks:
- docker-network
volumes:
caddy_config:
d. My complete Caddy config:
{
debug
# acme_ca https:#acme.zerossl.com/v2/DV90
email _@eaglewings.com
}
docs.eaglewings.com {
reverse_proxy seafile:8000
tls _@eaglewings.com
}
tradejournal.eaglewings.com {
reverse_proxy trade-journal:2368
tls _@eaglewings.com
}