GitHub Actions Self-Hosted Runner: Vollständiger Leitfaden für private Umgebungen
Im März 2026 veröffentlichte GitHub eine leicht zu übersehende Ankündigung: Self-Hosted Runner in privaten Repositories werden ab sofort mit $0.002 pro Minute berechnet. Klingt nach wenig? Rechnen wir: Eine Stunde kostet $0,12 – bei 100 Laufstunden im Monat sind das $12.
Viele Teams waren überrascht – waren Self-Hosted Runner nicht immer kostenlos? Gleichzeitig wurden GitHub-hosted Runner um rund 40 % günstiger. Plötzlich stellt sich die Frage neu: Self-Hosted oder GitHub-gehostet?
Die Preisänderung ist nur ein Aspekt. Wenn Ihr Code auf interne Datenbanken zugreifen muss oder die Build-Umgebung 32 GB RAM braucht, reichen GitHub-hosted Runner schlicht nicht aus. Dann ist Self-Hosted keine Option, sondern Pflicht.
Dieser Artikel vergleicht drei Deployment-Optionen (traditioneller Server, Docker, Kubernetes), behandelt typische Sicherheitsfallen und stellt Runner Fleet als praktisches Open-Source-Tool vor. Ob Sie sparen, absichern oder die Build-Umgebung kontrollieren wollen – hier finden Sie Orientierung.
Warum brauchen Sie Self-Hosted Runner?
Was ist ein Self-Hosted Runner?
Kurz gesagt: Ein Self-Hosted Runner ist Ihre eigene Maschine (physischer Server, VM oder sogar ein Raspberry Pi), auf der GitHub-Actions-Builds laufen. GitHub-hosted Runner sind von GitHub bereitgestellte Cloud-Umgebungen – einmal nutzen, danach weg. Self-Hosted heißt: Sie bauen die Bühne selbst und bestimmen die Regeln.
Der Runner selbst ist Open Source; GitHub hostet den Code im Repository actions/runner. Installieren Sie ihn auf Ihrer Maschine, registrieren Sie ihn bei Repository oder Organisation – er holt Aufgaben von GitHub, führt sie aus und meldet Ergebnisse zurück.
Der zentrale Unterschied zu GitHub-hosted Runnern
Der Unterschied geht weit über „wer stellt den Server“ hinaus.
GitHub-hosted Runner starten bei jedem Build in einer frischen Umgebung und werden danach zerstört. Vorteil: sauber und sicher. Nachteil: langsamer Cold Start, begrenzte Softwareauswahl. Exotischer Compiler? Fehlanzeige. Tests gegen interne Datenbanken? Unmöglich.
Self-Hosted Runner sind das Gegenteil. Die Umgebung richten Sie ein, vorinstallierte Software nach Bedarf. Nach dem Build bleibt alles erhalten – Caches liegen lokal, Builds sind deutlich schneller. Der Preis: Sie betreiben und debuggen selbst.
| Dimension | GitHub-hosted | Self-Hosted |
|---|---|---|
| Umgebung | Bei jedem Lauf neu | Persistent verfügbar |
| Cold Start | 1–2 Minuten | Sekunden |
| Anpassbarkeit | Begrenzt | Vollständig frei |
| Sicherheit | Isoliert und sauber | Eigene Härtung nötig |
| Kosten | Minutenbasiert | Hardware + Betrieb |
Preisänderungen 2026 im Detail
Das verdient eine genauere Betrachtung.
Vor März 2026 waren Self-Hosted Runner in privaten Repositories kostenlos – Ihre Hardware, Ihr Strom, GitHub griff nicht ein. Seitdem berechnet GitHub $0.002 pro Minute.
Klingt wenig? Beispielrechnung: 50 CI-Läufe täglich à 10 Minuten = 15.000 Minuten pro Monat, also etwa $30. Pro Jahr $360 – genug für einen ordentlichen VPS.
Interessant: Parallel dazu wurden GitHub-hosted Runner um rund 40 % günstiger. Soll damit alles in die Cloud gedrängt werden?
Nicht vorschnell urteilen. In öffentlichen Repositories bleiben Self-Hosted Runner weiterhin kostenlos. Bei Open-Source-Projekten entfällt dieses Thema.
Wann lohnt sich Self-Hosted?
Typische Szenarien im Überblick:
Szenario 1: Zugriff auf interne Dienste
Ihre CI-Pipeline muss interne Datenbanken, APIs oder private Registry erreichen. GitHub-hosted Maschinen stehen im öffentlichen Internet – Ihr Intranet ist außer Reichweite.
Szenario 2: Spezielle Hardware
GPU für Modelltraining oder 128 GB RAM für große Builds. GitHub-hosted Standard: 7 GB RAM, 2 vCPUs – oft zu wenig.
Szenario 3: Kosten bei hohem Build-Volumen
Hunderte CI-Läufe täglich – Minutengebühren summieren sich. Eigene Runner können günstiger sein.
Szenario 4: Compliance und Datensouveränität
Finanz- oder Gesundheitswesen verlangen, dass Builds im eigenen Rechenzentrum bleiben. Code darf die Organisation nicht verlassen.
Kleine Teams mit moderatem Build-Volumen fahren mit GitHub-hosted oft gut – weniger Aufwand, jetzt günstiger. Treffen Sie einen der Fälle oben, gehört Self-Hosted auf die Agenda.
Drei Deployment-Optionen im Vergleich
Option 1: Traditioneller Server
Der direkteste Weg: Linux-Server, Runner-Paket herunterladen, entpacken, konfigurieren, starten.
So habe ich meinen ersten Self-Hosted Runner deployt – CentOS 7, per SSH, GitHub-Dokumentation Schritt für Schritt. In einer halben Stunde stand „Online“ in der GitHub-Oberfläche.
Vorteile: Einfaches Setup, kein Docker- oder Kubernetes-Wissen nötig. Stabile Umgebung, ein Runner läuft lange ohne Neuinstallation.
Nachteile: Manueller Betrieb. Abstürze manuell beheben, Hardware-Probleme selbst debuggen, Skalierung bedeutet neue Maschinen und erneute Konfiguration.
Geeignet für: Kleine Teams, 1–2 Runner, knappes Budget, keine Containerisierung gewünscht.
Option 2: Docker-Containerisierung
Runner in Docker-Container packen – nach jedem Job Container verwerfen, beim nächsten Mal frisch starten. Deutlich sicherer als Bare Metal: Kaputte Umgebung? Container löschen und neu.
Zwei gängige Muster: Single-Container (Runner und Build im selben Container – für die meisten Fälle) und Docker-in-Docker (DinD) (Docker-Daemon im Runner-Container für Image-Builds und Multi-Container-Tests – Sicherheitsrisiken, offiziell mit Vorsicht zu nutzen).
Vorteile: Gute Isolation, einfaches Aufräumen, Docker Compose für mehrere Runner.
Nachteile: DinD-Risiken; Orchestrierung oft manuell; begrenztes Auto-Scaling.
Geeignet für: Mittleres Volumen, Fokus auf Isolation, Docker-Erfahrung im Team.
Option 3: Kubernetes + Actions Runner Controller (ARC)
GitHubs empfohlene Lösung für große Deployments. ARC ist ein Kubernetes-Operator, der Runner-Lebenszyklen automatisiert.
Sie definieren die gewünschte Runner-Anzahl – ARC erstellt Pods, führt Jobs aus, räumt danach auf. Bei Queue-Backlog skaliert es hoch, in ruhigen Phasen runter.
AWS stellte im Januar 2025 in einem Blogbeitrag genau dieses Setup für Unternehmen auf AWS vor.
Vorteile: Auto-Scaling, niedrigste Betriebskosten im Dauerbetrieb; volles Kubernetes-Ökosystem; ideal für viele Runner.
Nachteile: Hohe Einstiegshürde – Kubernetes, Helm, CRDs; deutlich komplexer als die anderen Optionen.
Geeignet für: Große Teams, Dutzende bis Hunderte Runner, vorhandene K8s-Infrastruktur, Automatisierung als Ziel.
Vergleich und Auswahl
| Dimension | Traditioneller Server | Docker | Kubernetes ARC |
|---|---|---|---|
| Deployment-Aufwand | Niedrig | Mittel | Hoch |
| Umgebungsisolation | Schwach | Gut | Sehr gut |
| Auto-Scaling | Nein | Begrenzt | Vollständig |
| Betriebskosten | Hoch | Mittel | Niedrig (nach Automatisierung) |
| Lernkurve | Niedrig | Mittel | Hoch |
| Skala | 1–5 Runner | 5–20 Runner | 20+ Runner |
Empfehlung:
- Kleines Team (1–5 Personen), wenig Builds: traditioneller Server reicht – Containerisierung optional.
- Mittleres Team (10–30 Personen), Dutzende Builds täglich: Docker plus Runner Fleet oder vergleichbares Tool.
- Großes Team (30+ Personen), tausende CI-Minuten: Kubernetes ARC – Lerninvestition zahlt sich langfristig aus.
Es gibt kein „bestes“ Setup, nur das passende für Größe, Stack und Betriebskompetenz.
Security-Best-Practices
Öffentliche Repositories: tabu
GitHub warnt ausdrücklich:
„Self-hosted runners should almost never be used for public repositories.“ — GitHub Docs
Warum? Jeder kann PRs einreichen und Workflows triggern. Läuft der Runner im Intranet, kann bösartiger Code beliebige Befehle ausführen – sensible Dateien lesen, Tokens stehlen, lateral im Netz angreifen.
Im Januar 2026 analysierte Sysdig genau dieses Szenario: Angreifer nutzten Self-Hosted Runner als Hintertür ins Unternehmensnetz. Kein theoretisches Risiko.
Für öffentliche Repos: GitHub-hosted Runner oder kein CI mit Self-Hosted. Self-Hosted? Erst Repository privat machen.
Runner Groups zur Isolation
Private Repos sind nicht automatisch sicher. Projekte und Teams haben unterschiedliche Vertrauensstufen – Runner für Kernproduktion und Experimente gehören nicht auf dieselbe Maschine.
Runner Groups trennen das auf Organisationsebene: mehrere Groups nach Projekt, Team oder Vertrauenslevel. Pro Group legen Sie fest, welche Repositories Zugriff haben.
Typische Aufteilung:
critical-prod: nur Kern-Repos, Maschinen im isolierten Netzsegmentdev-team: Entwickler-Repos, normales Intranetsandbox: Experimente, isolierte Sandbox-Umgebung
Wird ein Repository kompromittiert, ist der Schaden auf die zugehörige Group begrenzt.
Härtung der Umgebung
Grundregeln für Runner-Sicherheit:
Least Privilege: Dedizierter Benutzer statt root; nur nötige Software installieren.
Netzwerkisolation: Runner nicht direkt ins Internet stellen. Tasks kommen über GitHub – eingehende öffentliche Verbindungen sind unnötig.
Token-Management: Registrierungs-Tokens sind zeitlich begrenzt; bei Ablauf neu generieren. Keine Hardcodierung in Skripten – Secrets verwenden.
Log-Audit: Ausführungslogs aufbewahren, Anomalien nachverfolgbar machen.
Wiz erwähnte in einem Leitfaden (April 2026), dass viele Runner-Umgebungen zu permissiv sind. Härtung ist kein einmaliges Projekt.
Empfohlene Security-Tools
GitHub bietet Harden-Runner als Action:
steps:
- uses: step-security/harden-runner@v2
with:
egress-policy: audit
Die Action überwacht ausgehende Netzwerkverbindungen und meldet Abweichungen. Modi: Audit und Block – letzterer stoppt unautorisierte Verbindungen.
Für Self-Hosted Runner ist Block-Modus besonders wertvoll: Exfiltration über das Internet wird unterbunden.
Runner nicht „installieren und vergessen“. Offene Rechte und Tokens in Config-Dateien enden oft schmerzhaft.
Runner Fleet: Open-Source-Verwaltung
Was ist Runner Fleet?
Docker vereinfacht Deployment – aber viele Container manuell zu überwachen (Status, Token, Logs) bleibt mühsam.
Runner Fleet (Open Source) bündelt das in einer Web-UI: Status, Batch-Operationen, zentrales Token-Management, Self-Healing – ohne SSH in jeden Container.
soulteary beschrieb Entstehung und Funktionen ausführlich in der Tencent-Cloud-Developer-Community.
Kernfunktionen
Status-Aggregation: Online-Status, laufende Jobs und Historie aller Runner auf einen Blick.
Einheitliches Token-Management: Registrierungs-Tokens in der Web-UI pflegen; Updates synchronisieren sich.
Self-Healing: Abgestürzte Container werden erkannt und neu gestartet – spart manuelle Fehlersuche bei gelegentlichem „Offline“.
Container- und Host-Modus: Reiner Container-Betrieb oder Runner auf dem Host mit Container-Verwaltung – je nach Anforderung.
Batch-Operationen: Alle Runner starten, stoppen oder neu starten; beim Skalieren mehrere Instanzen auf einmal anlegen.
Schnellstart
Runner Fleet selbst läuft in Docker:
# Image pullen
docker pull soulteary/runner-fleet
# Service starten (vereinfacht)
docker run -d \
--name runner-fleet \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
soulteary/runner-fleet
Danach http://IHRE-IP:8080 im Browser – GitHub-Token setzen, Runner-Anzahl wählen, Parameter konfigurieren, per Klick batchweise erstellen.
Teams mit Docker ohne Kubernetes-Kenntnisse erhalten damit Container-Isolation ohne komplexen Handbetrieb.
Deployment in der Praxis
Fünf Schritte unter Linux
Traditionelles Server-Deployment auf Ubuntu 20.04:
Schritt 1: Dedizierter Benutzer
# runner-Benutzer anlegen, nicht als root ausführen
sudo useradd -m runner
sudo passwd runner # Passwort setzen
Der Runner-Prozess greift auf GitHub-Tokens zu – als root wäre ein Kompromiss katastrophal. Dedizierter User schafft eine Schutzschicht.
Schritt 2: Runner-Paket herunterladen
Release-Seite von actions/runner:
# Als runner-Benutzer
sudo su - runner
# Download (Version anpassen)
cd ~
curl -o actions-runner-linux-x64-2.321.0.tar.gz -L \
https://github.com/actions/runner/releases/download/v2.321.0/actions-runner-linux-x64-2.321.0.tar.gz
# Entpacken
tar xzf actions-runner-linux-x64-2.321.0.tar.gz
Schritt 3: Registrierungs-Token holen
Repository oder Organisation → Settings → Actions → Runners → New self-hosted runner. Das Registration Token ist einmalig gültig.
Schritt 4: Konfiguration und Registrierung
# Runner konfigurieren
./config.sh --url https://github.com/YOUR_ORG \
--token YOUR_REGISTRATION_TOKEN \
--name my-runner-01 \
--labels linux,ubuntu
Mit --labels adressieren Workflows den Runner über runs-on: [self-hosted, linux].
Schritt 5: systemd-Dienst
# Als Systemdienst (root nötig)
sudo ./svc.sh install runner
sudo ./svc.sh start
Startet mit dem System; systemd startet bei Absturz neu.
Runner im Workflow ansprechen
jobs:
build:
runs-on: self-hosted # Beliebiger Self-Hosted Runner
steps:
- uses: actions/checkout@v4
- name: Build
run: npm run build
Oder mit Labels:
jobs:
test:
runs-on: [self-hosted, linux, ubuntu]
steps:
- uses: actions/checkout@v4
- name: Test
run: npm test
Bei mehreren Runnern mit gleichen Labels verteilt GitHub automatisch – präzisere Labels, präzisere Zuweisung.
Nach dem Deployment Status in GitHub prüfen. „Offline“ deutet oft auf Netzwerk oder falsches Token hin.
Fazit
Kleines Team, wenig Builds: GitHub-hosted – nach der Preissenkung attraktiv, wenig Aufwand. Self-Hosted nur bei echten Sonderfällen.
Mittleres Volumen, Dutzende Builds täglich: Docker + Runner Fleet – Isolation plus zentrale Verwaltung, kontrollierbare Betriebskosten.
Großes Team, viele Runner: Kubernetes + ARC – Automatisierung amortisiert den Lernaufwand.
Sicherheitskritisch: Private Repos, Runner Groups, Harden-Runner. Öffentliche Repos mit Self-Hosted: Warnung, kein Tipp.
Die Preisänderung 2026 verschiebt die Kostenrechnung – der Wert von Self-Hosted geht aber über Sparen hinaus: Intranet-Zugriff, Hardware nach Maß, Compliance. GitHub-hosted deckt das nicht ab. Bedarf klären, passende Option wählen.
Nächster Schritt bei typischen Schmerzpunkten (Intranet, Kosten, Compliance): Docker + Runner Fleet testen – geringer Einstieg, schneller Effekt. Bei wachsendem Bedarf später auf Kubernetes migrieren.
FAQ
Was kosten Self-Hosted Runner in privaten Repositories?
Können öffentliche Repositories Self-Hosted Runner nutzen?
Was ist günstiger: Self-Hosted oder GitHub-hosted Runner?
Was ist Runner Fleet?
Für welche Teamgröße eignet sich Kubernetes ARC?
9 Min. Lesezeit · Veröffentlicht am: 23. Apr. 2026 · Aktualisiert am: 9. Juli 2026
GitHub Actions Komplettleitfaden
Wenn du über die Suche hier gelandet bist, kommst du am schnellsten weiter, indem du zum vorherigen oder nächsten Beitrag dieser Serie springst.
Vorheriger
GitHub Actions Secrets verwalten: Von Leckrisiken zu OIDC ohne statische Credentials
Leitfaden zu GitHub Actions Secrets: Drei-Ebenen-Architektur, 8 Sicherheitsregeln, OIDC-Deployment ohne Secrets und Schutz vor Supply-Chain-Angriffen. Lehren aus dem tj-actions-Vorfall mit Workflow-YAML-Beispielen und Best Practices.
Teil 7 von 10
Nächster
GitHub Actions Composite Action entwickeln: Praxisleitfaden von action.yml bis Marketplace
GitHub Actions Composite Action Schritt für Schritt: action.yml-Struktur, inputs/outputs, Secrets-Weitergabe, Versionsstrategie und Marketplace-Veröffentlichung – CI/CD-Komponenten sauber kapseln.
Teil 9 von 10
Ähnliche Beiträge
GitHub Actions Einstieg: YAML-Workflow-Grundlagen und Trigger-Konfiguration

GitHub Actions Einstieg: YAML-Workflow-Grundlagen und Trigger-Konfiguration
GitHub Actions CI-Pipeline in der Praxis: Build und Test automatisieren


Kommentare
Melde dich mit GitHub an, um einen Kommentar zu hinterlassen