ProtectHome=read-only made the whole home read-only and only RUNNER_DIR was punched back through, so forgejo-runner could not create $HOME/.cache and disabled its cache server on every install. actions/cache was silently off on every rig-installed Forgejo runner, evidenced by one error line in the journal while `status` reported a healthy runner. Both halves are required, and the obvious one-line version is WORSE than the bug: a ReadWritePaths entry naming a path that does not exist makes systemd refuse to start the unit at all — "Failed to set up mount namespacing", three restart attempts, service down. Measured on a live runner before writing this. So the directory is created at install, owned by the runner user like RUNNER_DIR beside it, and the unit lists it. ProtectHome stays read-only: the runner supervises job containers on this box's docker socket, and the cache is not a reason to widen that. Verified live from scratch: directory removed, unit removed, converge, then zero cache-server errors and the two cache listeners bound. Closes #135 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 109.md | ||
| 111.md | ||
| 112.md | ||
| 116.md | ||
| 135.md | ||
| 152.md | ||
| 153.md | ||
| 160.md | ||
| 162.md | ||
| README.md | ||
changelog.d/ — the next release's section, one fragment per issue
Machine-assembled by bin/changelog-assemble (#112): every PR that changes
behavior writes one file here — <issue>.md, the exact prose that will be
published, nothing else — and the release PR folds them all into the next
## X.Y.Z — DATE section of CHANGELOG.md, consuming them. Distinct
filenames never conflict, which is this directory's whole reason to exist.
This README is the marker that keeps the directory tracked when it holds no
fragments (#112 D1) — changelog-armed refuses a tree without it; do not
delete it.