# Grimmory - E-könyvtár (a BookLore közösségi utódja): könyvek, olvasó, OPDS, Kobo és KOReader szinkron # Domain: ${SUBDOMAIN}.${DOMAIN} # Database: MariaDB 11.4 (the major upstream's own compose runs — `09` decision 42's rule; the official image, so # MARIADB_AUTO_UPGRADE=1 as every catalog MariaDB sidecar, R-459) # RAM: ~700M (mem_limit: 1408M total — app 1024M + db 384M) | Pi-compatible: Yes (amd64, arm64) # # Environment variables: # DOMAIN - Your domain (e.g., demo-felhom.eu) # HDD_PATH - A meghajtó, amelyen a könyvtár él # DB_PASSWORD - Adatbázis jelszó (generált; csak a belső hálón) # DB_ROOT_PASSWORD - Adatbázis root jelszó (generált; csak a belső hálón) # # Folders: the books in ${USERDATA_PATH}/media/grimmory (the household sees and fills it), the drop-in inbox in # ${IMPORT_PATH}/grimmory (BookDrop: a file put there is offered for import), covers/cache in ${HDD_PATH}/appdata. # Mirrors upstream's deploy/compose/docker-compose.yml, pinned; OIDC off, Swagger off. services: grimmory: image: ghcr.io/grimmory-tools/grimmory:v3.5.0 container_name: grimmory restart: unless-stopped environment: - TZ=Europe/Budapest - USER_ID=1000 - GROUP_ID=1000 - DATABASE_URL=jdbc:mariadb://grimmory-db:3306/grimmory - DATABASE_USERNAME=grimmory - DATABASE_PASSWORD=${DB_PASSWORD} # R-798: the API docs stay off. v3.5.0 reads API_DOCS_ENABLED (application.yaml: ${API_DOCS_ENABLED:false}); the # SWAGGER_ENABLED the template used to set is read by nothing. Explicit, so a changed upstream default cannot open it. - API_DOCS_ENABLED=false - FORCE_DISABLE_OIDC=true volumes: - ${HDD_PATH}/appdata/grimmory/data:/app/data - ${USERDATA_PATH}/media/grimmory:/books - ${IMPORT_PATH}/grimmory:/bookdrop networks: - traefik-public - grimmory-internal depends_on: grimmory-db: condition: service_healthy deploy: resources: limits: memory: 1024M healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:6060/api/v1/healthcheck"] interval: 30s timeout: 5s retries: 5 start_period: 120s labels: - "traefik.enable=true" - "traefik.http.routers.grimmory.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)" - "traefik.http.routers.grimmory.entrypoints=websecure" - "traefik.http.routers.grimmory.tls=true" - "traefik.http.routers.grimmory.tls.certresolver=letsencrypt" - "traefik.http.services.grimmory.loadbalancer.server.port=6060" grimmory-db: image: mariadb:11.4 container_name: grimmory-db restart: unless-stopped environment: - TZ=Europe/Budapest - MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD} - MARIADB_DATABASE=grimmory - MARIADB_USER=grimmory - MARIADB_PASSWORD=${DB_PASSWORD} - MARIADB_AUTO_UPGRADE=1 volumes: - grimmory_db:/var/lib/mysql networks: - grimmory-internal deploy: resources: limits: memory: 384M healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 10 start_period: 30s volumes: grimmory_db: networks: traefik-public: external: true grimmory-internal: