log: level: info runner: file: .runner capacity: 4 envs: {} env_file: .env timeout: 3h insecure: false fetch_timeout: 5s fetch_interval: 2s labels: [] cache: enabled: true dir: "" host: "" port: 0 # Both the shared network approaches we tried (a custom network name, then # Docker's real "bridge" network) failed to make job containers reachable # from/to this daemon's own embedded cache server - its host/port config # is also unreliable in this act_runner version (confirmed by others: a # fixed port still gets silently ignored in favor of a random one, see # https://codeberg.org/forgejo/docs/issues/996). Using a dedicated # `cache-server` process instead (see runner-cache-server in compose.yml), # whose --host/--port CLI flags are documented and confirmed to actually # work, reached via host.docker.internal + a published fixed port (proven # reachable end-to-end from an isolated per-task-style container). external_server: "http://host.docker.internal:8088/" external_secret_file: "/data/cache_secret" container: network: "" privileged: false # --add-host is what makes host.docker.internal (used for # cache.external_server above) resolve inside job containers on Linux - # Docker only wires it up automatically on Docker Desktop (Mac/Windows). options: "-v /var/run/docker.sock:/var/run/docker.sock --add-host=host.docker.internal:host-gateway" workdir_parent: "" valid_volumes: [] docker_host: "" force_pull: false host: workdir_parent: ""