Grampsweb behind Traefik in Docker Swarm - Bad Gateway

Hi all,

I am trying to get Grampsweb running behind a Traefik reverse proxy. I have tried everything I could think of without success. I already have other services running, so I am confident that the overall setup is fine.

Following some information:

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:

traefik.yml

################################################################
# API and dashboard configuration
################################################################
api:
  dashboard: false
  insecure: false

################################################################
# Docker configuration backend
################################################################
providers:
  docker:
    exposedByDefault: false
    swarmMode: true

################################################################
# Access Logging
################################################################
# enable Access logs
#accessLog: {}
#Configuring Multiple Filters
accessLog:
  filepath: "./traefiklogs/access.log"
  filters:
    statusCodes:
      - "404"
      - "300-302"
    retryAttempts: true
    minDuration: "10ms"

################################################################
# Traefik Logging -  DEBUG, PANIC, FATAL, ERROR, WARN, and INFO (DEFAULT is ERROR)
################################################################
log:
  level: DEBUG
  filepath: "./traefiklogs/traefik.log"

################################################################
# Entrypoint
################################################################
entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

################################################################
# Challenege DNS
################################################################
certificatesResolvers:
  cloudflare:
    acme:
      email: me@myproder.com
      storage: /letsencrypt/acme.json
      dnsChallenge:
        provider: cloudflare
        resolvers:
          - "1.1.1.1:53"
          - "1.0.0.1:53"
        delayBeforeCheck: 0

All services are on the same docker network and the DNS setup looks good.

I am able to connect to the gampsweb container via Traefik:

 # 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

The Traefik logs look good.

Following the Grampsweb logs:

jdad@traefik:~/traefik$ sudo docker service logs grampsstack_grampsweb
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (__main__.py:10): Gtk-CRITICAL **: 15:23:26.695: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [14] [INFO] Starting gunicorn 21.2.0
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [14] [INFO] Listening at: http://0.0.0.0:5000 (14)
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [14] [INFO] Using worker: sync
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [15] [INFO] Booting worker with pid: 15
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [16] [INFO] Booting worker with pid: 16
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [17] [INFO] Booting worker with pid: 17
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [18] [INFO] Booting worker with pid: 18
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [19] [INFO] Booting worker with pid: 19
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:31 +0000] [20] [INFO] Booting worker with pid: 20
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:32 +0000] [21] [INFO] Booting worker with pid: 21
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | [2024-04-15 15:23:32 +0000] [22] [INFO] Booting worker with pid: 22
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:16): Gtk-CRITICAL **: 15:23:47.234: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:21): Gtk-CRITICAL **: 15:23:47.719: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:19): Gtk-CRITICAL **: 15:23:48.266: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:22): Gtk-CRITICAL **: 15:23:48.617: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:15): Gtk-CRITICAL **: 15:23:48.737: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:17): Gtk-CRITICAL **: 15:23:48.916: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:18): Gtk-CRITICAL **: 15:23:48.975: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    |
grampsstack_grampsweb.1.denjsa0mpw5t@traefik    | (gunicorn:20): Gtk-CRITICAL **: 15:23:49.453: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed

for the redis container:

jdad@traefik:~/traefik$ sudo docker service logs grampsstack_grampsweb_redis
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:C 15 Apr 2024 15:23:22.057 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:C 15 Apr 2024 15:23:22.062 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:C 15 Apr 2024 15:23:22.062 * Redis version=7.2.4, bits=64, commit=00000000, modified=0, pid=1, just started
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:C 15 Apr 2024 15:23:22.062 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:M 15 Apr 2024 15:23:22.064 * monotonic clock: POSIX clock_gettime
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:M 15 Apr 2024 15:23:22.067 * Running mode=standalone, port=6379.
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:M 15 Apr 2024 15:23:22.068 * Server initialized
grampsstack_grampsweb_redis.1.k5mhwp2zjjtv@traefik    | 1:M 15 Apr 2024 15:23:22.069 * Ready to accept connections tcp

for the celery container:

jdad@traefik:~/traefik$ sudo docker service logs grampsstack_grampsweb_celery
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | (__main__.py:8): Gtk-CRITICAL **: 15:26:54.189: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | /usr/local/lib/python3.11/dist-packages/gramps/plugins/tool/check.py:51: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   from gi.repository import Gtk
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | (celery:1): Gtk-CRITICAL **: 15:27:05.620: gtk_icon_theme_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | /usr/local/lib/python3.11/dist-packages/celery/platforms.py:829: SecurityWarning: You're running the worker with superuser privileges: this is
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | absolutely not recommended!
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | Please specify a different user using the --uid option.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | User information: uid=0 euid=0 gid=0 egid=0
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |  -------------- celery@478253833af3 v5.3.6 (emerald-rush)
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | --- ***** -----
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | -- ******* ---- Linux-5.15.0-1050-raspi-aarch64-with-glibc2.36 2024-04-15 15:27:06
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | - *** --- * ---
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | - ** ---------- [config]
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | - ** ---------- .> app:         default:0xffff7572ddd0 (.default.Loader)
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | - ** ---------- .> transport:   redis://grampsweb_redis:6379/0
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | - ** ---------- .> results:     redis://grampsweb_redis:6379/0
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | - *** --- * --- .> concurrency: 4 (prefork)
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | --- ***** -----
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |  -------------- [queues]
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |                 .> celery           exchange=celery(direct) key=celery
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | [tasks]
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.check_repair_database
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.delete_objects
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.export_db
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.export_media
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.generate_report
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.import_file
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.import_media_archive
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.media_ocr
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.search_reindex_full
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.search_reindex_incremental
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.send_email_confirm_email
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.send_email_new_user
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.send_email_reset_password
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   . gramps_webapi.api.tasks.upgrade_database_schema
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | [2024-04-15 15:27:07,770: WARNING/MainProcess] /usr/local/lib/python3.11/dist-packages/celery/worker/consumer/consumer.py:507: CPendingDeprecationWarning: The broker_connection_retry configuration setting will no longer determine
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | whether broker connection retries are made during startup in Celery 6.0 and above.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | If you wish to retain the existing behavior for retrying connections on startup,
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | you should set broker_connection_retry_on_startup to True.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   warnings.warn(
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | [2024-04-15 15:27:07,802: INFO/MainProcess] Connected to redis://grampsweb_redis:6379/0
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | [2024-04-15 15:27:07,805: WARNING/MainProcess] /usr/local/lib/python3.11/dist-packages/celery/worker/consumer/consumer.py:507: CPendingDeprecationWarning: The broker_connection_retry configuration setting will no longer determine
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | whether broker connection retries are made during startup in Celery 6.0 and above.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | If you wish to retain the existing behavior for retrying connections on startup,
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | you should set broker_connection_retry_on_startup to True.
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |   warnings.warn(
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    |
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | [2024-04-15 15:27:07,819: INFO/MainProcess] mingle: searching for neighbors
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | [2024-04-15 15:27:08,850: INFO/MainProcess] mingle: all alone
grampsstack_grampsweb_celery.1.pstkgowt567l@traefik    | [2024-04-15 15:27:08,892: INFO/MainProcess] celery@478253833af3 ready.

I also notices that Traefik identified both Grampsweb and Grampsweb_Celery were identified as servers as they use the same port 5000. Maybe this is a problem.

Whenever I try to connect to the URL, I get either a “Bad Gateway” or a “Gateway Timeout” error (I suspect it depends on which server Traefik forwarded the request).

Does anybody have any idea what the problem might be here? Thank you!

Hi, I suggest to try with some simple hello world flask container that is also served on port 5000, and post on Traefik forums to resolve any issues you are facing. Once you get that to work, you can replace the hello world with Gramps Web and we can see if there are any Gramps-specific issues.