Caddy solution for OnlyOffice no longer works

1. Caddy version (caddy version):

2.4

2. How I run Caddy:

Caddy-Docker-Proxy

a. System environment:

Manjaro Gnome clean install with docker compose

c. Service/unit/compose file:

version: "2.4" 
services:
  caddy:
    container_name: web-proxy
    image: lucaslorentz/caddy-docker-proxy:ci-alpine
    restart: always
    networks: 
      - web-proxy
    environment:
      - CADDY_INGRESS_NETWORKS=web-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - $DOCKERDIR/caddy/caddy_data:/data
      - $DOCKERDIR/caddy/config:/config
    labels:
      caddy.email: $EMAIL
    ports:
      - 443:443
#
  onlyoffice:
    container_name: onlyoffice
    image: onlyoffice/documentserver
    stdin_open: true
    restart: always
    networks: 
      - web-proxy
    tty: true
    volumes:
      - $DOCKERDIR/onlyoffice/data:/var/www/onlyoffice/Data
      - $DOCKERDIR/onlyoffice/log:/var/log/onlyoffice
      - $DOCKERDIR/onlyoffice/database:/var/lib/postgresql
      - /usr/share/fonts:/usr/share/fonts
    environment:
      JWT_ENABLED: true
      JWT_SECRET: $ONLYOFFICEJWT
    labels:
      caddy: office.$DOMAIN
      caddy.reverse_proxy: "{{upstreams 80}}"
      # Required extra headers
      caddy.file_server: ""
      caddy.encode: gzip

networks:
  web-proxy:
    #driver: bridge
    external: true

3. The problem I’m having:

The above compose worked fine last year. I reinstalled my server, ran the same compose file again and now the page is blank. When I use dev options in Firefox, I do see something about 502 error, but there is no 502 error page.

4. Error messages and/or full log output:

see next post (too many characters).

Note there are 3 other containers for which I use caddy (Firefox, Vault, Files), those will be shown in the log as well. Firefox is Firefox Sync server, Vault is Vaultwarden (bitwarden) and Files is FileRun.

5. What I already tried:

This forum and github issues is filled with my posts of the past 3 years playing with Caddy to get OnlyOffice playing nicely with Docker. I finally had it working last year. Not sure what changed now. I am hoping there are others in the community that use Caddy with OnlyOffice successfully.

{"level":"info","ts":1649798656.7143478,"logger":"tls","msg":"served key authentication certificate","server_name":"vault.obelix.cloud","challenge":"tls-alpn-01","remote":"64.78.149.164:62166","distributed":false}
{"level":"info","ts":1649798656.8485913,"logger":"tls","msg":"served key authentication certificate","server_name":"files.obelix.cloud","challenge":"tls-alpn-01","remote":"18.159.196.172:49620","distributed":false}
{"level":"info","ts":1649798656.8627899,"logger":"tls","msg":"served key authentication certificate","server_name":"vault.obelix.cloud","challenge":"tls-alpn-01","remote":"18.116.86.117:29494","distributed":false}
{"level":"info","ts":1649798656.9732192,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencrypt.org/acme/order/494277340/79628219390"}
{"level":"info","ts":1649798657.1256635,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencrypt.org/acme/order/494277350/79628219540"}
{"level":"error","ts":1649798657.1385725,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"firefox.obelix.cloud","challenge_type":"http-01","problem":{"type":"urn:ietf:params:acme:error:connection","title":"","detail":"Fetching http://firefox.obelix.cloud/.well-known/acme-challenge/7UJgvHHTxwUc37Ot4JQSq8004S6z6TxQ5XDzvZcf3rA: Timeout during connect (likely firewall problem)","instance":"","subproblems":[]}}
{"level":"error","ts":1649798657.138605,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"firefox.obelix.cloud","problem":{"type":"urn:ietf:params:acme:error:connection","title":"","detail":"Fetching http://firefox.obelix.cloud/.well-known/acme-challenge/7UJgvHHTxwUc37Ot4JQSq8004S6z6TxQ5XDzvZcf3rA: Timeout during connect (likely firewall problem)","instance":"","subproblems":[]},"order":"https://acme-v02.api.letsencrypt.org/acme/order/494277330/79628158380","attempt":1,"max_attempts":3}
{"level":"info","ts":1649798657.2165778,"logger":"tls","msg":"served key authentication certificate","server_name":"files.obelix.cloud","challenge":"tls-alpn-01","remote":"34.221.255.206:11194","distributed":false}
{"level":"info","ts":1649798657.3963902,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencrypt.org/acme/order/494277360/79628219590"}
{"level":"info","ts":1649798657.5833566,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"https://acme-v02.api.letsencrypt.org/acme/cert/038f0cecfa6c6e47aa29a61837f9138c8186"}
{"level":"info","ts":1649798657.5837054,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"office.obelix.cloud"}
{"level":"info","ts":1649798657.5837126,"logger":"tls.obtain","msg":"releasing lock","identifier":"office.obelix.cloud"}
{"level":"info","ts":1649798658.0630336,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"https://acme-v02.api.letsencrypt.org/acme/cert/03d6c308cab41ca9a153466ad338f36f5d71"}
{"level":"info","ts":1649798658.0632527,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"files.obelix.cloud"}
{"level":"info","ts":1649798658.0632584,"logger":"tls.obtain","msg":"releasing lock","identifier":"files.obelix.cloud"}
{"level":"info","ts":1649798658.465455,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"https://acme-v02.api.letsencrypt.org/acme/cert/045c37ee6777bba3e51b14b810936d5272a7"}
{"level":"info","ts":1649798658.4657207,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"vault.obelix.cloud"}
{"level":"info","ts":1649798658.465727,"logger":"tls.obtain","msg":"releasing lock","identifier":"vault.obelix.cloud"}
{"level":"info","ts":1649798658.506803,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"firefox.obelix.cloud","challenge_type":"tls-alpn-01","ca":"https://acme-v02.api.letsencrypt.org/directory"}
{"level":"info","ts":1649798658.903148,"logger":"tls","msg":"served key authentication certificate","server_name":"firefox.obelix.cloud","challenge":"tls-alpn-01","remote":"34.219.87.132:28656","distributed":false}
{"level":"info","ts":1649798658.9295855,"logger":"tls","msg":"served key authentication certificate","server_name":"firefox.obelix.cloud","challenge":"tls-alpn-01","remote":"66.133.109.36:61914","distributed":false}
{"level":"info","ts":1649798659.1245801,"logger":"tls","msg":"served key authentication certificate","server_name":"firefox.obelix.cloud","challenge":"tls-alpn-01","remote":"3.120.130.29:13918","distributed":false}
{"level":"info","ts":1649798659.249367,"logger":"tls","msg":"served key authentication certificate","server_name":"firefox.obelix.cloud","challenge":"tls-alpn-01","remote":"3.19.56.43:16252","distributed":false}
{"level":"info","ts":1649798659.4656363,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencrypt.org/acme/order/494277330/79628228680"}
{"level":"info","ts":1649798660.2803974,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"https://acme-v02.api.letsencrypt.org/acme/cert/038eb08c48f0aa9da18bb68e4b3f4bcb050a"}
{"level":"info","ts":1649798660.2807295,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"firefox.obelix.cloud"}
{"level":"info","ts":1649798660.2807367,"logger":"tls.obtain","msg":"releasing lock","identifier":"firefox.obelix.cloud"}
{"level":"info","ts":1649798672.8258228,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798688.866576,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:57874","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Go-http-client/1.1"],"Accept-Encoding":["gzip"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000273964,"status":502,"err_id":"5abyx75nr","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798701.4492033,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798703.0017338,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798704.9956615,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798719.465581,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Te":["trailers"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-User":["?1"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Site":["none"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000244607,"status":502,"err_id":"cf6twh0b1","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798719.5007453,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/favicon.ico","headers":{"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept-Language":["en-US,en;q=0.5"],"Sec-Fetch-Dest":["image"],"Sec-Fetch-Mode":["no-cors"],"Sec-Fetch-Site":["same-origin"],"Te":["trailers"],"Accept":["image/avif,image/webp,*/*"],"Referer":["https://office.obelix.cloud/"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000226241,"status":502,"err_id":"wgp793dzp","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798721.8781838,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Site":["none"],"Sec-Fetch-User":["?1"],"Cache-Control":["max-age=0"],"Te":["trailers"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept-Encoding":["gzip, deflate, br"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Mode":["navigate"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000226439,"status":502,"err_id":"dwmybp1rh","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798722.513364,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept-Language":["en-US,en;q=0.5"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Dest":["document"],"Cache-Control":["max-age=0"],"Sec-Fetch-User":["?1"],"Te":["trailers"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-Site":["none"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.00022325,"status":502,"err_id":"18wc3dxqs","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798735.0007114,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798735.0208561,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-Site":["none"],"Sec-Fetch-User":["?1"],"Cache-Control":["max-age=0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Sec-Fetch-Dest":["document"],"Te":["trailers"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000207295,"status":502,"err_id":"h8r4n8nng","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798735.1820433,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/favicon.ico","headers":{"Cache-Control":["max-age=0"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Dest":["image"],"Sec-Fetch-Mode":["no-cors"],"Sec-Fetch-Site":["same-origin"],"Te":["trailers"],"Accept":["image/avif,image/webp,*/*"],"Accept-Language":["en-US,en;q=0.5"],"Referer":["https://office.obelix.cloud/"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000216807,"status":502,"err_id":"z8rhcg6ay","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798735.4159808,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:37974","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Go-http-client/1.1"],"Accept-Encoding":["gzip"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000307753,"status":502,"err_id":"b1dyn81y0","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798763.1979609,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798765.3501344,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798767.2655067,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:35144","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Go-http-client/1.1"],"Accept-Encoding":["gzip"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.0002773,"status":502,"err_id":"p8ie6j87p","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798768.9110396,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798798.9114854,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798798.9450955,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:59850","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept-Encoding":["gzip"],"User-Agent":["Go-http-client/1.1"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000238525,"status":502,"err_id":"6wcz579iv","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798823.4091513,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798829.27462,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798832.8055882,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798846.0763855,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:40166","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Go-http-client/1.1"],"Accept-Encoding":["gzip"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000203698,"status":502,"err_id":"3k91umafj","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798862.8054078,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798877.375147,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:37532","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Go-http-client/1.1"],"Accept-Encoding":["gzip"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000181594,"status":502,"err_id":"zhynvrun7","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798883.5999293,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798893.1770694,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798893.9248903,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate, br"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Site":["none"],"Sec-Fetch-User":["?1"],"Te":["trailers"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"Accept-Language":["en-US,en;q=0.5"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.00020869,"status":502,"err_id":"vwsd6syyd","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798894.0034115,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/favicon.ico","headers":{"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept-Language":["en-US,en;q=0.5"],"Sec-Fetch-Dest":["image"],"Te":["trailers"],"Sec-Fetch-Site":["same-origin"],"Accept":["image/avif,image/webp,*/*"],"Accept-Encoding":["gzip, deflate, br"],"Referer":["https://office.obelix.cloud/"],"Sec-Fetch-Mode":["no-cors"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000218418,"status":502,"err_id":"k6p5q01xx","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798895.9370377,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-User":["?1"],"Cache-Control":["max-age=0"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Te":["trailers"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Site":["none"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.00023743,"status":502,"err_id":"pp0itnqzb","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798896.5587347,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Sec-Fetch-User":["?1"],"Cache-Control":["max-age=0"],"Te":["trailers"],"Accept-Encoding":["gzip, deflate, br"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Sec-Fetch-Site":["none"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000205418,"status":502,"err_id":"myk1d2grv","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798896.738382,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798896.7528956,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Site":["none"],"Cache-Control":["max-age=0"],"Te":["trailers"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-User":["?1"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000244105,"status":502,"err_id":"80thbsj41","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798896.9121778,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Sec-Fetch-User":["?1"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-Site":["none"],"Cache-Control":["max-age=0"],"Te":["trailers"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate, br"],"Upgrade-Insecure-Requests":["1"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000308209,"status":502,"err_id":"ea7mtsu4i","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798897.078851,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-User":["?1"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Site":["none"],"Cache-Control":["max-age=0"],"Te":["trailers"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Dest":["document"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000226399,"status":502,"err_id":"1vvecxs5q","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798897.2683372,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Dest":["document"],"Te":["trailers"],"Cache-Control":["max-age=0"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-Site":["none"],"Sec-Fetch-User":["?1"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.00025847,"status":502,"err_id":"b6dxys5iq","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798898.3210511,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept-Encoding":["gzip, deflate, br"],"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-Site":["none"],"Sec-Fetch-User":["?1"],"Cache-Control":["max-age=0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Te":["trailers"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000294345,"status":502,"err_id":"vdah9fwtv","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"error","ts":1649798899.0623865,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"192.168.88.1:39682","proto":"HTTP/2.0","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Fetch-Dest":["document"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-Site":["none"],"Sec-Fetch-User":["?1"],"Cache-Control":["max-age=0"],"Te":["trailers"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000243398,"status":502,"err_id":"38ffhx2cg","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798926.7329226,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798943.7805755,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649798944.6763015,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"179.43.169.181:54442","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000245394,"status":502,"err_id":"yzwf1sktg","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649798957.1176953,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798960.6659896,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649798990.6636128,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799003.996723,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799021.009311,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799024.5627403,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799054.5636933,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799064.1903257,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799084.907011,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799088.4611015,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649799104.2865167,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:33348","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"Accept-Encoding":["gzip"],"User-Agent":["Go-http-client/1.1"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000206364,"status":502,"err_id":"sc1qzjz8y","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649799118.4704902,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799124.4118695,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799148.846971,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799152.3794124,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799182.3794572,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799184.607957,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799212.7565596,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799216.288559,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799244.799311,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799274.7970614,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799276.6170857,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799280.1636245,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799304.9891071,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799334.9848368,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799340.5119395,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799344.0669763,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799365.2123175,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"error","ts":1649799391.1148672,"logger":"http.log.error","msg":"dial tcp 172.23.0.2:80: connect: connection refused","request":{"remote_addr":"185.59.221.226:32848","proto":"HTTP/1.1","method":"GET","host":"office.obelix.cloud","uri":"/","headers":{"User-Agent":["Go-http-client/1.1"],"Accept-Encoding":["gzip"]},"tls":{"resumed":false,"version":771,"cipher_suite":52393,"proto":"","proto_mutual":true,"server_name":"office.obelix.cloud"}},"duration":0.000208693,"status":502,"err_id":"3ax3wauvt","err_trace":"reverseproxy.statusError (reverseproxy.go:886)"}
{"level":"info","ts":1649799395.2043197,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}
{"level":"info","ts":1649799404.3926902,"logger":"docker-proxy","msg":"Skipping swarm services because swarm is not available"}```

My concern is that your docker-compose changed from docker-compose (pre v2) to docker compose (v2+)

I am only starting to get familiar with caddy-docker-proxy but can you dump out the current config from the admin API so we can see whether the labels are getting translated as expected?

curl -X GET -H'Content-Type: application/json' -H'Origin: http://localhost:2019' localhost:2019/config/

Nope I have always used compose v2.x.
I am not sure where to run that command?

I do see the caddyfile as autosave.json in my mapped caddy folder, but unfortunately it is not nicely formatted :frowning: :

autosave.json
{"admin":{"listen":"tcp/localhost:2019"},"apps":{"http":{"servers":{"srv0":{"listen":[":443"],"routes":[{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.3:5000"}]}]}]}],"match":[{"host":["firefox.obelix.cloud"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"encodings":{"gzip":{}},"handler":"encode","prefer":["gzip"]},{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.2:443"}]},{"handler":"file_server","hide":["./Caddyfile"]}]}]}],"match":[{"host":["office.obelix.cloud"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"set":{"Strict-Transport-Security":["max-age=15768000;"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block;"]}}},{"encodings":{"gzip":{}},"handler":"encode","prefer":["gzip"]},{"handler":"reverse_proxy","headers":{"request":{"set":{"Host":["files.obelix.cloud"]}}},"upstreams":[{"dial":"172.23.0.6:80"}]},{"handler":"file_server","hide":["./Caddyfile"]}]}]}],"match":[{"host":["files.obelix.cloud"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"set":{"X-Content-Type-Options":["none"],"X-Frame-Options":["DENY"],"X-Xss-Protection":["1; mode=block;"]}}},{"encodings":{"gzip":{}},"handler":"encode","prefer":["gzip"]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.4:80"}]}],"match":[{"path":["/notifications/hub/negotiate"]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.4:3012"}]}],"match":[{"path":["/notifications/hub"]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.4:80"}]}]}]}],"match":[{"host":["vault.obelix.cloud"]}],"terminal":true}]}}},"tls":{"automation":{"policies":[{"issuers":[{"email":"obelix@obelix.cloud","module":"acme"},{"email":"obelix@obelix.cloud","module":"zerossl"}],"subjects":["firefox.obelix.cloud","office.obelix.cloud","files.obelix.cloud","vault.obelix.cloud"]}]}}}}/config/caddy

Using caddy.file_server doesn’t make sense here. reverse_proxy has a higher directive order so it will always take precedence. And you didn’t set a root, and file_server could only ever serve files that are inside the caddy container anyways (can’t serve files stored in other containers, their filesystems are isolated from eachother).

gzip and reverse_proxy are fine here, though.

You’re only binding port 443, so the ACME HTTP challenge won’t succeed. I recommend binding both 80 and 443 so that Caddy can perform HTTP->HTTPS redirects and solve ACME HTTP challenges.

Caddy responds with a 502 Bad Gateway status when the proxy can’t connect to the upstream service.

In this case, Caddy’s reverse_proxy isn’t able to connect to your other container at 172.23.0.2:80.

I don’t think this is a config problem though. I think there’s something wrong with your onlyoffice container. Check its logs, make sure it started up correctly, and that it is indeed serving on port 80.

1 Like

Did you notice this

                                       "upstreams":[
                                          {
                                             "dial":"172.23.0.2:443"
                                          }

@zilexa Can you actually ensure your compose and run the curl where docker’s running?

because, given the ingress annotation:

    labels:
      caddy: office.$DOMAIN
      caddy.reverse_proxy: "{{upstreams 80}}"

we shouldn’t be getting:

{
                     "handle":[
                        {
                           "handler":"subroute",
                           "routes":[
                              {
                                 "handle":[
                                    {
                                       "encodings":{
                                          "gzip":{
                                             
                                          }
                                       },
                                       "handler":"encode",
                                       "prefer":[
                                          "gzip"
                                       ]
                                    },
                                    {
                                       "handler":"reverse_proxy",
                                       "upstreams":[
                                          {
                                             "dial":"172.23.0.2:443"
                                          }
                                       ]
                                    },
                                    {
                                       "handler":"file_server",
                                       "hide":[
                                          "./Caddyfile"
                                       ]
                                    }
                                 ]
                              }
                           ]
                        }
                     ],
                     "match":[
                        {
                           "host":[
                              "office.obelix.cloud"
                           ]
                        }
                     ],
                     "terminal":true
                  }

Turns out, even without Caddy the OnlyOffice image does not work due to a bug in the image when the host system is Arch based (I use Manjaro Gnome): `sed: -e expression #1, char 25: unknown option to 's'` during startup on Arch based systems · Issue #426 · ONLYOFFICE/Docker-DocumentServer · GitHub

Besides that, thanks for spotting the mistakes I made!
I have removed cadyy.file_server from the labels under OnlyOffice.
And I added port 80 to my caddy container and configured portforwarding in my router for 80.

For now, I have to wait until an image is released that is compatible with Arch based host systems, before testing OnlyOffice with caddy-docker-proxy again.

Just FYI, the curl command works when running it inside the caddy-docker-proxy container:

/ # curl -X GET -H'Content-Type: application/json' -H'Origin: http://localhost:2019' localhost:2019/config/
{"admin":{"listen":"tcp/localhost:2019"},"apps":{"http":{"servers":{"srv0":{"listen":[":443"],"routes":[{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.3:5000"}]}]}]}],"match":[{"host":["firefox.obelix.cloud"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"encodings":{"gzip":{}},"handler":"encode","prefer":["gzip"]},{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.2:80"}]}]}]}],"match":[{"host":["office.obelix.cloud"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"set":{"Strict-Transport-Security":["max-age=15768000;"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"],"X-Xss-Protection":["1; mode=block;"]}}},{"encodings":{"gzip":{}},"handler":"encode","prefer":["gzip"]},{"handler":"reverse_proxy","headers":{"request":{"set":{"Host":["files.obelix.cloud"]}}},"upstreams":[{"dial":"172.23.0.6:80"}]},{"handler":"file_server","hide":["./Caddyfile"]}]}]}],"match":[{"host":["files.obelix.cloud"]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"set":{"X-Content-Type-Options":["none"],"X-Frame-Options":["DENY"],"X-Xss-Protection":["1; mode=block;"]}}},{"encodings":{"gzip":{}},"handler":"encode","prefer":["gzip"]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.4:80"}]}],"match":[{"path":["/notifications/hub/negotiate"]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.4:3012"}]}],"match":[{"path":["/notifications/hub"]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"172.23.0.4:80"}]}]}]}],"match":[{"host":["vault.obelix.cloud"]}],"terminal":true}]}}},"tls":{"automation":{"policies":[{"issuers":[{"email":"obelix@obelix.cloud","module":"acme"},{"email":"obelix@obelix.cloud","module":"zerossl"}],"subjects":["firefox.obelix.cloud","office.obelix.cloud","files.obelix.cloud","vault.obelix.cloud"]}]}}}}
1 Like

This topic was automatically closed after 30 days. New replies are no longer allowed.