# ============================================================================= # felhom-controller Docker Compose # This is deployed as an infrastructure component alongside Traefik/Cloudflared # ============================================================================= services: felhom-controller: image: gitea.dooplex.hu/admin/felhom-controller:latest container_name: felhom-controller restart: unless-stopped ports: - "8080:8080" volumes: # Docker socket — required for compose operations + DB dumps (docker exec) - /var/run/docker.sock:/var/run/docker.sock:ro # Controller config - /opt/docker/felhom-controller/controller.yaml:/opt/docker/felhom-controller/controller.yaml:ro # Controller persistent data (sessions, restic cache, restic password) - controller-data:/opt/docker/felhom-controller/data # Stack compose files (read + write for git sync) - /opt/docker/stacks:/opt/docker/stacks # Backup directories (restic repo + db dumps) - /srv/backups:/srv/backups # All external storage — /mnt/* for multi-storage + restore - /mnt:/mnt:rw # Host /sys — for CPU temperature reading (read-only) - /sys:/host/sys:ro # Host OS info — for monitoring page system info - /etc/os-release:/host/etc/os-release:ro # Host hostname — for monitoring page (os.Hostname() returns container ID) - /etc/hostname:/host/etc/hostname:ro environment: - TZ=Europe/Budapest labels: - "traefik.enable=true" - "traefik.http.routers.controller.rule=Host(`felhom.${DOMAIN}`)" - "traefik.http.routers.controller.entrypoints=websecure" - "traefik.http.routers.controller.tls=true" - "traefik.http.services.controller.loadbalancer.server.port=8080" - "traefik.docker.network=traefik-public" # Health check labels for monitoring - "felhom.managed=true" - "felhom.component=controller" networks: - traefik-public healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"] interval: 30s timeout: 5s start_period: 10s retries: 3 volumes: controller-data: networks: traefik-public: external: true