2026년 OpenClaw 원격 Mac 이중 토폴로지 실전:
CALMVPS Gateway + 로컬 macOS Remote와 18789 터널 장애 대응

많은 팀이 로컬 Mac에서 OpenClaw 데모까지는 통과합니다. 그러나 본격 운영에서는 다른 질문이 나옵니다. Gateway를 7×24로 데이터센터급 베어메탈에 두고 싶은데, Canvas·화면 녹화·카메라·system.runTCC 권한이 있는 로컬 Mac에 남겨야 한다는 이중 요구입니다. 2026년 공식 macOS 문서는 이를 Remote 모드로 정의하며, 원격은 Gateway만, 로컬은 node host를 띄우고 제어 평면은 SSH 터널 또는 Tailscale로 기본 18789에 연결합니다. 본문은 재현 가능한 이중 토폴로지, Local과 Remote 대조표, 여섯 단계 접속, 현상별 장애 표를 정리합니다. 기종과 노드는 CALMVPS 요금 페이지를 기준으로 하세요.

읽고 나면 다음 세 가지에 답할 수 있습니다. ① 우리 단계에서 Local 단일을 유지할지 Remote 이중으로 전환할지. ② Gateway를 어느 CALMVPS 리전에 두고, 로컬 App을 Remote로 전환해 node host를 올리는 순서는 무엇인지. ③ 터널이 끊기거나 18789가 충돌하거나 Gateway에 node IP가 127.0.0.1로만 보일 때 먼저 실행할 명령은 무엇인지.

01 이중 토폴로지가 푸는 세 가지 과제

「한 대의 Mac에 모두 올린다」는 구성은 검증 환경에서는 매끄럽지만, 본격 운영에서는 아래 세 가지가 동시에 드러나기 쉽습니다.

  • 연산과 권한의 결합:Gateway 장시간 연결, Cron, 다중 채널 세션이 CPU와 통합 메모리를 소모하고, 같은 머신에서 화면 녹화와 자동화를 돌리면 16GB 장비는 야간 배치에서 스왑이 나며 TCC 대화상자가 무인 운영을 끊습니다.
  • 출구 불안정:가정용 회선이나 사무실 NAT는 WebSocket 장연결에 불리해 채널 오프라인이 「모델 장애」로 오인되고, 조사 방향이 처음부터 어긋납니다.
  • 운영 경계 모호:절전, macOS 업데이트, Spotlight, launchd 상시 실행이 겹치면 Gateway 장애인지 OS가 프로세스를 멈춘 것인지 구분하기 어렵습니다.

Remote 이중 토폴로지는 역할을 나눕니다. 원격 베어메탈 Mac(CALMVPS 홍콩·일본·한국·싱가포르·미동서 등)이 Gateway·채널·스케줄을 맡고, 로컬 Mac은 UI와 TCC를 가진 Node로 node host를 통해 Canvas, Camera, Screen, system.run을 원격 Gateway에 노출합니다. 제어 평면은 여전히 18789이지만 macOS App이 SSH 제어 터널을 유지하므로 포트 포워딩 스크립트를 계속 손으로 쓸 필요가 없습니다.

선정 요약입니다. 「Gateway는 클라우드, Node는 로컬, 제어 평면은 18789만」. 토폴로지를 한 장으로 고정한 뒤 M4 단계와 임대 기간을 정하면 회의가 짧아집니다.

02 Local 단일 vs Remote 이중 결정표

모든 팀이 즉시 이중 구성으로 갈 필요는 없습니다. 아래 표는 「Local 유지」와 「Remote 전환」 경계를 리뷰에서 한 번에 맞추기 위한 것입니다.

OpenClaw Local 단일 vs Remote 이중(2026 본격 운영 관점)
관점 Local(Gateway 동일 머신) Remote(Gateway는 CALMVPS 베어메탈)
적합 단계 개인 검증, 단일 채널 Bot 7×24 채널, 다중 Agent, 시차 Cron
로컬 Mac 역할 Gateway와 Node 일체 Node만(TCC, Canvas, system.run)
원격 Mac 역할 없음 Gateway, launchd 상시, 로그 영속
제어 평면 127.0.0.1:18789 직결 SSH -L 또는 Tailscale MagicDNS + App 터널
대표 리스크 절전·업데이트 중단, 메모리 경합 터널 열화, 버전 불일치, Token 비동기
권장 임대 자체 장비로 충분 Gateway 노드 월·분기, 로컬 증설 불필요

다지역 Hub-and-Spoke(Gateway는 이용자 밀집 구, Worker는 차밀집 구)를 쓸 때도 Remote 이중이 전제입니다. 리전 선택은 OpenClaw 원격 Mac 노드 선택을 참고하고, 본문은 「원격 Gateway 한 대 + 로컬 Node 한 대」 최소 본격 구성에 집중합니다.

03 CALMVPS 베어메탈에 Gateway 배치

원격 노드는 이용자와 채널 출구에 가장 가까운 CALMVPS 리전을 고릅니다. Gateway는 loopback만 수신하고 제어 평면은 SSH 또는 Tailscale로 노출하며, Web UI를 공인망에 직접 바인딩하지 않는 것이 안전합니다. 설치는 OpenClaw 공식 스크립트를 기준으로 하세요(발행 후 링크를 다시 확인하세요).

https://openclaw.ai/install.sh

macOS 플랫폼(Local/Remote, launchd 라벨 ai.openclaw.gateway) 설명:

https://docs.openclaw.ai/platforms/macos

REMOTE_GATEWAY_SETUP.SH
curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon
openclaw gateway status
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
Gateway WS 기본 18789, 127.0.0.1 바인딩 권장
  • Node 런타임:Gateway는 Node 런타임을 전제로 합니다. 베어메탈에서는 주 버전을 고정하고 launchd와 대화형 셸이 서로 다른 버전을 쓰지 않게 하세요.
  • 상태 디렉터리:OPENCLAW_STATE_DIR를 iCloud 동기화 경로에 두지 말고 ~/.openclaw를 권장합니다. openclaw doctor 경고와 맞추세요.
  • 디스크 여유:로그, Cron 이력, Memory 영속은 계속 늘어납니다. 본격 Gateway는 OpenClaw 전용 80GB 이상을 확보하고 필요 시 1TB/2TB 단계나 병렬 노드로 큐를 나누세요.

04 로컬 Remote와 SSH/Tailscale 여섯 단계

로컬 Mac에 OpenClaw.app을 설치하고 TCC 권한을 마친 뒤, 아래 여섯 단계로 Remote로 전환합니다(동작은 공식 macOS 문서 기준, 버전 업 후 문서를 우선하세요).

  1. 원격 Gateway 건강:CALMVPS 노드에서 openclaw gateway status로 18789 loopback 응답을 확인합니다.
  2. SSH 키 인증:App 제어 터널은 BatchMode입니다. 운영 계정에 키 로그인을 두어 대화형 비밀번호로 터널이 반쯤 뜨는 상태를 막습니다.
  3. Tailscale(선택):tailnet 안이면 MagicDNS 호스트명이 tailnet IP 변경에 더 강합니다.
  4. App에서 Remote 선택:원격 호스트를 넣으면 App이 ssh -N -L 18789:127.0.0.1:18789 형태 제어 터널을 재사용·재구성하고 로컬에서 Gateway 자식 프로세스는 띄우지 않습니다.
  5. node host 기동:Remote에서는 App이 node host를 올려 원격 Gateway가 Canvas, Camera, Screen, system.run을 호출합니다(Exec approvals는 App 정책을 따릅니다).
  6. CLI로 대조:로컬 저장소 apps/macos에서 swift run openclaw-mac connect --jsondiscover --timeout 3000 --json으로 App과 같은 발견·핸드셰이크 경로로 「터널 문제」와 「Gateway 설정 문제」를 가릅니다.

macOS 원격 접속(Direct ws/wss와 실제 클라이언트 IP 보고):

https://docs.openclaw.ai/platforms/mac/remote

CONTROL_TUNNEL_MANUAL.SH
ssh -N -L 18789:127.0.0.1:18789 user@your-calmvps-node
curl -fsS http://127.0.0.1:18789/healthz
loopback 경유 시 node IP가 127.0.0.1로 보일 수 있음. 실 IP 필요 시 Direct ws/wss

05 18789 장애 대응과 기술 파라미터

이중 구성에서 「연결 안 됨」의 대부분은 모델 공급자가 아니라 제어 터널과 버전 정합에 모입니다. 인용 가능한 고정값과 현상별 대응을 표로 정리합니다.

  • 기본 Gateway WebSocket 포트:18789. 제어 터널 로컬 측도 동일 번호를 유지하며 App은 건강한 터널을 재사용합니다.
  • LaunchAgent 라벨:ai.openclaw.gateway(OPENCLAW_PROFILE 사용 시 ai.openclaw.<profile>). 재기동은 launchctl kickstart -k gui/$UID/ai.openclaw.gateway입니다.
  • Exec approvals:로컬 system.run 정책은 ~/.openclaw/exec-approvals.json에 있으며 원격 Gateway 설정과 분리됩니다. 노드 이전 시 백업을 빼먹지 마세요.
Remote 이중 전형 현상과 1차 대응
현상 우선 확인 1차 조치
App이 Gateway unreachable SSH 터널 생존, 18789 점유 App 터널 재시작, 원격 lsof -i :18789
healthz OK인데 Channel offline Gateway와 CLI/App 버전 양쪽 openclaw --version 맞춘 뒤 Gateway 재시작
node IP가 항상 127.0.0.1 SSH 터널 경유 여부 예상 동작. 실 IP 필요 시 Direct ws/wss(remote 문서)
Canvas/카메라 무반응 node host 실행, TCC 부여 Remote에서 node host 확인, 권한 체크리스트 재실행
Tailscale 발견 실패 MagicDNS, 호스트명 변경 MagicDNS 이름으로 재설정, tailnet IP 고정 기입 회피

사례로, 한 iOS 팀은 Gateway와 Discord/Telegram 채널을 CALMVPS 싱가포르 M4 24GB 월 임대 노드에 두고 로컬 MBP는 Node로 screen.record와 Xcode 보조 스크립트만 담당했습니다. 피크에는 병렬 리소스로 주간 Worker를 추가했고 Gateway는 그대로 두어 채널 세션을 유지했습니다. 로컬 단일이 모든 부하를 떠안을 때보다 야간 알람이 줄었다는 피드백이 있습니다.

06 M4 단계·스토리지·임대 체크리스트

이중 구성에서는 리소스를 역할 단위로 나눕니다. 장비 한 대 스펙으로 결정하지 않는 것이 비용 최적화의 핵심입니다.

  • 원격 Gateway(CALMVPS):다중 채널과 Cron이면 M4 24GB부터. Hub나 로컬 모델 병행은 M4 Pro. 디스크는 1TB 검증, 2TB 본격이 무난합니다.
  • 로컬 Node Mac:TCC와 UI 도구 중심이라 16GB로 충분한 경우가 많습니다. 병목은 권한과 회선 품질에 치우칩니다.
  • 병렬 리소스:일괄 백필·병렬 빌드는 일·주 임대 Worker로 넘기면 Hub 단계를 올리지 않아도 총액이 유리한 경우가 많습니다.
  • 임대 조합:Gateway는 월·분기로 연산을 고정하고 스파이크는 일·주 병렬로 흡수하는 혼합이 단일 고사양 장기 임대보다 저렴한 경우가 많습니다.

Gateway를 개인 노트북이나 가정 NAS에 두면 장연결 지터, 절전, Token 혼용 감사가 약합니다. 순수 Linux VPS만으로는 macOS TCC와 Apple 툴체인이 없어 Remote 이중의 「로컬 Node」를 대체할 수 없습니다. 안정된 18789 제어 평면, 리전 횡단 베어메탈, 재현 가능한 장애 대응이 필요한 팀에는 CALMVPS 다지역 베어메탈 Mac이 Gateway 호스트로 적합합니다. Apple Silicon 전용, 24×7 가동, 약 120초 프로비저닝, 급증 부하는 병렬 노드로 흡수합니다. 노드 목록과 요금은 CALMVPS 요금 페이지에서 확인하세요.