Guia

Runner auto-hospedado do GitHub Actions em um Mac mini

Configure um runner auto-hospedado do GitHub Actions em um Mac mini dedicado. Instale o Xcode, registre o runner, rode como serviço e mantenha os builds rápidos e privados.

30 minutos, atualizado em 2026-09-15

Os runners macOS hospedados pelo GitHub são máquinas compartilhadas. Eles formam fila nos horários de pico, começam do zero toda vez e cobram por minuto.

Um runner auto-hospedado no seu próprio Mac mini começa na hora, mantém os caches entre os builds e custa o mesmo todo mês.

Este guia leva cerca de trinta minutos. Você precisa de:

  • Um Mac mini com Apple silicon e acesso SSH
  • Direitos de administrador no repositório ou na organização do GitHub
  • Um Apple ID, para baixar o Xcode

1. Prepare o Mac

Faça login via SSH e impeça que o Mac entre em repouso:

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

Instale o Homebrew:

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

Recomendamos um usuário separado para o runner, para que os builds nunca rodem na sua conta de administrador:

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

Faça login com esse usuário para os passos abaixo.

2. Instale o Xcode

O jeito mais simples via SSH é o `xcodes`:

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

Aceite a licença e conclua a primeira inicialização:

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

3. Registre o runner

No GitHub, abra o seu repositório e vá em Settings, Actions, Runners, New self-hosted runner. Escolha macOS e ARM64.

O GitHub mostra os comandos exatos, com a versão atual e um token. Eles são parecidos com estes:

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>

O token expira depois de uma hora, então registre logo. Quando o `config.sh` pedir labels, adicione as que você vai usar nos workflows, como `xcode` ou `m4`.

4. Rode como serviço

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.
Com o serviço rodando, a ligação completa é esta.

Agora o runner inicia junto com a sessão do usuário. Se os seus jobs rodam testes de UI ou precisam do chaveiro de login, ative o login automático para o usuário do runner em Ajustes do Sistema, Usuários e Grupos. Você pode fazer isso pelo Compartilhamento de Tela. O login automático não fica disponível enquanto o FileVault estiver ativado.

5. Use em um 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

Faça push de um commit. O job aparece em Actions e começa no seu Mac em segundos.

6. Mantenha tudo saudável

  • Só repositórios privados. Em um repositório público, um pull request vindo de um fork pode executar código no seu Mac. O GitHub desaconselha runners auto-hospedados em repositórios públicos.
  • Faça limpeza de vez em quando. DerivedData e simuladores antigos crescem com o tempo:
ssh
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable
  • Assinatura. Guarde os certificados em um chaveiro dedicado, ou use o fastlane match.
  • Atualizações. O runner se atualiza sozinho por padrão. Atualize o Xcode no seu próprio ritmo, não no meio de um release.

Por que um Mac mini dedicado

  • Ninguém mais nele. Os builds começam no momento do push.
  • Caches quentes. DerivedData, pacotes Swift e CocoaPods ficam no disco, então os builds incrementais são muito mais rápidos.
  • Chips de verdade. Teste no mesmo Apple silicon que os seus usuários têm.
  • Um valor fixo por mês. Sem cobrança por minuto, sem surpresa no final de uma sprint corrida.

A MacDuty hospeda em racks Mac mini do M1 ao M6 na UE, com o macOS instalado. Adicione sua chave SSH pela área do cliente.

Em estoque hoje

Estes estão no rack agora. Escolha um, veja o que vem com ele e crie sua conta só quando fizer o pedido.

Verificando os racks

Seu próprio Mac mini

Escolha uma configuração. Quando uma não estiver disponível, deixe seu e-mail e escrevemos no dia em que ela for para o rack.

Anual: pelo menos 19% menos do que pagar por mês

  • 16GB

    Memória unificada, 120 GB/s

    Núcleos
    10 CPU, 10 GPU
    Armazenamento
    Disponível
    Em estoque
  • O mais escolhido
    24GB

    Memória unificada, 120 GB/s

    Núcleos
    10 CPU, 10 GPU
    Armazenamento
    Disponível
    Em estoque
  • 32GB

    Memória unificada, 120 GB/s

    Núcleos
    10 CPU, 10 GPU
    Armazenamento
    Disponível
    Em estoque
Visa Mastercard Transferência SEPAPreços em EUR, IVA adicionado no pagamento quando se aplica. Mínimo de um mês, depois cancele em qualquer mês.

A seguir