가이드

Mac mini에서 GitHub Actions 셀프 호스팅 Runner 운영

전용 Mac mini에 GitHub Actions 셀프 호스팅 Runner를 설정합니다. Xcode 설치, Runner 등록, 서비스로 실행, 빌드를 빠르고 비공개로 유지하는 방법.

30분, 2026-09-15 업데이트

GitHub이 호스팅하는 macOS Runner는 공유 머신입니다. 바쁜 시간에는 대기열이 생기고, 매번 콜드 스타트로 시작하며, 분 단위로 과금됩니다.

자체 Mac mini의 셀프 호스팅 Runner는 바로 시작되고, 빌드 사이에 캐시를 유지하며, 매월 같은 비용이 듭니다.

이 가이드는 약 30분이 걸립니다. 필요한 것:

  • SSH로 접속할 수 있는 Apple silicon Mac mini
  • GitHub 저장소 또는 조직의 관리자 권한
  • Xcode 다운로드용 Apple ID

1. Mac 준비

SSH로 로그인하고 Mac이 잠자기에 들어가지 않게 합니다:

ssh
sudo pmset -a sleep 0 disksleep 0 displaysleep 0

Homebrew 설치:

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

빌드가 관리자 계정으로 실행되지 않도록 Runner용 사용자를 별도로 만드는 것을 권장합니다:

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

아래 단계는 그 사용자로 로그인해 진행하세요.

2. Xcode 설치

SSH에서 가장 간단한 방법은 `xcodes`입니다:

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

라이선스에 동의하고 첫 실행을 마무리합니다:

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

3. Runner 등록

GitHub에서 저장소를 열고 Settings, Actions, Runners, New self-hosted runner로 이동합니다. macOS와 ARM64를 선택하세요.

GitHub이 현재 버전과 토큰이 들어간 정확한 명령을 보여 줍니다. 다음과 같은 형태입니다:

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>

토큰은 1시간 후 만료되므로 바로 등록하세요. `config.sh`가 레이블을 물으면 `xcode`나 `m4`처럼 워크플로에서 쓸 레이블을 추가하세요.

4. 서비스로 실행

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.
서비스가 실행되면 전체 연결 구조는 이렇습니다.

이제 Runner는 사용자 세션과 함께 시작됩니다. 작업에서 UI 테스트를 실행하거나 로그인 키체인이 필요하다면, 시스템 설정의 사용자 및 그룹에서 Runner 사용자의 자동 로그인을 켜세요. 화면 공유로 할 수 있습니다. FileVault가 켜져 있으면 자동 로그인을 사용할 수 없습니다.

5. 워크플로에서 사용

.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

커밋을 푸시하세요. 작업이 Actions 아래에 나타나고 몇 초 안에 Mac에서 시작됩니다.

6. 안정적으로 유지

  • 비공개 저장소에만. 공개 저장소에서는 포크에서 온 풀 리퀘스트가 Mac에서 코드를 실행할 수 있습니다. GitHub은 공개 저장소에 셀프 호스팅 Runner를 쓰지 말라고 권고합니다.
  • 가끔 정리하세요. DerivedData와 오래된 시뮬레이터는 시간이 지나면서 커집니다:
ssh
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable
  • 서명. 인증서는 전용 키체인에 보관하거나 fastlane match를 사용하세요.
  • 업데이트. Runner는 기본적으로 스스로 업데이트합니다. Xcode는 릴리스 도중이 아니라 직접 정한 일정에 맞춰 업데이트하세요.

전용 Mac mini를 쓰는 이유

  • 다른 사용자가 없습니다. 푸시하는 순간 빌드가 시작됩니다.
  • 캐시 유지. DerivedData, Swift 패키지, CocoaPods가 디스크에 남아 있어 증분 빌드가 훨씬 빠릅니다.
  • 실제 칩. 사용자가 쓰는 것과 같은 Apple silicon에서 테스트합니다.
  • 매월 고정 요금. 분 단위 과금도, 바쁜 스프린트 끝의 예상 밖 청구도 없습니다.

MacDuty는 M1부터 M6까지의 Mac mini를 macOS가 설치된 상태로 EU의 랙에 두고 있습니다. 고객 영역에서 SSH 키를 추가하세요.

오늘 재고 있음

지금 랙에 있는 Mac입니다. 하나를 골라 구성을 확인하고, 계정은 주문할 때 만드세요.

랙 확인 중

나만의 Mac mini

구성을 고르세요. 재고가 없으면 이메일을 남겨 주세요. 랙에 설치되는 날 연락드립니다.

연 단위: 월 단위 결제보다 최소 19% 저렴

  • 16GB

    통합 메모리, 120 GB/s

    코어
    10 CPU, 10 GPU
    저장 공간
    사용 가능
    재고 있음
  • 가장 많이 선택
    24GB

    통합 메모리, 120 GB/s

    코어
    10 CPU, 10 GPU
    저장 공간
    사용 가능
    재고 있음
  • 32GB

    통합 메모리, 120 GB/s

    코어
    10 CPU, 10 GPU
    저장 공간
    사용 가능
    재고 있음
Visa Mastercard SEPA 계좌이체EUR 기준 가격이며, 해당하는 경우 결제 시 VAT가 추가됩니다. 최소 1개월, 이후 매월 해지 가능.

다음