Gramps-Web via YAML

Hello,

I’m trying to create a custom app via YAML, but I have no idea what am I doing wrong:

services:
  grampsweb: &grampsweb
    image: ghcr.io/gramps-project/grampsweb:latest
    restart: unless-stopped
    user: "568:568"
    ports:
      - "5000:5000"  # host:docker
    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  # persist user database
      - gramps_index:/app/indexdir  # persist search index
      - gramps_thumb_cache:/app/thumbnail_cache  # persist thumbnails
      - gramps_cache:/app/cache  # persist export and report caches
      - gramps_secret:/app/secret  # persist flask secret
      - gramps_db:/root/.gramps/grampsdb  # persist Gramps database
      - gramps_media:/app/media  # persist media files
      - gramps_tmp:/tmp

  grampsweb_celery:
    <<: *grampsweb
    ports: []
    container_name: grampsweb_celery
    depends_on:
      - grampsweb_redis
    command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2

  grampsweb_redis:
    image: docker.io/library/redis:7.2.4-alpine
    container_name: grampsweb_redis
    restart: unless-stopped
    user: "568:568"
volumes:
  gramps_users:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_users
  gramps_index:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_index
  gramps_thumb_cache:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_thumb_cache
  gramps_cache:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_cache
  gramps_secret:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_secret
  gramps_db:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_db
  gramps_media:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_media
  gramps_tmp:
    external: true
    name: /mnt/SSD-Mirror/gramps-web/gramps_tmp

I also tried inputting host paths directly in volumes definitions above, without the master volume tag, etc.

In the lifecycle log I get: Timed out waiting for response.

For every dataset I set ACL:
everyone: modify
apps (group): modify

I also first tried creating a parent dataset with SMB access where I then manually created sub-directories, but this didn’t work either. Back then I got in lifecycle log an error that directories couldn’t be found.

All datasets were created as multiprotocol, so they shouldn’t have problems with apps accessing (at least when I did it this way before for normal apps, it worked just fine).

And sorry if the question seems silly, but I couldn’t find the solution anywhere.

I also tried with portainer, but it didn’t work as well.

Posting here for anyone else interested:

after re-creating the datasets as “for apps” and not “multiprotocol”, this YAML now works:

services:
  grampsweb: &grampsweb
    image: ghcr.io/gramps-project/grampsweb:latest
    restart: unless-stopped
    user: "568:568"
    ports:
      - "5000:5000"  # host:docker
    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:
      - /mnt/SSD-Mirror/gramps-web/gramps_users:/app/users:rw  # persist user database
      - /mnt/SSD-Mirror/gramps-web/gramps_index:/app/indexdir:rw  # persist search index
      - /mnt/SSD-Mirror/gramps-web/gramps_thumb_cache:/app/thumbnail_cache:rw  # persist thumbnails
      - /mnt/SSD-Mirror/gramps-web/gramps_cache:/app/cache:rw  # persist export and report caches
      - /mnt/SSD-Mirror/gramps-web/gramps_secret:/app/secret:rw  # persist flask secret
      - /mnt/SSD-Mirror/gramps-web/gramps_db:/root/.gramps/grampsdb:rw  # persist Gramps database
      - /mnt/SSD-Mirror/gramps-web/gramps_db:/.local/share/gramps/grampsdb:rw  # persist Gramps database
      - /mnt/SSD-Mirror/gramps-web/gramps_media:/app/media:rw  # persist media files
      - /mnt/SSD-Mirror/gramps-web/gramps_tmp:/tmp:rw
      - /mnt/SSD-Mirror/gramps-web/gramps_config:/app/config:rw

  grampsweb_celery:
    <<: *grampsweb
    ports: []
    container_name: grampsweb_celery
    depends_on:
      - grampsweb_redis
    command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2

  grampsweb_redis:
    image: docker.io/library/redis:7.2.4-alpine
    container_name: grampsweb_redis
    restart: unless-stopped
    user: "568:568"

I also had to mount host path to volume “/.local/share/gramps/grampsdb” which wasn’t listed originally in the documentation page of grampsweb