2026 OpenClaw 대여 Mac Mini 실전 OPENCLAW_HOME 다중 인스턴스 디렉터리, 이중 게이트웨이 포트 격리, CI 폴링 요약·Webhook 병합 알림 최소 재현

약 6분

공식 다중 인스턴스는 (1) 인스턴스마다 다른 OPENCLAW_HOME 상태 트리, (2) 겹치지 않는 게이트웨이 포트—문서대로 OPENCLAW_GATEWAY_PORT와 CLI --port를 맞춤—두 가지로 정리됩니다. Mac Mini 대여 호스트에 launchd·systemd로 박아 두고, CI 폴링 digest와 실패 Webhook을 하류에서 한 통지로 병합하면 운영·야간 게이트웨이를 한 대에 둬도 설정이 섞이지 않습니다. launchd 파티션·야간 workflow_dispatch·게이트웨이 롤백.

디렉터리 설계

위키에 홈 디렉터리·포트 쌍을 고정합니다. 예: ~/openclaw-prod:18789, ~/openclaw-ci:18790. 트리마다 설정·캐시·로그를 분리하고 실험 트리가 운영 설정을 심볼릭 링크로 덮지 못하게 합니다. 리버스 프록시는 upstream을 포트별로 나눕니다.

두 번째 인스턴스 설치·onboard

기존 세션을 오염시키지 않으려면 새 터미널을 열고 아래 두 변수만 export한 뒤 공식 절차대로 설치·onboard를 진행합니다.

export OPENCLAW_HOME="$HOME/openclaw-ci"
export OPENCLAW_GATEWAY_PORT=18790
# 공식 문서에 따라 설치·onboard 후, 문서가 권장하는 대로 게이트웨이를 띄우며 포트를 명시합니다. 예:
# openclaw gateway --port 18790

openclaw doctor로 경로가 해당 OPENCLAW_HOME만 쓰는지, lsof로 지정 포트만 열렸는지 확인합니다. 첫 인스턴스 셸에는 이 export를 넣지 마세요.

launchd·systemd·launchctl 유지 요점

macOS는 LaunchAgent 두 벌: 고유 Label, openclaw 절대 경로, EnvironmentVariablesOPENCLAW_HOME·OPENCLAW_GATEWAY_PORT·전체 PATH, WorkingDirectory, KeepAlive·ThrottleInterval. 반영은 launchctl bootstrap/bootout. Linux는 systemd userEnvironment=·WorkingDirectory=로 동일 패턴입니다.

<key>EnvironmentVariables</key>
<dict>
  <key>OPENCLAW_HOME</key><string>/Users/you/openclaw-ci</string>
  <key>OPENCLAW_GATEWAY_PORT</key><string>18790</string>
  <key>PATH</key><string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
</dict>

헬스 확인

포트별로 curl -fsS로 문서화된 health·status만 호출해 프로세스 생존HTTP 리스닝을 분리해 봅니다. 게이트웨이가 준비되기 전에 스케줄 잡이 붙으면 빈 응답·타임아웃이 나므로 운영에서는 재시도 백오프를 짧게 두면 좋습니다. 모델 호출이 비싸면 저빈도로 둡니다.

CI 폴링 요약과 Webhook 알림 병합

Actions 스케줄이 실패 workflow_run을 모아 15~60분 창 digest를 만들고, 저장소 실패 Webhook은 게이트웨이가 받습니다. 하류에서 JSON 스키마(digest_schema_version, 창, run_id 등)를 통일하고 Idempotency-Key한 알림만 보냅니다. CI 전용 인스턴스의 OPENCLAW_HOME에만 Webhook·HMAC을 두고 운영과 키를 섞지 마세요.

트러블슈팅: 포트 충돌·PATH

  • 포트 충돌: lsof -iTCP:PORT -sTCP:LISTEN으로 점유자를 확인합니다. OPENCLAW_GATEWAY_PORT--port가 같은지, 첫 인스턴스·로컬 Prometheus·Ollama 등과 겹치지 않는지 봅니다. 리버스 프록시 upstream이 예전 포트를 가리키면 조용히 엉뚱한 인스턴스로 붙습니다.
  • PATH: launchd 자식 프로세스에는 대화형 로그인 셸의 profile이 없습니다. Node나 CLI가 빠지면 command not found이거나 오래된 바이너리만 잡힙니다. plist에 전체 PATH를 쓰고 which openclaw 결과 절대 경로를 ProgramArguments에 넣은 뒤, 변경 시 bootoutbootstrap으로 다시 올리세요.

로그인 없이: 먼저 스펙·가격, 이어서 구매

멀티 OpenClaw·CI Webhook용 맥 호스트는 로그인 없이 가격·사양을 본 뒤 구매로 이어가면 됩니다.

멀티 OpenClaw용 Mac Mini 로그인 없이 대여