2026 OpenClaw 대여 Mac Mini 실전
GitLab Scheduled Pipeline으로 야간 점검·아침 요약 자동화
2026년 3월 30일
RunMini 기술 전략팀
약 8분
맥 미니 대여 노드에서 OpenClaw를 돌리는 팀은 야간 점검과 아침 요약을 로컬 크론에만 맡기지 말고 GitLab Scheduled Pipeline으로 감사 가능한 트리거 체인을 만드는 편이 안전합니다. 본문은 최소 권한 토큰·웹훅 대안·재시도·아카이브·재현 curl과 검증 포인트를 묶습니다. 연관 글: 주·예비 모델·쿼터 다운그레이드, 칠곱이십사 스케줄 매트릭스, OpenClaw 모아보기.
핵심 통증 포인트
- 토큰 과잉 권한: 폭넓은 개인 액세스 토큰은 유출·퇴사 시 공격 면이 커집니다.
- 트리거 불투명: 수동 스크립트만 쓰면 파이프라인 아이디와 변경 이력이 끊깁니다.
- 로그 분산: 콘솔 출력만 두면 아침 회고 때 같은 시각 기준 대조가 어렵습니다.
트리거 방식·최소 권한 의사결정
고정 브랜치 야간 점검에는 프로젝트 트리거 토큰을 우선하고, 외부 시스템이 GitLab으로 이벤트를 밀어 넣을 때는 비밀 검증 웹훅을 검토합니다.
| 방식 | 적합 상황 | 권한 팁 | 리스크 |
|---|---|---|---|
| 트리거 토큰 | 스케줄·API 트리거 파이프라인 | 파이프라인 트리거만 | 유출 시 임의 실행 가능 |
| 인바운드 웹훅 | 외부 콜백으로 파이프라인 유도 | 시크릿·서명 검증 | 재전송·중복 실행 |
| PAT | 다중 프로젝트 오케스트레이션 | api 읽기·쓰기 최소 집합 | 범위 넓음·주기적 교체 필요 |
재현 단계(각 단계 검증 포인트 포함)
- 변수 계약:
RUN_MODE를nightly_audit또는morning_digest로 고정합니다. 체크: 리드미 또는 MR에 표로 문서화. - 트리거 토큰 발급: 기본 브랜치에 바인딩합니다. 체크: 읽기 전용 계정으로 트리거 API 호출 시 거절되는지 확인.
- 스케줄: 프로젝트 타임존과 크론을 맞춥니다. 체크: 다음 실행 시각이 운영 시계와 일 분 이내.
- 대여 맥에서 사전 검증: 방화벽·DNS·TLS 핑거프린트를 확인합니다. 체크: 수동 트리거 후 이십일로 생성 로그가 보임.
- OpenClaw 연동:
curl에 감사용 읽기 토큰만 넣고 헬스·작업 엔드포인트를 호출합니다. 체크: 의도적 오류 시 잡이 비영으로 끝나 알림이 옴. - 재시도·아카이브: 아래 YAML과
curl --retry를 병행합니다. 체크: 네트워크를 잠깐 끊었다가 자동 복구되는지. - 주간 회고: 실패 유형을 나누고 토큰·창을 조입니다. 장기 부하는 스케줄 매트릭스와 맞춥니다.
체크 명령 일: 수동 파이프라인 트리거(도메인·프로젝트 ID 치환)
curl -fsS --retry 4 --retry-delay 15 --retry-all-errors --connect-timeout 10 --max-time 120 \
-F "token=${GITLAB_TRIGGER_TOKEN}" -F "ref=main" \
-F "variables[RUN_MODE]=nightly_audit" \
"https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/trigger/pipeline"
체크 명령 이: 대여 맥에서 OpenClaw 헬스(읽기 전용 토큰)
curl -fsS --retry 3 --retry-delay 5 --max-time 30 \
-H "Authorization: Bearer ${OPENCLAW_AUDIT_TOKEN}" \
"${OPENCLAW_BASE_URL%/}/healthz"
YAML: 기본 재시도·아티팩트 로그
default.retry로 러너 일시 장애를 흡수하고, artifacts로 logs/를 남겨 아침에 내려받습니다.
default:
retry:
max: 2
when:
- runner_system_failure
- stuck_or_timeout_failure
openclaw_nightly:
stage: audit
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUN_MODE == "nightly_audit"'
script:
- mkdir -p logs
- curl -fsS --retry 5 --retry-all-errors --max-time 600 -H "Authorization:Bearer $OPENCLAW_AUDIT_TOKEN" -o logs/audit.json "$OPENCLAW_BASE_URL/audit/run"
artifacts:
when: always
paths: [logs/]
expire_in: 14 days
인용 앵커
- 스케줄 구분:
CI_PIPELINE_SOURCE가schedule일 때만 야간 잡을 타게 하면 푸시와 섞이지 않습니다. - 이중 재시도: 잡
retry와curl --retry를 겹쳐도 최종 실패는 사람이 봐야 합니다. - 보존·멱등: 아티팩트 기본 보존을 늘리거나 버킷으로 복제하고, OpenClaw는 날짜·파이프라인 ID로 중복 실행을 막습니다. 모델 한도가 걸리면 라우팅·다운그레이드 글을 함께 적용하세요.
FAQ
- 스케줄은 보이는데 대상 잡이 스킵돼요
rules와 스케줄 변수 덮어쓰기를 다시 보고, 보호 브랜치 규칙이 파이프라인 소스를 제한하지 않는지 확인합니다.- 대여 맥에서 TLS 핸드셰이크가 느려요
- 출구 IP·프록시·DNS를 점검하고
--connect-timeout·--max-time을 명시합니다. - 야간·아침 잡이 동시에 자원을 씁니다
resource_group으로 직렬화하거나 시간 창을 분리합니다.- 토큰 교체 당일에 실패가 늘어요
- 스케줄 변수에 신구 토큰을 잠시 병행해 검증한 뒤 구값을 제거합니다.