services: web: image: gitea/gitea:latest container_name: gitea restart: unless-stopped volumes: - ./data:/data expose: - "3000" - "22" ports: - "2245:22" depends_on: - db environment: - DOMAIN=gitea.${DOMAIN} - SSH_DOMAIN=gitea.${DOMAIN} - SSH_PORT=2245 - SSH_LISTEN_PORT=22 networks: - default - web labels: - "traefik.enable=true" - "traefik.http.routers.gitea.entrypoints=https" - "traefik.http.routers.gitea.rule=Host(`gitea.${DOMAIN}`)" - "traefik.http.routers.gitea.tls.certresolver=http" - "traefik.http.services.gitea.loadbalancer.server.port=3000" db: image: mariadb:10 container_name: gitea-db restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=${GITEA_DB_ROOT_PASSWORD} - MYSQL_DATABASE=gitea - MYSQL_USER=gitea - MYSQL_PASSWORD=${GITEA_DB_PASSWORD} - MARIADB_AUTO_UPGRADE=1 volumes: - ./db:/var/lib/mysql runner: image: gitea/act_runner container_name: gitea-runner restart: unless-stopped depends_on: - web volumes: - ./runner-data:/data - /var/run/docker.sock:/var/run/docker.sock environment: - GITEA_INSTANCE_URL=https://gitea.${DOMAIN} - GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_TOKEN} networks: web: external: true