# Gitea Actions self-hosted runner.
#
# Polls https://gitea.phasefinal.com for queued jobs and runs them in
# ephemeral job-containers spawned via the host docker socket. The
# runner registers itself on first start using
# GITEA_RUNNER_REGISTRATION_TOKEN; subsequent starts reuse credentials
# cached at ${DATA_DIR}/.runner.
#
# Tunables live in .env. config.yaml controls runner internals (job
# timeouts, capacity, container engine settings) — edit conf/config.yaml,
# don't inline that here.

services:
  runner:
    image: ${RUNNER_IMAGE}
    container_name: gitea-runner
    restart: unless-stopped
    environment:
      - GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL}
      - GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_REGISTRATION_TOKEN}
      - GITEA_RUNNER_NAME=${GITEA_RUNNER_NAME}
      - GITEA_RUNNER_LABELS=${GITEA_RUNNER_LABELS}
      - CONFIG_FILE=/data/config.yaml
    volumes:
      - ${DATA_DIR}:/data
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - tnet
    labels:
      - homepage.group=Agents (no UI)
      - homepage.name=gitea-runner
      - homepage.icon=mdi-cog-play
      - homepage.description=Gitea Actions self-hosted runner (${GITEA_RUNNER_NAME})

networks:
  tnet:
    name: traefik-net
    external: true
