# Gramps Web - Családfa készítő és genealógiai szoftver # Domain: ${SUBDOMAIN}.${DOMAIN} # Database: None (file-based) # RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes # # Environment variables: # DOMAIN - Your domain (e.g., demo-felhom.eu) # GRAMPSWEB_SECRET_KEY- Titkosítási kulcs (auto-generated) services: gramps-web: image: ghcr.io/gramps-project/grampsweb:v25.6.0 container_name: gramps-web restart: unless-stopped environment: - TZ=Europe/Budapest - GRAMPSWEB_TREE=Family Tree - GRAMPSWEB_SECRET_KEY=${GRAMPSWEB_SECRET_KEY} volumes: # Storage layout — every path here is named by the image's OWN environment # (docker image inspect ghcr.io/gramps-project/grampsweb:v25.6.0 → Config.Env), and the set # matches upstream's reference compose # (gramps-web-docs/examples/docker-compose-base/docker-compose.yml). # # What this template mounted before, measured 2026-08-02: only /app/data, /app/media and # /tmp — and **/app/data is a path the application never writes**; it appears nowhere in the # image's environment. So the FAMILY TREE (GRAMPS_DATABASE_PATH=/root/.gramps/grampsdb) and # the ACCOUNTS DATABASE (GRAMPSWEB_USER_DB_URI=…/app/users/users.sqlite) both landed in the # container's writable layer: destroyed by any redeploy, and absent from every backup, while # gramps_data was tarred nightly as an empty directory. - gramps_users:/app/users # GRAMPSWEB_USER_DB_URI — accounts - gramps_db:/root/.gramps/grampsdb # GRAMPS_DATABASE_PATH — the family tree - gramps_index:/app/indexdir # GRAMPSWEB_SEARCH_INDEX_DB_URI - gramps_media:/app/media # GRAMPSWEB_MEDIA_BASE_DIR - gramps_thumb_cache:/app/thumbnail_cache # GRAMPSWEB_THUMBNAIL_CACHE_CONFIG__CACHE_DIR - gramps_cache:/app/cache # request/persistent caches, reports, exports - gramps_secret:/app/secret # upstream reference compose - gramps_tmp:/tmp networks: - traefik-public deploy: resources: limits: memory: 1024M healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:5000"] interval: 30s timeout: 5s retries: 3 start_period: 30s labels: - "traefik.enable=true" - "traefik.http.routers.gramps-web.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)" - "traefik.http.routers.gramps-web.entrypoints=websecure" - "traefik.http.routers.gramps-web.tls=true" - "traefik.http.routers.gramps-web.tls.certresolver=letsencrypt" - "traefik.http.services.gramps-web.loadbalancer.server.port=5000" volumes: gramps_users: gramps_db: gramps_index: gramps_media: gramps_thumb_cache: gramps_cache: gramps_secret: gramps_tmp: networks: traefik-public: external: true