services: web: image: ghcr.io/hoarder-app/hoarder:${HOARDER_VERSION:-release} container_name: karakeep volumes: - /opt/stacks/karakeep/localdata/data:/data ports: - 17001:3000 env_file: - .env environment: MEILI_ADDR: http://meilisearch:7700 BROWSER_WEB_URL: http://chrome:9222 # OPENAI_API_KEY: ... DATA_DIR: /data deploy: resources: limits: cpus: "1.0" memory: 2G reservations: cpus: "0.5" memory: 1G healthcheck: # karakeep serves health at /api/health (/health is 404) test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s restart: unless-stopped labels: - "homepage.group=productivity" - "homepage.name=Karakeep" - "homepage.icon=sh-karakeep" - "homepage.href=https://hoarder.nuclide.systems" - "homepage.instance.internal.href=http://192.168.1.40:17001" - "homepage.instance.public.href=https://hoarder.nuclide.systems" - "homepage.widget.type=karakeep" - "homepage.widget.url=http://192.168.1.40:17001" - "homepage.widget.key=ak2_19817764ad2d3b7bc010_add146880ec70ee560cc8fbf87b46085" chrome: image: gcr.io/zenika-hub/alpine-chrome:123 container_name: karakeep_chrome shm_size: '512m' command: - --no-sandbox - --disable-gpu - --disable-dev-shm-usage - --remote-debugging-address=0.0.0.0 - --remote-debugging-port=9222 - --hide-scrollbars deploy: resources: limits: cpus: "0.5" memory: 1G reservations: cpus: "0.25" memory: 512M healthcheck: # alpine-chrome has no curl; busybox wget is present. Use 127.0.0.1 NOT # localhost — localhost resolves to ::1 but Chrome binds IPv4 only. test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:9222/json/version"] interval: 30s timeout: 10s retries: 3 start_period: 40s restart: unless-stopped meilisearch: image: getmeili/meilisearch:v1.11.1 container_name: karakeep_meilisearch env_file: - .env environment: MEILI_NO_ANALYTICS: "true" volumes: # - meilisearch:/meili_data - /opt/stacks/karakeep/localdata/meili:/meili_data deploy: resources: limits: cpus: "1.0" memory: 2G reservations: cpus: "0.5" memory: 1G healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7700/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s restart: unless-stopped networks: {}