Grampsweb behind Traefik with LetsEncrypt -> Bad Gateway

Hi everyone,

I am attempting to run Grampsweb on a Raspberry Pi 4 behind a Traefik reverse proxy via docker swarm. There is one other service in the same docker-compose file that runs without issues.

For Grampsweb however, I get either Gateway Timeout, 404 or Bad Gateway errors when attempting to access the UI via browser.

I did notice that when I try a wget towards Grampsweb from inside my Traefik container, I can only connect via http not https. See below:

/ # wget http://10.0.2.8:5000
Connecting to 10.0.2.8:5000 (10.0.2.8:5000)
saving to 'index.html'
index.html           100% |********************************|  1377  0:00:00 ETA
'index.html' saved
/ # wget https://10.0.2.8:5000
Connecting to 10.0.2.8:5000 (10.0.2.8:5000)
^C

Does Grampsweb not receive TLS traffic via port 5000? Has anyone else successfully got it to run behind Traefik with LetsEncrypt certificates?

Thank you!

version: "3.7"
services:

  traefik:
    # The latest official supported Traefik docker image
    image: traefik:latest
    ports:
      - "80:80"
      - "443:443"
    networks:
      - proxy
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock
      # Mounts the Traefik static configuration inside the Traefik container
      - /home/traefik/traefik.yml:/etc/traefik/traefik.yml
      - /home/traefik/traefiklogs:/traefiklogs
      - /home/traefik/letsencrypt:/letsencrypt
    environment:
      - CLOUDFLARE_DNS_API_TOKEN= ***********

  navidrome:
    image: deluan/navidrome:latest
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
    networks:
      - proxy
    volumes:
      - /home/traefik/navidrome/data:/data
      - /mnt/audiostick:/music:ro
    deploy:
      labels:
       - "traefik.enable=true"
       - "traefik.docker.network=traefikstack_proxy"
       - "traefik.http.routers.navidrome.rule=Host(`music.mydomain.com`)"
       - "traefik.http.services.navidrome.loadbalancer.server.port=4533"
       - "traefik.http.routers.navidrome.entrypoints=websecure"
       - "traefik.http.routers.navidrome.service=navidrome"
       - "traefik.http.routers.navidrome.tls=true"
       - "traefik.http.routers.navidrome.tls.certresolver=cloudflare"

  grampsweb: &grampsweb
    image: ghcr.io/gramps-project/grampsweb:latest
    environment:
      GRAMPSWEB_TREE: "Gramps Web"  # will create a new tree if not exists
      GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://grampsweb_redis:6379/0"
      GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://grampsweb_redis:6379/0"
      GRAMPSWEB_RATELIMIT_STORAGE_URI: "redis://grampsweb_redis:6379/1"
    depends_on:
      - grampsweb_redis
    ports: []
    networks:
      - proxy
    volumes:
      - /home/traefik/gramps/gramps_users:/app/users  # persist user database
      - /home/traefik/gramps/gramps_index:/app/indexdir  # persist search index
      - /home/traefik/gramps/gramps_thumb_cache:/app/thumbnail_cache  # persist thumbnails
      - /home/traefik/gramps/gramps_cache:/app/cache  # persist export and report caches
      - /home/traefik/gramps/gramps_secret:/app/secret  # persist flask secret
      - /home/traefik/gramps/gramps_db:/root/.gramps/grampsdb  # persist Gramps database
      - /home/traefik/gramps/gramps_media:/app/media  # persist media files
      - /home/traefik/gramps/gramps_tmp:/tmp
    deploy:
      labels:
       - "traefik.enable=true"
       - "traefik.docker.network=traefikstack_proxy"
       - "traefik.http.routers.grampsweb.service=grampsweb"
       - "traefik.http.routers.grampsweb.rule=Host(`ahnen.mydomain.com`)"
       - "traefik.http.services.grampsweb.loadbalancer.server.port=5000"
       - "traefik.http.routers.grampsweb.entrypoints=websecure"
       - "traefik.http.routers.grampsweb.tls=true"
       - "traefik.http.routers.grampsweb.tls.certresolver=cloudflare"
       - "traefik.http.services.grampsweb.loadbalancer.server.scheme=https"

  grampsweb_celery:
    <<: *grampsweb  # YAML merge key copying the entire grampsweb service config
    ports: []
    depends_on:
      - grampsweb_redis
    networks:
      - proxy
    command: celery -A gramps_webapi.celery worker --loglevel=INFO
    labels: []

  grampsweb_redis:
    image: redis:alpine
    networks:
      - proxy

networks:
  proxy:

I wrote a more comprehensive question here: Grampsweb behind Traefik in Docker Swarm - Bad Gateway

This one can be closed.