# Management-plane services: portainer, github-runner, watchtower. # These manage the application stack rather than being part of it. # # This file also owns the portainer_proxy network that the main # docker-compose.yml references as external: true. # # Fresh-install order: # docker compose -f portainer-compose.yml up -d # network + mgmt plane first # dc up -d # application stack second services: portainer: container_name: portainer image: portainer/portainer-ce:latest restart: unless-stopped networks: - portainer_proxy volumes: - /var/run/docker.sock:/var/run/docker.sock - /config/portainer:/data ports: - "9100:9000" labels: - "com.centurylabs.watchtower.enable=false" github-runner: container_name: github_runner image: myoung34/github-runner:latest restart: unless-stopped environment: - ACCESS_TOKEN=${GITHUB_RUNNER_ACCESS_TOKEN} - REPO_URL=https://github.com/ginnoir/homelabstack - RUNNER_NAME=valhalla - RUNNER_LABELS=self-hosted,Linux,x64 - RUNNER_SCOPE=repo - DOCKER_GROUP_GID=1001 volumes: - /var/run/docker.sock:/var/run/docker.sock - /home/ginnoir/valhalla-lab:/valhalla-lab - /config/caddy:/config/caddy labels: - "com.centurylabs.watchtower.enable=false" watchtower: container_name: watchtower image: containrrr/watchtower:latest restart: unless-stopped environment: - DOCKER_API_VERSION=1.40 - WATCHTOWER_NOTIFICATION_SKIP_TITLE=true - WATCHTOWER_NOTIFICATION_URL=ntfy://ntfy.ginnoir.com/watchtower?title=WatchtowerUpdates volumes: - /var/run/docker.sock:/var/run/docker.sock labels: - "com.centurylabs.watchtower.enable=false" networks: portainer_proxy: name: portainer_proxy driver: bridge