services: homepage: image: ghcr.io/gethomepage/homepage:latest # container_name: homepage environment: HOMEPAGE_ALLOWED_HOSTS: homepage.netgrimoire.com,glance.netgrimoire.com,homepage:3000,192.168.5.10:3056 HOMEPAGE_VAR_MAILCOW_KEY: 9C7D23-4BCD14-2CA4D3-D8B5D5-59CB4A HOMEPAGE_VAR_DNS_TOKEN: 2f6c5b9b331c2b84 HOMEPAGE_VAR_OPNSENSE_USER: xSt1B1fndmzFQ3x823cKO2/H8/oZOC2BcA0wgtetIwR1CbtRAuHUQoWkiwjskqNkFFJwSaBPi46Vvz6z HOMEPAGE_VAR_OPNSENSE_PASS: 8OBBLQWxz6Wdz/NOFkhmg/0kzAIf2gXCFpFOLbcLmZ83lRyBhk4Ev593omDLYm/Av+AC+mDPlA8Wzkfz HOMEPAGE_VAR_IMMICH_KEY: yawqFGqMOQnGIXLmYr2daygAFFIHMaTnqOWNwZhm8SU # PUID: "1964" # optional, your user id # PGID: "1964" # optional, your group id # TZ: America/Chicago ports: - 3056:3000 volumes: - /DockerVol/homepage/config:/app/config # Make sure your local config directory exists - /DockerVol/homepage/images:/app/public/images:ro - /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations # restart: unless-stopped networks: - netgrimoire deploy: restart_policy: condition: any delay: 5s max_attempts: 3 window: 120s labels: gremlin.version: "2026-04-1" caddy: homepage.netgrimoire.com caddy.reverse_proxy: homepage:3000 caddy.import_1: crowdsec caddy.import_2: authentik diun.enable: "true" monitor.name: Homepage monitor.url: http://homepage:3000 caddy.reverse_proxy: homepage:3000 caddy.import_1: crowdsec caddy.import_2: authentik gremlin.homepage.skip: "true" kuma.homepage.http.name="Homepage" caddy=homepage.netgrimoire.com caddy.import=authentik caddy.reverse_proxy=homepage:3000 placement: constraints: - node.platform.arch != arm - node.platform.arch != aarch64 - node.hostname == znas networks: netgrimoire: external: true