Design wechseln

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.

DimensionGitHub-hostedSelf-Hosted
UmgebungBei jedem Lauf neuPersistent verfügbar
Cold Start1–2 MinutenSekunden
AnpassbarkeitBegrenztVollständig frei
SicherheitIsoliert und sauberEigene Härtung nötig
KostenMinutenbasiertHardware + 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

DimensionTraditioneller ServerDockerKubernetes ARC
Deployment-AufwandNiedrigMittelHoch
UmgebungsisolationSchwachGutSehr gut
Auto-ScalingNeinBegrenztVollständig
BetriebskostenHochMittelNiedrig (nach Automatisierung)
LernkurveNiedrigMittelHoch
Skala1–5 Runner5–20 Runner20+ 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 Netzsegment
  • dev-team: Entwickler-Repos, normales Intranet
  • sandbox: 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?
Seit März 2026 berechnet GitHub $0.002/Minute für Self-Hosted Runner in privaten Repositories. Läuft Ihr Team täglich 50 CI-Builds à 10 Minuten, sind das etwa 15.000 Minuten pro Monat – Kosten rund $30.
Können öffentliche Repositories Self-Hosted Runner nutzen?
**Stark abgeraten.** GitHub warnt ausdrücklich: „Self-hosted runners should almost never be used for public repositories.“ Jeder kann PRs einreichen und Workflows auslösen – bösartiger Code kann beliebige Befehle auf Ihren internen Maschinen ausführen.
Was ist günstiger: Self-Hosted oder GitHub-hosted Runner?
Das hängt vom Build-Volumen ab. Kleine Teams mit wenig Builds profitieren nach der Preissenkung eher von GitHub-hosted. Bei hohem Volumen kann Self-Hosted auf eigener Hardware günstiger sein – Betriebskosten aber einrechnen.
Was ist Runner Fleet?
Runner Fleet ist ein Open-Source-Verwaltungstool mit Web-Oberfläche zur zentralen Steuerung aller Runner-Container – inklusive Statusüberwachung, einheitlichem Token-Management, Self-Healing und Batch-Operationen.
Für welche Teamgröße eignet sich Kubernetes ARC?
Für große Teams mit mehr als 20 Runnern. Erfordert Kubernetes-Infrastruktur und Betriebserfahrung, ermöglicht aber Auto-Scaling und die niedrigsten langfristigen Betriebskosten.

9 Min. Lesezeit · Veröffentlicht am: 23. Apr. 2026 · Aktualisiert am: 9. Juli 2026

Kommentare

Melde dich mit GitHub an, um einen Kommentar zu hinterlassen

Easton BlogEaston Blog