
도입
GitHub Actions를 쓰다 보면 프라이빗 저장소는 월 무료 사용 시간이 한정돼 있고, 빌드가 잦아지면 이 한도를 금방 넘깁니다. 저는 이 문제를 Oracle Cloud의 Always Free Ampere A1 인스턴스에 self-hosted runner를 올려서 해결해봤습니다.
Always Free 한도 축소, 계정 유형부터 확인하세요
Oracle Cloud의 Always Free 티어는 Arm 기반 Ampere A1 인스턴스를 최대 4 OCPU, 24GB 메모리까지 평생 무료로 제공합니다. 다만 2026년 6월부터 이 한도가 계정 유형에 따라 다르게 적용되기 시작했습니다. 순수 무료 티어(카드 미등록) 계정은 2 OCPU, 12GB로 축소됐고, Pay As You Go로 전환한 계정은 영향을 받지 않는 것으로 확인됩니다. 이 부분을 직접 확인한 과정과 판단 근거는 이전 글(Oracle Always Free A1 축소 소동, 내 계정은 안전한지 직접 확인한 과정)에 자세히 정리해뒀으니, 본격적으로 인스턴스를 만들기 전에 먼저 본인 계정이 어느 쪽인지부터 확인하시길 권합니다.
실제 설정 흐름
실제 설정 흐름은 다음과 같습니다.
- Oracle Cloud 콘솔에서 VM.Standard.A1.Flex 셰이프로 인스턴스를 생성합니다. OCPU와 메모리를 본인 계정에 적용되는 무료 한도 안에서 설정하고, Ubuntu 같은 리눅스 이미지를 선택합니다.
- SSH로 접속한 뒤, GitHub 저장소(또는 조직)의 Settings → Actions → Runners 메뉴에서 새 self-hosted runner 등록 토큰을 발급받습니다. 전체 절차는 GitHub 공식 문서(Adding self-hosted runners)에 정리되어 있습니다.
- Runners 화면에서 운영체제·아키텍처를 선택하면 GitHub이 그 자리에서 다운로드·등록 명령어를 그대로 보여줍니다. 러너 애플리케이션 자체는 actions/runner 저장소에서 릴리스별로 관리되며, 화면에 뜬 명령어를 그대로 셸에서 실행하면 압축 해제부터 config.sh 실행까지 한 번에 됩니다.
- svc.sh install과 svc.sh start로 러너를 systemd 서비스로 등록해두면, 인스턴스가 재부팅되더라도 러너가 자동으로 다시 뜹니다.
- 워크플로 YAML에서 runs-on 값을 self-hosted로 바꾸면 이후 빌드가 Oracle 인스턴스에서 실행됩니다.
실무에서 신경 써야 할 점
첫째, self-hosted runner는 GitHub 호스티드 러너와 달리 매 실행마다 초기화되지 않습니다. 이전 빌드의 파일이 남아있을 수 있으므로, 워크플로에 정리(clean) 단계를 넣거나 컨테이너 기반으로 작업을 격리하는 편이 안전합니다.
둘째, 퍼블릭 저장소에서는 self-hosted runner를 함부로 열어두면 안 됩니다. 포크된 PR에서 악성 워크플로가 실행돼 내 서버에서 임의 코드를 돌릴 위험이 있기 때문에, 퍼블릭 저장소라면 pull_request_target 사용을 피하고 승인 절차를 걸어두는 게 좋습니다.
셋째, Oracle A1은 ARM64 아키텍처입니다. 빌드 대상이 x86 전용 바이너리에 의존한다면 크로스 컴파일이나 별도 처리가 필요할 수 있습니다. 반대로 Go, Rust, Node.js처럼 네이티브 ARM 빌드를 지원하는 언어라면 오히려 크로스 컴파일 없이 더 빠르게 빌드할 수 있습니다.
넷째, Oracle의 무료 인스턴스는 계정 활동이 거의 없으면 회수(reclaim)될 수 있다는 보고가 커뮤니티에 종종 올라옵니다. 러너를 상시 대기시켜두려면 인스턴스에 최소한의 주기적 부하(예: 크론으로 헬스체크)를 걸어두는 것도 방법입니다.

마무리
정리하면, Oracle A1 인스턴스에 self-hosted runner를 올리는 방법 자체는 어렵지 않지만, self-hosted runner 특유의 보안·격리 이슈를 감안하고 설계해야 합니다. 시작 전에 본인 계정이 PAYG인지 순수 무료 티어인지부터 확인하면, 어떤 스펙으로 인스턴스를 만들지 헤매지 않을 수 있습니다. 개인 프로젝트나 프라이빗 저장소의 빌드 시간을 아끼려는 목적이라면 여전히 충분히 쓸만한 조합입니다.
[핵심요약] Oracle A1으로 GitHub Actions 러너 무료 운영
'실전 자동화 튜토리얼' 카테고리의 다른 글
| 서브에이전트로 작업 분산 시도기: 콘텐츠 만들다 발견한 반전 (0) | 2026.07.15 |
|---|---|
| Claude Code에 나만의 커밋·PR 커맨드 만들어 쓴 이야기 (0) | 2026.07.15 |
| 재부팅마다 Docker 빌드가 깨졌다면 이거부터 확인하세요 (0) | 2026.07.14 |
| Oracle A1 "자리 없습니다" 에러 극복기 (0) | 2026.07.14 |