Der Runner fürs NAS, fertig zum Einsetzen
Image bauen und veröffentlichen / image (push) Canceled after 0s

Gitea verteilt Arbeit nur, es baut nicht selbst. Der Workflow ist auf dem
Server und hat einen Lauf angelegt — der bleibt liegen, weil niemand ihn
ausführt. Das ist keine Eigenheit dieser Installation, sondern wie Gitea
Actions arbeitet.

`server/docker-compose.runner.yml` ist der fehlende Teil, und er gehört
**auf das NAS**: dort läuft Docker ohnehin, und damit braucht ein neues
Image nie wieder einen Arbeitsrechner.

Zwei Dinge darin sind nicht offensichtlich und stehen deshalb als Kommentar
daneben: der Docker-Socket ist der Kern — der Runner baut nicht selbst,
sondern lässt den Docker des NAS bauen, und wer in diesen Container kommt,
kann Docker auf dem NAS steuern. Und `GITEA_RUNNER_LABELS` muss
`ubuntu-latest` nennen, weil der Flaro-Workflow genau das in `runs-on`
verlangt; ohne die Zeile meldet sich der Runner mit anderen Marken an und
der Lauf findet ihn nicht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-04 08:27:14 +02:00
co-authored by Claude Opus 5
parent fbf4a29461
commit aa1e14cdab
3 changed files with 63 additions and 13 deletions
+44
View File
@@ -0,0 +1,44 @@
# Ein Gitea-Runner auf dem NAS.
#
# **Wozu.** Gitea verteilt Arbeit nur, es baut nicht selbst. Ohne einen
# registrierten Runner legt es bei jedem Push einen Lauf an, der dann
# liegenbleibt. Mit diesem hier baut das NAS das Flaro-Image selbst und legt
# es in die Registry desselben Gitea — danach braucht es keinen Arbeits-
# rechner mehr.
#
# **Das Token holst du dir vorher:**
# Gitea → Repo → Einstellungen → Actions → Runner → Neuen Runner erstellen
#
# Ein Runner auf Organisations- oder Serverebene bedient alle Repos; das
# Token dafür steht in der jeweiligen Verwaltung.
services:
runner:
image: gitea/act_runner:latest
container_name: gitea-runner
restart: unless-stopped
environment:
- GITEA_INSTANCE_URL=https://git.scarriffle.com
# Hier das Token aus der Gitea-Oberfläche eintragen.
- GITEA_RUNNER_REGISTRATION_TOKEN=
- GITEA_RUNNER_NAME=nas
# **Welche Marken dieser Runner bedient.** `ubuntu-latest` ist die, die
# der Flaro-Workflow in `runs-on` nennt. Ohne diese Zeile meldet sich
# der Runner mit den Vorgaben an, und ein Lauf findet ihn womöglich
# nicht.
- GITEA_RUNNER_LABELS=ubuntu-latest:docker://catthehacker/ubuntu:act-latest
volumes:
# **Der Docker-Socket ist der Kern.** Der Runner baut nicht selbst,
# sondern lässt den Docker des NAS bauen. Ohne ihn scheitert jeder
# Schritt, der ein Image anfasst.
#
# Das ist zugleich die Abwägung: wer in diesen Container kommt, kann
# Docker auf dem NAS steuern. Deshalb gehört er nicht ins Internet und
# nimmt nur Arbeit von deinem eigenen Gitea an.
- /var/run/docker.sock:/var/run/docker.sock
# Anmeldung und Zwischenstände. Ohne dieses Volume meldet sich der
# Runner nach jedem Neustart neu an, und in der Liste sammeln sich
# Karteileichen.
- /volume4/CRITICAL/Docker/gitea-runner:/data