OpenClaw를 수면에 취약한 노트북, 과부하인 홈 스튜디오 Mac, 혹은 낡은 임대 노드에서 벗겨 내어 새 캐나다 리전 Mac mini급 M4로 옮기는 일은 단순 파일 복사가 아니라 연속성의 주인이 바뀌는 작업입니다. TCP 18789에서 듣는 프로세스, 재부팅 후에도 남는 LaunchAgent·LaunchDaemon plist, 에이전트가 수정하는 workspace 디렉터리, 채널이 신뢰하는 비밀값까지 한 줄로 맞아야 합니다. 하나라도 어긋나면 로컬에선 멀쩡해 보이는데 실제 트래픽은 옛 토큰을 향하거나, launchd가 대화형 셸 환경을 못 본 채 Gateway만 PATH 없이 뜨는 식의 유령 장애가 납니다. 본문은 Confluence에 그대로 붙여 넣을 수 있는 단일 척추입니다: 단계별 게이트, 비교표 둘, 패키징용 명령 예시, 대양 횡단 SSH·화면 공유에 맞춘 검수, 그리고 macOS를 다시 깔지 않아도 되는 롤백 경로와 FAQ입니다.
원격 Mac 경화가 처음이라면 용어 정리는 OpenClaw 2026 원격 Mac 설치·배포와 트러블슈팅: openclaw onboard, Gateway 데몬과 캐나다 M4 자원 계획과 함께 읽는 것을 권합니다. 아태 주간 업무와 캐나다 야간 배치를 나눈다면 동결 창·인수인계 리듬은 2026 아태 4거점과 캐나다 원격 Mac 「태양 따라가기」 분업: 북미 보완 노드 야간 배치·검수, M4 16GB/256·24GB/512·1TB/2TB·병렬 예산 균형(인수인계+매트릭스+FAQ)와 자연스럽게 맞물립니다.
프로덕션에서 말하는 「안정 이전」의 의미
안정적인 컷오버는 터미널에서 한 번 됐다가 아닙니다. OpenClaw를 에이전트 호스트로 볼 때, 냉부팅 이후에도 다음이 관측 가능해야 합니다: Gateway 리스너가 문서화된 바인드(예: 127.0.0.1:18789)에 하나만 떠 있다는 것, 자동화 계정의 환경 변수가 plist와 일치한다는 것, 채널 자격 증명이 대화형 입력 없이 풀린다는 것, APFS 여유가 브라우저 프로필·로그 버스트를 감당한다는 것, 아시아·유럽 원격 운영자가 SSH 편집과 선택적 VNC 스모크로 끝까지 확인할 수 있다는 것입니다. 이 보증들을 체크리스트로 적어 두면 호텔 Wi-Fi 반대편 대륙에서도 온콜이 그대로 따라 할 수 있습니다.
태평양 왕복 지연은 도덕적 문제가 아니라 설계 제약입니다. 수 기가바이트 아티팩트를 같은 변경 창에 양방향으로 끌어당기기보다, 작고 멱등한 검수 프로브(인증된 Gateway 헬스 한 번, 합성 채널 핑 한 번)를 우선하세요. 대용량 workspace 동기화는 실패 시 tarball 복원으로 앞으로 굴릴 수 있는 유지보수 슬라이스에 두고, 라이브 세션 중 에이전트를 깨뜨리지 않도록 합니다.
사전 스냅샷, 변경 동결, 책임 소유
프로덕션 트래픽을 건드리기 두 주 전에는 세 가지를 동결하세요: Gateway 빌드가 기대하는 Node.js 메이저 라인과 잠금 파일, 소스 호스트에서 검증한 OpenClaw CLI 버전 문자열, 마지막 성공 배치 이후 상태의 workspace 디렉터리 tarball 또는 스냅샷입니다. 객체 스토리지에 체크섬과 함께 보관하면 전진 이전 소스이자 메타데이터 임포트가 꼬였을 때의 롤백 기준이 됩니다.
역할을 명확히 나누세요: plist 수정 승인자 한 명, 호스트 변경 시 정책에 따라 gateway.remote.token을 돌리는 사람 한 명, 제공자 네트워크 밖에서 채널 웹훅을 검증하는 사람 한 명입니다. 경계가 흐리면 LaunchAgent가 중복되고 재부팅 후 lsof에 같은 포트를 두 프로세스가 붙잡는 상황이 생깁니다.
Workspace 패키징: tarball 규율 vs 증분 rsync
크기와 민감도에 따라 선택합니다. 수 기가바이트 이하에 작은 파일이 매우 많다면, 에이전트를 정지(quiesce)한 상태(Gateway 중지, 브라우저 자동화 없음)에서 만든 압축 tarball이 바이트 단위로 고정된 산출물이 되고 양 끝에서 shasum -a 256으로 검증할 수 있습니다. 수백 기가바이트 규모에서 드리프트가 계속된다면 컷오버 전에 SSH로 rsync를 돌리고, 동결 구간에서 짧은 최종 패스로 다운타임을 줄이세요.
node_modules, 재생성 가능한 브라우저 캐시, 정책상 허용되면 macOS .DS_Store, 로컬 전용으로 재발급할 비밀 경로는 명시적으로 제외합니다. 목적지에서는 동일 lockfile로 의존성을 다시 설치해 M4 CPU 아키텍처에 맞는 네이티브 애드온을 맞춥니다. 이 단계를 건너뛰면 인텔에선 되고 Apple Silicon에선 터지는 puppeteer류 스택 붕괴가 흔합니다.
openclaw gateway stop tar --exclude='node_modules' --exclude='.git' -czf openclaw-workspace-pre-migrate.tgz ./openclaw-workspace shasum -a 256 openclaw-workspace-pre-migrate.tgz | tee workspace-sha256.txt
캐나다 호스트에 풀었을 때 아카이브를 root로 옮겼다면 소유권을 고치세요: workspace 트리에 chown -R automation-user:staff를 적용하고, 확장 속성 때문에 헬퍼 스크립트 실행 비트가 빠지지 않았는지 확인합니다. 외장 볼륨을 쓰는 제공자라면 무거운 아티팩트는 확장 티어에 두어 시스템 볼륨은 로그·스왑 버스트에 여유를 남깁니다.
18789 포트 Gateway: 단계 전환과 트래픽 조향
Gateway 이전은 한 번에 뒤집지 말고 세 단계로 나눕니다. A단계는 가져온 workspace와 임시 토큰으로 신규 Mac을 온라인에 두고 내부 운영자만 붙는 단계입니다. 보통 SSH 로컬 포워드 -L 18789:127.0.0.1:18789로 원시 TCP를 공개하지 않습니다. B단계는 패리티: 동일한 프롬프트·채널 ID·아웃바운드 허용 목록을 맞추고, 통제된 합성 작업 하나로 구·신 로그를 비교합니다. C단계는 클라이언트 설정이나 리버스 프록시를 갱신해 프로덕션 호출자가 캐나다 리스너로 가게 하고, 구 호스트를 드레인합니다.
B단계 동안 구 Gateway는 사람에게 읽기 전용으로만 두고 새 스케줄 작업은 넣지 마세요. 제공자 관리 TLS 전단이 있다면 SAN과 업스트림 헬스 프로브를 맞추고, /health가 태평양 RTT 때문에 단순 타임아웃으로 깜빡이지 않게 조정합니다. 컷오버 직후 1시간은 헬스 예산을 소폭 늘렸다가 지표가 안정되면 다시 조입니다.
18789 실무 리마인더: 이전 주말에는 재부팅할 때마다 lsof -iTCP:18789 -sTCP:LISTEN로 바인드를 확인하세요. 예기치 않은 퍼블릭 바인드가 보이면 보안 정책과 합의하기 전에 루프백+SSH 터널 밖으로 노출하지 않습니다.
무인 M4 호스트용 LaunchDaemon·LaunchAgent 재구축
대화형 SSH가 성공한다고 데몬 환경까지 증명되지는 않습니다. 목적지에서는 오래된 XML을 통째로 복사하기보다 plist를 새로 씁니다: openclaw에 대한 절대 경로, EnvironmentVariables로 PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin 주입, WorkingDirectory를 workspace 루트로, stdout/stderr는 /usr/local/var/log 또는 제공자 승인 경로의 로테이션 파일로. 조직이 헤드리스 Mac을 어떻게 도메인에 올리는지에 맞춰 launchctl bootstrap 도메인(GUI 사용자 vs 백그라운드 데몬)을 통일합니다.
로드 후 비대화형 프로브로 검증합니다: launchctl start로 호출되는 작은 스크립트가 which node를 찍고 $GATEWAY_REMOTE_TOKEN 길이만 출력합니다(비밀 본문은 노출하지 않음). SSH 셸 출력과 다르면 채널을 고객에게 열기 전에 plist 환경을 맞춥니다. 캐나다 주간에 의도적으로 한 번 재부팅해 APAC 동료가 냉기동을 함께 보게 하면 멘토링하기 좋습니다.
태평양 SSH·VNC 검수: 스스로를 속이지 않으려면
SSH 검수에는 패스워드 없는 키 인증과 제공자와 문서화한 비상 경로를 함께 둡니다. 평균 지연만이 아니라 꼬리 지연도 봅니다: mosh 또는 ServerAliveInterval을 조정해 호텔 NAT에서 유휴 세션이 살아 있게 하되, 그 덕에 실제 Gateway 죽음이 터널 뒤에 숨지 않게 합니다. Screen Sharing(VNC)으로는 운영자가 토큰을 붙여 넣을 때 클립보드 방향, HiDPI 스케일링이 권한 대화상자를 가리는지, 동시 세션이 허용되는지 기록합니다.
검수에는 현실적으로 최악에 가까운 시나리오 하나를 넣습니다: 상향이 빡빡한 회선에서 SSH로 접속해 plist 경유로 Gateway를 재시작하고 60초 로그를 본 뒤 아웃바운드 채널 메시지를 한 번 보냅니다. 이 시나리오가 연속 두 번 통과하면 같은 데이터센터 안에서 의미 없는 curl 루프 열 번보다 설득력이 큽니다.
이전 게이트 체크리스트(서명 책임자)
| 게이트 | 목표 | 통과 신호 | 전형적 소유자 |
|---|---|---|---|
| G0 인벤토리 | 숨은 리스너·중복 plist 없음 | launchctl list + lsof 정상; Gateway 바이너리 경로 단일 |
플랫폼 엔지니어 |
| G1 데이터 플레인 | Workspace 바이트 패리티 또는 통제된 드리프트 | 체크섬 일치 또는 최종 rsync 로그에 미전송 파일 0 | 자동화 리드 |
| G2 비밀 | 호스트 세대별 토큰 분리 | 구 토큰은 클라이언트에서 폐기; 신 토큰은 plist+금고만 | 보안·IAM |
| G3 런타임 | 냉기동 회복력 | 재부팅 테스트 통과; 로그에 채널 핸드셰이크 성공 | 온콜 1차 |
| G4 클라이언트 라우트 | 트래픽이 캐나다로 도착 | 외부 프로브가 기대 TLS·헬스 본문 확인 | DNS·엣지 소유자 |
소스 vs 캐나다 M4 노드: OpenClaw에 영향을 주는 실무 차이
| 축 | 로컬·구형 Mac | 캐나다 원격 M4 목표 |
|---|---|---|
| 전원·수면 | 뚜껑 닫힘, 에너지 세이버, Wi-Fi 지터 | 데이터센터 전원; pmset·정책은 제공자와 합의 |
| 이그레스·IP | 가정용 CGNAT, 회전 IP | 안정적 제공자 이그레스; 웹훅 허용 목록이 단순해짐 |
| 디스크 배치 | Fusion 드라이브 또는 꽉 찬 노트북 SSD | 확장 가능한 APFS; 로그·workspace 티어 분리 계획 |
| TLS 전단 | 종종 없음(순 SSH 터널) | 종종 리버스 프록시; 유휴 타임아웃을 RTT에 맞춤 |
| 관측 가능성 | Console.app 가끔 열어봄 | 전향 로그 수집을 첫날부터 권장 |
| 운영자 거리 | 키보드 바로 앞 | SSH/VNC; APAC 시간대로 검수 일정 잡기 |
존엄과 수면을 지키는 롤백
롤백은 수치심이 아니라 침착하게 실행하는 보험입니다. C단계 전에 세 가지를 미리 놓아두세요: 구 호스트의 마지막 정상 plist, 금고에 보관한 이전 gateway.remote.token(폐기 표시했지만 검색 가능), Git에 diff된 DNS·클라이언트 설정 스니펫. 프로덕션을 구 Mac으로 되돌려야 하면 캐나다 Gateway를 먼저 멈춰 채널 양두축 답변을 막고, 라우팅을 복구한 뒤 구 리스너를 워밍업하고 합성 트랜잭션 하나로 읽기·쓰기 일치를 증명합니다.
사전 스냅샷 tarball은 롤백 실험 중 건드리지 마세요. 손상 의심 시 부분적으로 git만 고치기보다 체크섬 검증된 번들에서 복원합니다. 서로 다른 근본 원인으로 검수가 두 번 연속 실패하면 빠른 응급처방을 쌓지 말고 롤백 트리거를 당깁니다.
요약
OpenClaw를 캐나다 M4 원격 Mac으로 옮기는 일은 파일 복사가 아니라 네트워크와 정체성 이동입니다. Workspace는 정지·체크섬으로 묶고, launchd 구성은 절대 경로와 명시적 환경으로 다시 짭니다. Gateway 18789는 엣지 라우트를 열기 전 SSH 뒤에서 단계적으로 두고, 결과는 태평양 SSH·VNC 현실 시나리오로 받습니다. 호스트 세대마다 토큰을 분리하고 병렬 Gateway 수를 제한하며, 필요하기 전에 롤백을 리허설하세요. 위 게이트 표와 비교 매트릭스가 있으면 거리와 피로 속에서도 go/no-go 언어가 공유됩니다.
FAQ
신 Mac에서도 같은 gateway.remote.token을 재사용해야 하나요?
위협 모델이 호스트 연속성에서 회전 없이 허용할 때만 그렇습니다. 제공자 변경의 모범 사례는 새 토큰 발급, 금고 갱신, 클라이언트 롤링, 모니터가 한 업무일 내내 녹색인 뒤 구 토큰 폐기입니다.
구·신을 나란히 얼마나 오래 둘 수 있나요?
B단계에서 몇 분에서 몇 시간은 현실적입니다. 며칠이면 드리프트가 납니다. 장기 병렬이 필요하면 공유 workspace 쓰기를 동결하거나 추가 rsync로 화해한다는 전제를 받아들이세요.
SSH에선 Gateway가 되는데 재부팅 후 죽는 이유는?
거의 항상 plist 맥락의 PATH 또는 토큰 가시성 문제입니다. LaunchDaemon 절의 비대화형 프로브 패턴을 따라 SSH 셸과 비교하고 EnvironmentVariables를 맞춥니다.
OpenClaw 운영에 VNC만으로 충분한가요?
VNC는 권한 대화·시각 디버깅에 도움이 되지만 반복 작업은 SSH와 plist 편집으로 자동화합니다. 긴 RTT에서 ServerAliveInterval 튜닝 없는 Screen Sharing만으로 운영자를 고생시키지 말고 프로토콜을 의도적으로 짝지으세요.
18789를 퍼블릭 리스너로 반드시 열어야 하나요?
아닙니다. 많은 팀이 루프백 바인드와 SSH 터널 또는 TLS 리버스 프록시에 의존합니다. 추가 제어 평면 없이 0.0.0.0에 바인드하는 선택은 드묾입니다.
컷오버 성공을 가장 빨리 확인하는 신호는?
캐나다 경로에 대한 인증 헬스와 엔드투엔드로 관측되는 아웃바운드 채널 메시지 한 번입니다. 지연만으로는 부족하고 의미적으로 올바른 트래픽이 증거입니다.
tar 풀고 나서 APFS 권한 실수를 피하려면?
가능하면 런타임 사용자로 직접 풀고, 아니면 소유자·그룹을 재귀적으로 고친 뒤 헬퍼 스크립트 실행 비트를 샘플 검사합니다.
이전 도중 RAM·디스크를 늘리는 타이밍은?
냉기동 로그 폭주나 브라우저 자동화가 패리티 테스트에서 스왑에 닿기 시작하면 C단계 완료 선언 전에 확장하세요. 이전 중 디스크 압력은 일시적 네트워크 글리치까지 작업 실패로 증폭합니다.