services: grampsweb: container_name: grampsweb image: ghcr.io/gramps-project/grampsweb:25.7.3 restart: always networks: - default - proxy ports: - "5000" 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 volumes: - gramps_users:/app/users - gramps_index:/app/indexdir - gramps_thumb_cache:/app/thumbnail_cache - gramps_cache:/app/cache - gramps_secret:/app/secret - gramps_db:/root/.gramps/grampsdb - gramps_media:/app/media - gramps_tmp:/tmp labels: - "traefik.enable=true" - "traefik.http.routers.grampsweb.rule=Host(`gramps.local`)" grampsweb_celery: container_name: grampsweb_celery image: ghcr.io/gramps-project/grampsweb:latest restart: always 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 volumes: - gramps_users:/app/users - gramps_index:/app/indexdir - gramps_thumb_cache:/app/thumbnail_cache - gramps_cache:/app/cache - gramps_secret:/app/secret - gramps_db:/root/.gramps/grampsdb - gramps_media:/app/media - gramps_tmp:/tmp depends_on: - grampsweb_redis command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2 grampsweb_redis: image: docker.io/library/redis:8.0.3-alpine container_name: grampsweb_redis restart: always volumes: gramps_users: driver: local driver_opts: type: 'none' o: 'bind' device: '/app/gramps/users' gramps_index: driver: local driver_opts: type: 'none' o: 'bind' device: '/app/gramps/index' gramps_thumb_cache: gramps_cache: gramps_secret: driver: local driver_opts: type: 'none' o: 'bind' device: '/app/gramps/secret' gramps_db: driver: local driver_opts: type: 'none' o: 'bind' device: '/app/gramps/db' gramps_media: driver: local driver_opts: type: 'none' o: 'bind' device: '/app/gramps/media' gramps_tmp: networks: proxy: name: proxy external: true