networks: netgrimoire: external: true services: frontend: image: ghcr.io/pouzor/homelable-frontend:latest networks: - netgrimoire environment: - VITE_API_URL=https://homelable-api.netgrimoire.com deploy: replicas: 1 placement: constraints: - node.hostname == znas labels: # --- Caddy reverse proxy --- caddy: homelable.netgrimoire.com caddy.reverse_proxy: "{{upstreams 80}}" # --- Homepage --- homepage.group: Tools homepage.name: Homelable homepage.icon: homelable.png homepage.href: https://homelable.netgrimoire.com homepage.description: Homelab infrastructure visualizer # --- Uptime Kuma --- kuma.homelable.http.url: https://homelable.netgrimoire.com backend: image: ghcr.io/pouzor/homelable-backend:latest networks: - netgrimoire volumes: - /DockerVol/homelable/data:/app/data environment: - SECRET_KEY=${SECRET_KEY} - AUTH_USERNAME=${AUTH_USERNAME} - AUTH_PASSWORD_HASH=${AUTH_PASSWORD_HASH} - SCANNER_RANGES=${SCANNER_RANGES:-["192.168.3.0/24","192.168.4.0/24","192.168.5.0/24"]} - STATUS_CHECKER_INTERVAL=${STATUS_CHECKER_INTERVAL:-60} cap_add: - NET_RAW - NET_ADMIN deploy: replicas: 1 placement: constraints: - node.hostname == znas labels: # --- Caddy reverse proxy --- caddy: homelable-api.netgrimoire.com caddy.reverse_proxy: "{{upstreams 8000}}" # --- Uptime Kuma --- kuma.homelable-api.http.url: https://homelable-api.netgrimoire.com/health mcp: image: ghcr.io/pouzor/homelable-mcp:latest networks: - netgrimoire environment: # Authenticates external MCP clients (Open WebUI, Claude Code, n8n) - MCP_API_KEY=${MCP_API_KEY} # Authenticates MCP server -> backend (internal only, never exposed) - MCP_SERVICE_KEY=${MCP_SERVICE_KEY} - BACKEND_URL=http://backend:8000 deploy: replicas: 1 placement: constraints: - node.hostname == znas labels: # --- Caddy reverse proxy --- # Exposed for Claude Code on remote machines — remove label if LAN-only preferred caddy: homelable-mcp.netgrimoire.com caddy.reverse_proxy: "{{upstreams 8001}}" # --- Uptime Kuma --- kuma.homelable-mcp.http.url: https://homelable-mcp.netgrimoire.com/health # --- DIUN image update notifications --- diun.enable: "true"