OpenClaw 운영 2026년 4월 24일

2026 대여한 ProxyMac Mac mini에서 OpenClaw 업그레이드, 버전 고정 및 launchctl 롤백

ProxyMac 엔지니어링 팀 2026년 4월 24일 약 11분 읽기

자동화 게이트웨이는 개년으로 늙는다: 사소한 semver 하나가 TLS 기본값을 뒤집고, CLI 플래그 이름을 바꾸며, LaunchAgent가 안정이라 가정했던 샌드박스 경로를 조인다. 홍콩·일본·한국·싱가포르·미국ProxyMac Mac mini에서 운영 계약은 단순하다—예측 가능한 재시작, 감사 가능한 롤백, 고객이 드리프트를 느끼기 전에 울리는 헬스 프로브. 이 글은 누가 업그레이드 게이트를 잡아야 하는지(플랫폼 소유자이지 모든 기능 팀이 아님), 구체 임계값이 있는 업그레이드 전 행렬(시스템 볼륨 여유 ≥20%, Webhook 5xx 비율 24시간 <0.5%), 설정 트리의 스냅샷+체크섬 의식, 게이트웨이 복구에 맞춘 launchctl bootout / kickstart -k 순서, 표로 비교하는 네 가지 롤백 전략, 헬스 프로브JSONL 로깅에 대한 업그레이드 후 훅, 무인 업그레이드 FAQ까지 다룬다. 같은 변경 창에서 설정 GitOps배포 문제 해결을 필독으로 둔다.

버전 고정, 폭발 반경 축소, 프로덕션에서 “latest” 거부

각 프로덕션 plist에 컴플라이언스가 인용할 수 있는 정확한 바이너리 경로나 컨테이너 digest를 태그한다. “항상 main 당김”은 개발 노트북에서는 괜찮지만, 정산·모델 라우팅·야간 ETL을 돌리는 대여 금속에서는 사고 발생기다. TLS 지연을 맞추려 생산과 같은 리전스테이징 mini를 둔다—요금에 M4급 mini 다섯 리전이 나열되어 있다.

  • OpenClaw YAML 옆에 시맨틱 lockfile을 체크인해 diff가 의도를 보여 준다.
  • ThrottleInterval을 존중하고 launchd가 워커를 비울 수 있는 속도보다 빠르게 연쇄 업그레이드하지 않는다.
  • 비밀 로테이션은 바이너리 범프와 분리해 별도 달력으로 돌린다.

업그레이드 전 점검 행렬

신호녹색 임계값빨강이면
APFS 여유 공간시스템 볼륨 ≥20%JSONL 보관, 캐시 정리 후 바이너리에 손댄다
Webhook 5xx 비율(24시간 롤링)<0.5%상류를 먼저 고친다—업그레이드가 근본 원인을 가린다
LaunchAgent 최근 종료 상태직전 3회 재시작 모두 0통합 로깅에서 크래시 루프를 읽는다
시계 오차NTP 대비 <2초업그레이드 후 JWT/HMAC 검증이 이상하게 실패한다

설정, 큐, 모델 캐시를 체크섬과 함께 스냅샷

먼저 전체 ~/Library/Application Support/OpenClaw 트리(설치에 따라 이름이 다름)를 같은 볼륨의 날짜 tar로—사건 중 SMB 복사는 부분 쓰기의 전형적 원인이다. tar에 shasum -a 256을 기록하고 해시를 변경 티켓에 넣는다. 보존은 로깅 가이드에 맞춰 법무가 “무엇을 남겼는지” 급하게 포렌식하지 않고 답할 수 있게 한다.

Git은 데이터베이스가 아니다: 바이너리 모델 샤드와 큰 SQLite 큐는 객체 스토리지나 ZFS 스냅샷으로. Git 태그 옆 메타데이터로 버전을 추적한다.

launchctl 순서: bootout, 대기, bootstrap, kickstart

현대 macOS는 인내에 보상한다. 에이전트를 내린 뒤 launchctl print user/$(id -u)/com.openclaw.gateway에 실행 중 PID가 없을 때까지 기다리고, 새 빌드를 버전 디렉터리에 설치해 current 심볼릭 링크를 만든 다음 launchctl bootstraplaunchctl kickstart -k gui/$(id -u)/com.openclaw.gateway를 실행한다. 대기를 건너뛰면 워커가 옛 공유 메모리 영역에 묶인다—문제 해결이 “화요일까지는 된다”로 문서화하는 유형이다.

# 예시—라벨은 교체 launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.openclaw.gateway.plist sleep 2 # 여기서 버전 폴더와 symlink 교체 launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.openclaw.gateway.plist launchctl kickstart -k gui/$(id -u)/com.openclaw.gateway

롤백 행렬: 심볼릭 스왑 vs tar 복원 vs 재이미지

전략되돌리는 데 걸리는 시간위험언제
이전 semver 폴더로 심볼릭30–90초DB 마이그레이션 누락순수 바이너리/API 퇴보
전체 tar 복원3–10분진행 중 큐 파일 덮어쓰기설정 손상 의심
mini 재이미지(최후 수단)15–45분사람 실수로 복원커널 확장이나 TCC 꼬임
두 번째 mini로 리전 페일오버DNS TTL에 묶임공유 DB면 스플릿 브레인핫픽스 없는 심각한 CVE
분기마다 롤백 연습: 당번이 스트레스 아래 뒤로 심볼릭을 해본 적 없으면 MTTR은 이론일 뿐이다.

업그레이드 후 헬스 훅과 관측 가능성

kickstart 직후 첫 15분은 localhost 관리 포트에 합성 프로브, 큐 깊이 샘플, 몇 센트짜리 canary 프롬프트로 외향 모델 호출을 돌린다. 알람은 하드 실패뿐 아니라 변경 전 기준선 대비 p95 지연이 15% 초과 이동에도 건다. upgrade_from, upgrade_to, change_ticket 필드가 있는 구조화 줄을보내 로그 파이프라인이 릴리스별로 사건을 나눈다.

자주 묻는 질문

유지보수 중 brew upgrade를 써도 되나? 컴플라이언스가 프로덕션 Homebrew 경로를 허용할 때만. 많은 ProxyMac 고객은 /opt/openclaw/releases/<semver>로 tarball을 벤더링한다.

마이그레이션은 새 바이너리 전인가 후인가? 하위 호환 마이그레이션은 트래픽 전에. 파괴적 마이그레이션은 며칠에 걸친 이단계 플래그 롤아웃으로 낸다.

XPC 헬퍼는? 메인 plist 옆에 문서화된 의존 순서로 부팅한다—부모·자식 그래프는 재시작 복구를 본다.

업그레이드 규율을 ProxyMac Mac mini에 고정하는 이유

Apple Silicon M4 mini는 장수 호스트명, 결정적 성능, 블루/그린 전환 중 생산 옆에서 canary 워커를 돌릴 여유를 준다—매주 화요일 패치일에 하이퍼바이저 이웃 소음과 싸울 필요가 없다. 자동화를 HK / JP / KR / SG / US에 고정하고 메이저는 사람이, 랙 잡일은 직접 랙킹하지 않는 하드웨어에 맡긴다. GUI 프롬프트는 VNC로. SSH가 프록시로 형성되면 같은 주에 나온 기업 CONNECT 가이드를 읽는다.

안전하게 업그레이드할 수 있는 금속에서 자동화

HK / JP / KR / SG / US · OpenClaw 준비