-
Alo 재입고 알림봇 개발_5(Self-hosted runner)Dev🚀 2025. 9. 13. 17:21
이전글:
https://jungheeho.tistory.com/102
Alo 재입고 알림봇 개발_4(HTML fallback 보강)
이전글:https://jungheeho.tistory.com/101 Alo 재입고 알림봇 개발_3이전글:https://jungheeho.tistory.com/100 Alo 재입고 알림봇 개발_2이전글:https://jungheeho.tistory.com/99 Alo 재입고 알림봇 개발_1🌱 개발 배경- 평소에
jungheeho.tistory.com
지금 “재고 확인 실패”가 계속 뜨는 건 GitHub Actions 서버(IP 대역)가 Alo/Shopify WAF(봇 차단 시스템)에 걸린 상태라서, JSON도 403, HTML도 불완전 응답을 내주기 때문.

🔑 Self-hosted runner로 해결해보자
- GitHub Actions는 전 세계적으로 공유되는 고정된 클라우드 IP → 쇼핑몰 입장에서 너무 많은 트래픽이 찍히니 차단.
- 내 PC/집 인터넷은 일반 사용자의 브라우저 요청처럼 보이기 때문에 차단될 확률이 훨씬 낮음.
- 결국 GitHub 대신 내 PC / NAS / 라즈베리파이 같은 장치를 러너로 등록하면 → 같은 워크플로우가 내 집 IP에서 실행됨.
🛠️ Self-hosted runner 등록 방법
- 레포 설정 들어가기
- GitHub → 해당 저장소 → Settings → 왼쪽 사이드바에서 Actions → Runners
- 새 러너 추가
- New self-hosted runner 클릭
- OS 선택 (Linux / macOS / Windows)
- 터미널에서 명령 실행
GitHub이 안내해주는 명령어를 그대로 복사해서 내 PC에서 실행:
# 예시 (Linux) mkdir actions-runner && cd actions-runner curl -o actions-runner-linux-x64-2.321.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.321.0/actions-runner-linux-x64-2.321.0.tar.gz tar xzf ./actions-runner-linux-x64-2.321.0.tar.gz # GitHub에서 발급해준 토큰으로 등록 ./config.sh --url https://github.com/<유저명>/<레포명> --token <등록토큰>
4. 러너 실행./run.sh→ 이제부터 내 PC에서 워크플로우가 실행됨.
5. 백그라운드 서비스로 등록
- Linux라면 systemd 서비스 등록 가능.
- Windows라면 run.cmd 대신 svc install 해서 서비스로 등록.
🚦 고려할 점
- 내 PC를 러너로 쓰려면 켜져 있어야 실행됨.
- 집에서 돌린다면 전기/발열 부담 거의 없음(10~20분마다 잠깐 실행).
- 라즈베리파이 같은 소형 기기에 러너 설치해두면 24/7 운영에 딱 좋음.
- 회사 노트북 같은 데에 설치하면 절전 모드 들어가면 안 돌아가니 주의.
✅ 정리
- 지금처럼 GitHub Actions 기본 러너는 WAF 때문에 계속 실패 알림이 나옴.
- Self-hosted runner로 옮기면 내 집 IP라서 정상 HTML/JSON 응답을 받을 가능성이 매우 높음.
이제 self-hosted runner를 등록했으니, GitHub Actions 워크플로우에서 그 러너를 쓰도록 설정만 바꾸면 됨.
1️⃣ 워크플로우 yml 수정하기
지금 alo_checker.yml 안에는 이렇게 되어 있을 것임:
jobs: check-stock: runs-on: self-hosted # 이렇게 수정2️⃣ 러너 실행 상태 유지
러너를 실행해야 Actions가 내 PC에서 작업을 돌림.
등록 후 실행은:cd ~/actions-runner ./run.sh터미널 창이 켜져 있어야 러너가 살아있습니다.
3️⃣ 실행 확인
- yml 수정해서 커밋/푸시
- GitHub → Actions 탭 → 워크플로우 실행
- 실행 로그에 Running job on self-hosted runner 같은 문구가 뜨면 성공
현재는 ./run.sh를 터미널에서 직접 띄워둬야만 runner가 살아있습니다.
그래서 노트북을 끄거나 재부팅하면 runner 프로세스가 종료됨.🤖 이걸 자동화하는 방법 (Mac 기준)
다행히 GitHub에서 svc.sh 스크립트를 제공해서, 로그인할 때 자동으로 runner가 실행되게 만들 수 있습니다.
1. 러너 폴더로 이동:
cd ~/actions-runner2. 서비스 등록:
./svc.sh install ./svc.sh start3. 상태 확인:
./svc.sh status이제부터는:
- 맥을 재부팅하고 로그인하면 runner가 자동으로 백그라운드에서 실행됩니다.
- 더 이상 매번 터미널 열고 ./run.sh 안 쳐도 돼요.
- 중지하고 싶으면:
./svc.sh stop ./svc.sh uninstall🚨 오류 발생


mkdir: /Users/runner: Permission denied즉, GitHub Actions 기본 워크플로우(yml)는 GitHub-hosted runner(ubuntu-latest) 기준으로 작성된 거라서, 내 Mac self-hosted runner에서는 /Users/runner 같은 경로를 만들 권한이 없어서 깨진 겁니다.
왜 이런 일이 생겼나?
- actions/setup-python@v4 액션은 GitHub-hosted runner 전용으로, Python 버전을 다운로드해서 /Users/runner/... 캐시에 깔려고 해요.
- 하지만 self-hosted runner는 내가 직접 만든 환경 → /Users/runner 같은 경로 없음 → 권한 오류 발생.

<정리>
🔄 1. 기존 방식 (GitHub-hosted runner)- runs-on: ubuntu-latest 로 설정 → 깃허브가 제공하는 클라우드 VM에서 실행.
- 특징:
- 내가 노트북을 꺼놔도 24/7 동작.
- 무료 플랜에서는 월 2,000분 제한.
- Actions 서버 IP가 고정이라, Alo/Shopify 같은 사이트에서 봇 트래픽 차단에 걸릴 확률 높음.
- 실행 환경은 매번 초기화 → 상태 파일/캐시 관리가 귀찮음.
🖥️ 2. Self-hosted runner (내 로컬)
- runs-on: self-hosted → 내 맥북/라즈베리파이/NAS에서 워크플로우 실행.
- 특징:
- 실행 환경 = 내 컴퓨터.
→ requests, bs4 등 라이브러리 설치 유지됨. - 내 집/개인 네트워크 IP로 요청하니, 403 차단에 걸릴 확률 낮음.
- 실행 시간은 내 장치가 켜져 있을 때만. 잠자거나 꺼지면 워크플로우도 멈춤.
- 내 CPU/RAM을 사용 → 발열/배터리 소모 있음.
- 월 2,000분 제한 없음 (내 장치니까 무제한).
- 실행 환경 = 내 컴퓨터.
⚡ 실행 흐름 비교
구분GitHub-hostedSelf-hosted실행 위치 깃허브 클라우드 VM 내 노트북/라즈베리파이 네트워크 깃허브 공용 IP → 차단 잘 됨 내 집/회사 IP → 사람처럼 보임 유지시간 24/7 (내 PC 꺼도 됨) 내 장치 켜져 있어야만 실행 리소스 깃허브 서버 내 PC CPU/RAM 발열 없음 있음 (주기마다 파이썬 돌림) 무료 플랜 제한 월 2,000분 없음 상태/캐시 매 실행 초기화 내 디스크에 유지 가능
🔍 내 로컬에서 달라진 점
- 예전에는 내 로컬에서 테스트만 하고, 실제 자동화는 깃허브 서버가 알아서 했음.
- 지금은 ./run.sh 켜둔 동안에는 내 로컬 맥북이 깃허브 서버 역할을 대신합니다.
- 즉:
- 내 맥북에서 직접 10~20분마다 요청 보내는 중.
- 발열은 “내 CPU가 직접 워크플로우를 돌리기 때문”.
- 장점은 Alo 서버 입장에서는 “그냥 일반 맥북 유저”처럼 보여서 막히지 않음.
✅ 요약
- 달라진 점 = 실행 위치와 네트워크
- 기존: 깃허브 서버 (IP 차단 잘 됨, 내 노트북 신경 안 써도 됨)
- 지금: 내 노트북 (IP 차단 거의 안 됨, 대신 내 리소스/발열 관리 필요)
👉 그래서 선택은 안정성 vs 편의성
- 안정성이 중요하면 → Self-hosted 유지 (다만 발열 해결 위해 라즈베리파이 같은 저전력 기기로 이전).
- 편의성이 중요하면 → 다시 GitHub-hosted 쓰고, 프록시/랜덤 주기 같은 우회 로직 강화.
반응형'Dev🚀' 카테고리의 다른 글
NVIDIA RTX 50 시리즈 (5080·5090) 유저 필독: 2026년 PyTorch·CUDA·FlashAttention 최종 정리(Blackwell) (0) 2026.01.30 맥북 Self-hosted GitHub Actions Runner 설정 후 오류 수습..🧨 | (모든 파일 손상/인식 불가, iCloud 동기화 이상 문제) (0) 2025.09.16 Alo 재입고 알림봇 개발_4(HTML fallback 보강) (0) 2025.09.13 Alo 재입고 알림봇 개발_3 (0) 2025.09.13 Alo 재입고 알림봇 개발_2 (0) 2025.09.13