Anleitung

Self-hosted GitHub Actions Runner auf dem Mac mini

Richten Sie einen Self-hosted GitHub Actions Runner auf einem dedizierten Mac mini ein. Xcode installieren, den Runner registrieren, als Dienst betreiben und Builds schnell und privat halten.

30 Minuten, aktualisiert 2026-09-15

Die gehosteten macOS-Runner von GitHub sind geteilte Maschinen. Zu Stoßzeiten landen sie in der Warteschlange, starten jedes Mal kalt und werden minutengenau abgerechnet.

Ein Self-hosted Runner auf Ihrem eigenen Mac mini startet sofort, behält seine Caches zwischen den Builds und kostet jeden Monat gleich viel.

Diese Anleitung dauert etwa dreißig Minuten. Sie brauchen:

  • Einen Mac mini mit Apple silicon und SSH-Zugang
  • Admin-Rechte für das GitHub-Repository oder die Organisation
  • Eine Apple ID, um Xcode herunterzuladen

1. Den Mac vorbereiten

Melden Sie sich per SSH an und verhindern Sie den Ruhezustand des Macs:

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

Installieren Sie Homebrew:

ssh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Wir empfehlen einen eigenen Benutzer für den Runner, damit Builds nie unter Ihrem Admin-Konto laufen:

ssh
sudo sysadminctl -addUser runner -fullName "CI Runner" -password -

Melden Sie sich für die folgenden Schritte als dieser Benutzer an.

2. Xcode installieren

Am einfachsten geht es per SSH mit `xcodes`:

ssh
brew install xcodesorg/made/xcodes
xcodes install --latest
xcodes select

Akzeptieren Sie die Lizenz und schließen Sie den ersten Start ab:

ssh
sudo xcodebuild -license accept
xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOS

3. Den Runner registrieren

Öffnen Sie in GitHub Ihr Repository, dann Settings, Actions, Runners, New self-hosted runner. Wählen Sie macOS und ARM64.

GitHub zeigt die genauen Befehle mit der aktuellen Version und einem Token. Die Befehle sehen so aus:

ssh
mkdir actions-runner && cd actions-runner
curl -o actions-runner-osx-arm64.tar.gz -L <download URL from GitHub>
tar xzf ./actions-runner-osx-arm64.tar.gz
./config.sh --url https://github.com/<owner>/<repo> --token <token>

Das Token läuft nach einer Stunde ab, registrieren Sie den Runner also sofort. Wenn `config.sh` nach Labels fragt, vergeben Sie solche, die Sie in Workflows nutzen werden, etwa `xcode` oder `m4`.

4. Als Dienst betreiben

ssh
./svc.sh install
./svc.sh start
./svc.sh status
GitHubYour repositoryActions queues the jobMac mini, our rackactions.runner service, launchdXcode, simulators, signing keychainIts own diskDerivedData, SwiftPM and CocoaPods caches stay warmthe runner dials out, HTTPS 443jobs and logs come back on itNothing listens on the Mac.No inbound port, no address to expose.
Sobald der Dienst läuft, ist das schon die ganze Einrichtung.

Der Runner startet jetzt mit der Benutzersitzung. Wenn Ihre Jobs UI-Tests ausführen oder den Anmeldeschlüsselbund brauchen, aktivieren Sie die automatische Anmeldung für den Runner-Benutzer unter Systemeinstellungen, Benutzer:innen & Gruppen. Das geht über die Bildschirmfreigabe. Solange FileVault aktiv ist, steht die automatische Anmeldung nicht zur Verfügung.

5. In einem Workflow nutzen

.github/workflows/ios.yml
name: iOS build

on: [push]

jobs:
  build:
    runs-on: [self-hosted, macOS, ARM64]
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: xcodebuild -scheme MyApp -destination 'generic/platform=iOS Simulator' build

Pushen Sie einen Commit. Der Job erscheint unter Actions und startet innerhalb von Sekunden auf Ihrem Mac.

6. In gutem Zustand halten

  • Nur private Repositories. In einem öffentlichen Repository kann ein Pull Request aus einem Fork Code auf Ihrem Mac ausführen. GitHub rät von Self-hosted Runnern in öffentlichen Repos ab.
  • Räumen Sie ab und zu auf. DerivedData und alte Simulatoren wachsen mit der Zeit:
ssh
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable
  • Signierung. Bewahren Sie Zertifikate in einem eigenen Schlüsselbund auf oder nutzen Sie fastlane match.
  • Updates. Der Runner aktualisiert sich standardmäßig selbst. Aktualisieren Sie Xcode nach Ihrem eigenen Zeitplan, nicht mitten in einem Release.

Warum ein dedizierter Mac mini

  • Niemand sonst darauf. Builds starten, sobald Sie pushen.
  • Warme Caches. DerivedData, Swift-Pakete und CocoaPods bleiben auf der Platte, inkrementelle Builds sind dadurch deutlich schneller.
  • Echte Chips. Testen Sie auf demselben Apple silicon, das Ihre Nutzer haben.
  • Ein fester Monatspreis. Keine minutengenaue Abrechnung, keine Überraschung am Ende eines vollen Sprints.

MacDuty betreibt eigene Mac minis von M1 bis M6 in Racks in der EU, mit installiertem macOS. Ihren SSH-Schlüssel fügen Sie im Kundenbereich hinzu.

Heute auf Lager

Diese stehen jetzt im Rack. Wählen Sie einen, sehen Sie, was dazugehört, und legen Sie Ihr Konto erst bei der Bestellung an.

Racks werden geprüft

Ein eigener Mac mini

Wählen Sie eine Konfiguration. Wenn eine nicht vorrätig ist, hinterlassen Sie Ihre E-Mail, und wir schreiben Ihnen an dem Tag, an dem sie ins Rack kommt.

Jährlich: mindestens 19 % günstiger als monatlich

  • 16GB

    Unified Memory, 120 GB/s

    Kerne
    10 CPU, 10 GPU
    Speicher
    Verfügbar
    Auf Lager
  • Meistgewählt
    24GB

    Unified Memory, 120 GB/s

    Kerne
    10 CPU, 10 GPU
    Speicher
    Verfügbar
    Auf Lager
  • 32GB

    Unified Memory, 120 GB/s

    Kerne
    10 CPU, 10 GPU
    Speicher
    Verfügbar
    Auf Lager
Visa Mastercard SEPA-ÜberweisungPreise in EUR, MwSt. wird an der Kasse hinzugefügt, wo sie anfällt. Mindestens ein Monat, danach monatlich kündbar.

Als Nächstes