Files
gitops-automation/docker-compose.yml
T
william 357791d6e3
build-agent / build-and-push (push) Failing after 18s
Scaffold Matrix + GitOps + Claude automation stack
2026-08-23 10:25:57 +00:00

97 lines
3.2 KiB
YAML

services:
traefik:
image: traefik:v3.1
container_name: traefik
restart: unless-stopped
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=web"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
- "--log.level=INFO"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "traefik_letsencrypt:/letsencrypt"
networks:
- web
# Routes for services that live in OTHER compose files (Gitea, Portainer) are added
# as labels on those containers directly, not here — see README "Fronting existing
# services" section.
matrix-homeserver:
image: ghcr.io/continuwuity/continuwuity:latest
container_name: matrix-homeserver
restart: unless-stopped
environment:
CONTINUWUITY_SERVER_NAME: ${MATRIX_SERVER_NAME}
CONTINUWUITY_DATABASE_PATH: /var/lib/continuwuity
CONTINUWUITY_ADDRESS: 0.0.0.0
CONTINUWUITY_PORT: 8008
# Private control-room bot only — no federation, no open registration.
# Registration is flipped on temporarily, once, to create the bot account
# (see README "First boot: Matrix bot account").
CONTINUWUITY_ALLOW_FEDERATION: "false"
CONTINUWUITY_ALLOW_REGISTRATION: ${MATRIX_ALLOW_REGISTRATION:-false}
volumes:
- matrix_data:/var/lib/continuwuity
networks:
- web
labels:
- "traefik.enable=true"
- "traefik.http.routers.matrix.rule=Host(`${MATRIX_SERVER_NAME}`)"
- "traefik.http.routers.matrix.entrypoints=websecure"
- "traefik.http.routers.matrix.tls.certresolver=letsencrypt"
- "traefik.http.services.matrix.loadbalancer.server.port=8008"
claude-agent:
image: ${GITEA_REGISTRY_IMAGE}
container_name: claude-agent
restart: unless-stopped
env_file: .env
volumes:
- agent_workspace:/workspace
networks:
- web
labels:
- "traefik.enable=true"
- "traefik.http.routers.agent.rule=Host(`${AGENT_HOSTNAME}`)"
- "traefik.http.routers.agent.entrypoints=websecure"
- "traefik.http.routers.agent.tls.certresolver=letsencrypt"
- "traefik.http.services.agent.loadbalancer.server.port=3001"
act_runner:
image: gitea/act_runner:latest
container_name: act_runner
restart: unless-stopped
environment:
GITEA_INSTANCE_URL: ${GITEA_URL}
GITEA_RUNNER_REGISTRATION_TOKEN: ${ACT_RUNNER_REGISTRATION_TOKEN}
GITEA_RUNNER_NAME: gitops-vps-runner
GITEA_RUNNER_LABELS: docker:docker://node:22-bookworm
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- act_runner_data:/data
networks:
- web
networks:
web:
external: true
volumes:
traefik_letsencrypt:
matrix_data:
agent_workspace:
act_runner_data: