본문 바로가기
실전 자동화 튜토리얼

GitHub Actions self-hosted runner를 Oracle A1에서 무료로 운영하는 법

by 정데비 2026. 7. 16.

도입

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 축소 소동, 내 계정은 안전한지 직접 확인한 과정)에 자세히 정리해뒀으니, 본격적으로 인스턴스를 만들기 전에 먼저 본인 계정이 어느 쪽인지부터 확인하시길 권합니다.

실제 설정 흐름

실제 설정 흐름은 다음과 같습니다.

  1. Oracle Cloud 콘솔에서 VM.Standard.A1.Flex 셰이프로 인스턴스를 생성합니다. OCPU와 메모리를 본인 계정에 적용되는 무료 한도 안에서 설정하고, Ubuntu 같은 리눅스 이미지를 선택합니다.
  2. SSH로 접속한 뒤, GitHub 저장소(또는 조직)의 Settings → Actions → Runners 메뉴에서 새 self-hosted runner 등록 토큰을 발급받습니다. 전체 절차는 GitHub 공식 문서(Adding self-hosted runners)에 정리되어 있습니다.
  3. Runners 화면에서 운영체제·아키텍처를 선택하면 GitHub이 그 자리에서 다운로드·등록 명령어를 그대로 보여줍니다. 러너 애플리케이션 자체는 actions/runner 저장소에서 릴리스별로 관리되며, 화면에 뜬 명령어를 그대로 셸에서 실행하면 압축 해제부터 config.sh 실행까지 한 번에 됩니다.
  4. svc.sh install과 svc.sh start로 러너를 systemd 서비스로 등록해두면, 인스턴스가 재부팅되더라도 러너가 자동으로 다시 뜹니다.
  5. 워크플로 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 러너 무료 운영

LIST