Guía

Runner autoalojado de GitHub Actions en un Mac mini

Configure un runner autoalojado de GitHub Actions en un Mac mini dedicado. Instale Xcode, registre el runner, ejecútelo como servicio y mantenga los builds rápidos y privados.

30 minutos, actualizado el 2026-09-15

Los runners de macOS alojados por GitHub son máquinas compartidas. Hacen cola en horas punta, arrancan en frío cada vez y facturan por minuto.

Un runner autoalojado en su propio Mac mini arranca al instante, conserva sus cachés entre builds y cuesta lo mismo cada mes.

Esta guía lleva unos treinta minutos. Necesita:

  • Un Mac mini con Apple silicon y acceso SSH
  • Permisos de administrador en el repositorio u organización de GitHub
  • Un Apple ID, para descargar Xcode

1. Preparar el Mac

Inicie sesión por SSH e impida que el Mac entre en reposo:

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

Instale Homebrew:

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

Recomendamos un usuario aparte para el runner, para que los builds nunca se ejecuten con su cuenta de administrador:

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

Inicie sesión con ese usuario para los pasos siguientes.

2. Instalar Xcode

La forma más sencilla por SSH es `xcodes`:

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

Acepte la licencia y complete el primer arranque:

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

3. Registrar el runner

En GitHub, abra su repositorio y vaya a Settings, Actions, Runners, New self-hosted runner. Elija macOS y ARM64.

GitHub muestra los comandos exactos, con la versión actual y un token. Son de este tipo:

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>

El token caduca al cabo de una hora, así que registre el runner enseguida. Cuando `config.sh` pida etiquetas, añada las que vaya a usar en los workflows, como `xcode` o `m4`.

4. Ejecutarlo como servicio

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.
Con el servicio en marcha, esta es toda la conexión.

El runner arranca ahora con la sesión del usuario. Si sus jobs ejecutan pruebas de interfaz o necesitan el llavero de inicio de sesión, active el inicio de sesión automático para el usuario del runner en Ajustes del Sistema, Usuarios y grupos. Puede hacerlo mediante Compartir pantalla. El inicio de sesión automático no está disponible mientras FileVault está activado.

5. Usarlo en un workflow

.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

Haga push de un commit. El job aparece en Actions y arranca en su Mac en cuestión de segundos.

6. Mantenerlo en buen estado

  • Solo repositorios privados. En un repositorio público, una pull request desde un fork puede ejecutar código en su Mac. GitHub desaconseja los runners autoalojados en repositorios públicos.
  • Haga limpieza de vez en cuando. DerivedData y los simuladores antiguos crecen con el tiempo:
ssh
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable
  • Firma. Guarde los certificados en un llavero dedicado, o use fastlane match.
  • Actualizaciones. El runner se actualiza solo por defecto. Actualice Xcode cuando usted decida, no en mitad de una release.

Por qué un Mac mini dedicado

  • Nadie más lo usa. Los builds arrancan en cuanto hace push.
  • Cachés calientes. DerivedData, los paquetes de Swift y CocoaPods se quedan en disco, así que los builds incrementales son mucho más rápidos.
  • Chips reales. Pruebe en el mismo Apple silicon que tienen sus usuarios.
  • Una tarifa mensual fija. Sin facturación por minuto, sin sorpresas al final de un sprint intenso.

MacDuty tiene en sus racks en la UE Mac mini del M1 al M6, con macOS instalado. Añada su clave SSH desde el área de cliente.

En stock hoy

Estos están en el rack ahora. Elija uno, vea qué incluye y cree su cuenta solo cuando haga el pedido.

Consultando los racks

Un Mac mini propio

Elija una configuración. Si no está disponible, deje su correo y le escribimos el día en que esté en el rack.

Anual: al menos un 19 % menos que pagando al mes

  • 16GB

    Memoria unificada, 120 GB/s

    Núcleos
    10 CPU, 10 GPU
    Almacenamiento
    Disponible
    En stock
  • El más elegido
    24GB

    Memoria unificada, 120 GB/s

    Núcleos
    10 CPU, 10 GPU
    Almacenamiento
    Disponible
    En stock
  • 32GB

    Memoria unificada, 120 GB/s

    Núcleos
    10 CPU, 10 GPU
    Almacenamiento
    Disponible
    En stock
Visa Mastercard Transferencia SEPAPrecios en EUR, IVA añadido en el pago cuando corresponda. Mínimo un mes, después puede cancelar cualquier mes.

Siguiente