Nextcloud fails to log in behind Caddy; is disabling caching called for?

1. The problem I’m having:

I have installed Nextcloud-AIO in a Docker container on my server, and used its built-in setup flow to set its URL to cloud.xanderwhart.us.

In a separate container, which shares a Docker network with the Nextcloud-AIO container, I am running Caddy as a reverse proxy.

When I attempt to log in to Nextcloud-AIO using the default provided admin credentials, I get an error message:

Temporary error.
Please try again.

I am posting this issue here because this GitHub issue of people with similar errors has several people saying they were able to fix this issue by disabling caching on their reverse proxy, which suggests to me that my reverse proxy (Caddy) might also somehow be implicated.

2. Error messages and/or full log output:

I apologize for truncating the log; however, I’ve been trying to solve this issue for a month and have had the log in debug mode the entire time; the full thing is nearly 1GB in size and something like 2.5 million lines.

This appears to be relevant log entries from around the time I submitted a Nextcloud login request:

caddy-1  | {"level":"debug","ts":1738361687.3796778,"logger":"http.stdlib","msg":"http: TLS handshake error from 98.246.122.50:43680: no certificate available for 'xanderwhart.us'"}
caddy-1  | {"level":"debug","ts":1738361687.4044147,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"nextcloud-aio-apache:11000","total_upstreams":1}
caddy-1  | {"level":"debug","ts":1738361687.405074,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"nextcloud-aio-apache:11000","duration":0.000631304,"request":{"remote_ip":"98.246.122.50","remote_port":"43624","client_ip":"98.246.122.50","proto":"HTTP/2.0","method":"GET","host":"cloud.xanderwhart.us","uri":"/apps/theming/img/background/jenna-kim-the-globe.webp","headers":{"Cookie":["REDACTED"],"Sec-Fetch-Site":["same-origin"],"Priority":["u=4, i"],"X-Forwarded-For":["98.246.122.50"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Fetch-Dest":["image"],"Sec-Fetch-Mode":["no-cors"],"Te":["trailers"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["cloud.xanderwhart.us"],"Accept-Language":["en-US,en;q=0.5"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"],"Accept":["image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"cloud.xanderwhart.us"}},"headers":{"Referrer-Policy":["no-referrer"],"Last-Modified":["Fri, 31 Jan 2025 20:28:19 GMT"],"Content-Length":["98876"],"Content-Type":["image/webp"],"Strict-Transport-Security":["max-age=31536000;"],"X-Frame-Options":["SAMEORIGIN"],"X-Permitted-Cross-Domain-Policies":["none"],"X-Robots-Tag":["noindex, nofollow"],"Accept-Ranges":["bytes"],"Date":["Fri, 31 Jan 2025 22:14:47 GMT"],"Etag":["\"1823c-62d06621e5f59\""],"X-Content-Type-Options":["nosniff"],"X-Xss-Protection":["1; mode=block"],"Cache-Control":["max-age=15778463"]},"status":200}
caddy-1  | {"level":"warn","ts":1738361687.4059002,"logger":"http.handlers.reverse_proxy","msg":"aborting with incomplete response","upstream":"nextcloud-aio-apache:11000","duration":0.000631304,"request":{"remote_ip":"98.246.122.50","remote_port":"43624","client_ip":"98.246.122.50","proto":"HTTP/2.0","method":"GET","host":"cloud.xanderwhart.us","uri":"/apps/theming/img/background/jenna-kim-the-globe.webp","headers":{"Cookie":["REDACTED"],"Sec-Fetch-Site":["same-origin"],"Priority":["u=4, i"],"X-Forwarded-For":["98.246.122.50"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Fetch-Dest":["image"],"Sec-Fetch-Mode":["no-cors"],"Te":["trailers"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["cloud.xanderwhart.us"],"Accept-Language":["en-US,en;q=0.5"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"],"Accept":["image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"cloud.xanderwhart.us"}},"error":"writing: http2: stream closed"}
caddy-1  | {"level":"debug","ts":1738361687.40595,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"nextcloud-aio-apache:11000","total_upstreams":1}
caddy-1  | {"level":"debug","ts":1738361687.4059675,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"nextcloud-aio-apache:11000","duration":0.000003567,"request":{"remote_ip":"98.246.122.50","remote_port":"43624","client_ip":"98.246.122.50","proto":"HTTP/2.0","method":"GET","host":"cloud.xanderwhart.us","uri":"/core/img/logo/logo.svg","headers":{"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Fetch-Dest":["image"],"Accept":["image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5"],"Sec-Fetch-Mode":["no-cors"],"Sec-Fetch-Site":["same-origin"],"Priority":["u=4, i"],"Te":["trailers"],"Accept-Language":["en-US,en;q=0.5"],"Cookie":["REDACTED"],"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"],"X-Forwarded-For":["98.246.122.50"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["cloud.xanderwhart.us"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"cloud.xanderwhart.us"}},"error":"context canceled"}
caddy-1  | {"level":"debug","ts":1738361688.2332754,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"nextcloud-aio-apache:11000","total_upstreams":1}
caddy-1  | {"level":"debug","ts":1738361688.2887018,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"nextcloud-aio-apache:11000","duration":0.055354094,"request":{"remote_ip":"98.246.122.50","remote_port":"43624","client_ip":"98.246.122.50","proto":"HTTP/2.0","method":"GET","host":"cloud.xanderwhart.us","uri":"/nextcloud/index.php/apps/files/preview-service-worker.js","headers":{"User-Agent":["Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"],"X-Forwarded-For":["98.246.122.50"],"X-Forwarded-Host":["cloud.xanderwhart.us"],"Te":["trailers"],"Cache-Control":["no-cache"],"Accept-Language":["en-US,en;q=0.5"],"Cookie":["REDACTED"],"Sec-Fetch-Dest":["serviceworker"],"Priority":["u=4"],"Accept":["*/*"],"Service-Worker":["script"],"Pragma":["no-cache"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Fetch-Mode":["same-origin"],"Sec-Fetch-Site":["same-origin"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":true,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"cloud.xanderwhart.us"}},"headers":{"X-Content-Type-Options":["nosniff"],"X-Permitted-Cross-Domain-Policies":["none"],"Cache-Control":["no-cache, no-store, must-revalidate"],"Referrer-Policy":["no-referrer"],"Set-Cookie":["REDACTED"],"X-Request-Id":["m2meOmL81LClKxM482KC"],"Content-Length":["4734"],"Content-Type":["text/html; charset=UTF-8"],"Feature-Policy":["autoplay 'self';camera 'self';fullscreen 'self' https://cloud.xanderwhart.us;geolocation 'none';microphone 'self';payment 'none'"],"Date":["Fri, 31 Jan 2025 22:14:48 GMT"],"X-Frame-Options":["SAMEORIGIN"],"X-Robots-Tag":["noindex, nofollow"],"Content-Security-Policy":["default-src 'none';base-uri 'none';manifest-src 'self';script-src 'nonce-7K5CBxai72YGXt6GFqexe5gcwE4eT7VlF84bZ+xX3fA=' blob:;script-src-elem 'strict-dynamic' 'nonce-7K5CBxai72YGXt6GFqexe5gcwE4eT7VlF84bZ+xX3fA=' blob:;style-src 'self' 'unsafe-inline';img-src 'self' data: blob: https://*.tile.openstreetmap.org https://cloud.xanderwhart.us;font-src 'self' data:;connect-src 'self' blob: cloud.xanderwhart.us:3478 wss://cloud.xanderwhart.us;media-src 'self' blob:;frame-src 'self' nc: https://cloud.xanderwhart.us;child-src blob: 'self';frame-ancestors 'self' https://cloud.xanderwhart.us;worker-src blob: 'self';form-action 'self' https://cloud.xanderwhart.us"],"Strict-Transport-Security":["max-age=31536000;"],"X-Xss-Protection":["1; mode=block"]},"status":404}

3. Caddy version:

v2.9.1

4. How I installed and ran Caddy:

a. System environment:

  • Operating system: OpenMediaVault 7.4.16-1 (Sandworm), which is based on Debian 12 (Bookworm)
  • Architecture: x86_64
  • Docker version: 27.5.1, build 9f9e405

b. Command:

n/a

c. Service/unit/compose file:

services:
  caddy:
    image: serfriz/caddy-cloudflare-ddns-crowdsec-geoip-security-dockerproxy:2.9.1
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    environment:
      - CADDY_INGRESS_NETWORKS=caddy,nextcloud-aio
      - CADDY_DOCKER_CADDYFILE_PATH=/etc/caddy/Caddyfile
    networks:
      - caddy
      - nextcloud-aio
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./Caddyfile:/etc/caddy/Caddyfile
      #- ./site:/srv
      - caddy_data:/data
      - caddy_config:/config

networks:
  caddy:
    external: true
  nextcloud-aio:
    external: true

volumes:
  caddy_data:
  caddy_config:

d. My complete Caddy config:

{
        debug
        dynamic_dns {
                provider cloudflare {env.CF_API_TOKEN}
                domains {
                        xanderwhart.us *
                        motley.club
                        motley.rocks *
                        spencerdub.me *
                }
        }
}


(cloudflare) {
        tls {
                dns cloudflare {env.CF_API_TOKEN}
        }
}

https://cloud.xanderwhart.us:443 {
        import cloudflare
        reverse_proxy nextcloud-aio-apache:11000
}

e. Nextcloud-AIO Docker Compose file:

services:
  nextcloud-aio-mastercontainer:
    image: nextcloud/all-in-one:latest
    init: true
    restart: always
    container_name: nextcloud-aio-mastercontainer
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - 5050:8080
    environment:
      # - APACHE_ADDITIONAL_NETWORK=caddy
      - APACHE_PORT=11000
      - APACHE_IP_BINDING=127.0.0.1
      - NEXTCLOUD_DATADIR=/akhet/system/appdata/nextcloud_data
    networks:
      - caddy
      
volumes:
  nextcloud_aio_mastercontainer:
    name: nextcloud_aio_mastercontainer

networks:
  caddy:
    external: true

5. Links to relevant resources:

I am deeply grateful for all help that you can provide. Thank you.