← 개발 일기로 돌아가기

OpenClaw 2026: 캐나다 원격 Mac M4에서 iOS/Android 노드 페어링 — gateway.mode remote, wss/Tailscale 보안 진입, 태평양 SSH 터널, openclaw doctor 티켓(단계 체크리스트+대조표+FAQ)

서버 노트 / 개발 · 2026.05.19 · 약 11 분

스마트폰과 노트북으로 캐나다 OpenClaw Gateway에 iOS·Android 노드를 페어링하는 협업 장면

OpenClaw Gateway가 캐나다 원격 Mac mini M4 한 대에만 있고, 아태(APAC) 팀이 iPhone·iPad·Android를 노드(role: node)로 붙이려 할 때, 문제는 앱 설치 여부가 아닙니다. 핸드셋 WebSocket이 항상 켜져 있는 호스트의 규격 wss:// 엔드포인트에 닿는지, 운영자가 gateway.mode: "remote"와 CLI 승인을 같은 캐나다 호스트에 맞췄는지가 핵심입니다. 이 글은 2026년 기준 Gateway 소유형 iOS/Android 노드 페어링 Runbook입니다. macOS 메뉴바 클라이언트·Dashboard 북마크·SSH/Tailnet으로 18789에 붙는 흐름은 OpenClaw 2026 캐나다 단일 Gateway 원격 Mac M4: macOS는 SSH·Tailnet으로 Dashboard·18789, 태평양 팀 토큰·loopback·LaunchAgent이 다룹니다 — 그 글은 노트북·Dashboard, 이 글은 휴대폰 노드입니다. Gateway를 아직 올리지 않았다면 먼저 OpenClaw 2026 원격 Mac 설치·배포와 트러블슈팅: openclaw onboard, Gateway 데몬과 캐나다 M4 자원 계획을 마치세요.

캐나다 M4를 모바일 노드의 유일한 Gateway로 두는 이유

OpenClaw 원격 모델에서는 호스트당 Gateway 프로세스는 하나가 원칙입니다(프로필을 의도적으로 분리하지 않는 한). Gateway가 세션·채널·인증·에이전트 상태를 소유하고, iOS/Android 앱은 Gateway를 호스팅하지 않습니다 — Gateway WebSocket으로 주변 노드가 붙어 node.* RPC를 주고받습니다. 캐나다에 임대한 Mac mini M4는 “항상 온라인” 역할에 맞습니다. 노트북은 잠들지만 Telegram/Slack 채널과 페어링 대기열은 멈추면 안 되니까요. 휴대폰은 카메라·센서·현장 액션을 제공하고, M4는 연속성을 제공합니다.

태평양 팀에서 흔한 실패는 아태 노트북에 두 번째 Gateway를 띄우는 것입니다. 토큰이 갈라지고, 페어링 요청이 잘못된 호스트에서 만료되며, openclaw nodes pending은 비어 있는데 폰만 빙글빙글 도는 상황이 납니다. 해결책은 캐나다 Gateway 하나 + 모든 CLI·노드를 remote로이고, 아태 인력은 SSH나 tailnet으로 호스트를 관리하는 것입니다.

G
캐나다 M4 = 정본 Gateway
N
폰은 노드만
wss
크로스 네트워크 페어링은 TLS WS

2026 Gateway 소유형 페어링(무엇이 바뀌었나)

gateway-owned pairing 이후 Gateway가 어떤 노드가 합류할 수 있는지의 단일 진실원입니다. 흐름은: 노드가 WebSocket 연결 → Gateway가 pending 요청을 저장하고 node.pair.requested 발생 → 운영자가 openclaw nodes approve <requestId>(또는 동등 UI) 실행 → Gateway가 토큰 발급 → 노드가 페어링된 상태로 재연결입니다. pending 항목은 5분 후 만료되므로, 오래된 QR·설정 코드를 쫓지 말고 새로 만드세요.

2026.3.31부터node pairing 승인 전까지 node 명령이 비활성화됩니다 — device pairing만으로는 선언된 node 명령이 열리지 않습니다. openclaw devices approveopenclaw nodes approve는 관련 있지만 다른 게이트로 보세요. 폰이 device 목록에 보여도 node RPC는 1008: pairing required일 수 있습니다. 스캔 후 openclaw nodes pending이 계속 비면, WebSocket 페어링 상태를 node store에 쓰는 빌드(2026.2.28+ 수정)로 올린 뒤 네트워크 티켓을 여세요.

프로토콜상 운영자는 node.pair.list, node.pair.approve, node.pair.reject를 위 CLI로 다룹니다. UI는 같은 Gateway 진실원의 얇은 클라이언트일 뿐이므로, 감사 관점에서는 캐나다 호스트의 페어링 로그가 권위 있습니다.

gateway.mode remote와 자격 증명 우선순위

캐나다 호스트에서는 Gateway가 127.0.0.1:18789에 listen(빌드 기본값 확인 후 팀에 포트 하나로 고정). 아태 운영자 노트북에서는 gateway.mode: "remote"openclaw health, openclaw nodes pending, approve가 SSH/Tailscale 경유 캐나다를 향하게 하세요. 빈 로컬 포트를 보지 않게 하는 설정입니다.

공식 remote 가이드: Gateway가 loopback만 쓸 때 gateway.remote.urlws://127.0.0.1:18789로 두고, CLI 전에 SSH 로컬 포워딩을 먼저 올립니다. tailnet 직접 접속은 transport: "direct"와 사설 ws:// 또는 wss:// URL을 씁니다. 중요: --url만으로 config 토큰이 자동 재사용되지 않습니다 — URL을 덮어쓸 때는 --token 또는 --password를 명시하세요.

운영자 노트북: loopback + SSH 터널(발췌)
{
  gateway: {
    mode: "remote",
    remote: {
      url: "ws://127.0.0.1:18789",
      token: "<gateway-token>",
      sshTarget: "ca-m4-gateway",
    },
  },
}
Tailnet 직접(발췌)
{
  gateway: {
    mode: "remote",
    remote: {
      transport: "direct",
      url: "wss://ca-m4.your-tailnet.ts.net",
      token: "<gateway-token>",
    },
  },
}
자격 증명 출처 우선순위 흔한 실수
CLI --token / --password 제공 시 최상위 --url이 config 토큰을 가져온다고 가정
OPENCLAW_GATEWAY_TOKEN 환경 변수 해당 셸에서 파일 덮어씀 LaunchAgent와 SSH 세션의 env 불일치
config의 gateway.remote.token remote 모드 기본값 호스트만 로테이션하고 폰·노트북 미반영
macOS 앱 “Remote” 프로필 별도 UI 저장소 CLI는 녹색인데 앱만 구 토큰

페어링 Runbook: loopback 녹색부터 nodes approve까지

Gateway가 캐나다 M4에서 launchd로 이미 관리된다고 가정합니다. 아래 단계가 실패하면 공인 IP의 평문 ws://로 폰을 붙이지 마세요.

1단계 — Gateway 호스트에서 loopback 헬스

캐나다 Mac에 SSH 접속 후 listen·health 확인:

Gateway 호스트에서
curl -fsS "http://127.0.0.1:18789/health" && echo OK
lsof -nP -iTCP:18789 -sTCP:LISTEN

2단계 — 폰용 보안 WebSocket 진입

크로스 네트워크 모바일 페어링에서 iOS/Android는 평문 ws://에 fail-closed합니다. Gateway가 loopback에 묶인 채라면 Tailscale Servewss://<magicdns>를 노출하는 방식을 우선 검토하세요(신뢰 CA가 있는 기업 리버스 프록시도 가능). 사무실 LAN 디버그만 ws://를 쓰고, 공인 인터넷을 넘는 태평양 폰은 보통 불가합니다.

3단계 — QR·설정 코드와 node pending

호스트에서(또는 터널이 살아 있는 노트북에서):

페어링 자료 생성
openclaw qr
openclaw qr --remote
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes status

폰 스캔 후 pending 행이 보이는지 확인한 뒤 approve하세요. 야간 온콜·외주 승인은 티켓 ID와 fingerprint를 묶어 감사 가능하게 남기세요.

4단계 — node RPC 스모크 테스트

Gateway 쪽에서 최소 node.* 호출(또는 node 도구가 필요한 채널 워크플로)을 실행합니다. 태평양 RTT만 높은 것은 실패가 아닙니다. 잦은 끊김은 tailnet 경로·MTU·폰 절전을 의심하고, 앱 재설치부터 하지 마세요.

보안 진입 의사결정 매트릭스(폰 vs 운영자)

폰에는 SSH 터널이 없고, 운영자에게는 있는 경우가 많습니다. Runbook에서 경로를 분리해 적어 두세요.

진입 유형 폰 프로토콜 전형적 용도 리스크
LAN ws://192.168.x.x:18789 평문 ws(사설 LAN) 사무실 Wi‑Fi 디버그 태평양 공인 인터넷에는 부적합
Tailscale Serve wss://*.ts.net wss + tailnet 신원 아태 폰 + 캐나다 Gateway 입·퇴사 시 ACL 재검토
사설 CA·기업 프록시 wss wss + bearer 토큰 인증서 핀 정책 iOS는 신뢰 CA 또는 pin 설정 필요
공인 IP ws:// 원격 페어링 거부 설계상 fail-closed; 18789 raw 노출 금지
Dashboard 글과의 경계
브라우저 Dashboard(SSH -L, tailnet 북마크)는 캐나다 단일 Gateway SSH·Tailnet 튜토리얼 범위입니다. 이 글은 폰 노드 wss 페어링과 nodes approve입니다 — 모바일 티켓에 “Dashboard 먼저 열기” 수용 순서를 그대로 쓰지 마세요.

태평양 SSH: 폰이 아직 tailnet에 못 들 때 approve 하기

외주 폰이 Tailscale에 등록되지 않아도 wss:// 엔드포인트(Serve 또는 기업 프록시)는 필요합니다. SSH는 운영자가 터널 뒤 loopback에서 approve·doctor를 돌리게 할 뿐, 폰의 TLS 경로를 대체하지 않습니다.

아태 노트북 → 캐나다 M4
ssh -N -L 18789:127.0.0.1:18789 user@ca-m4-host
# 새 터미널: remote config가 ws://127.0.0.1:18789를 가리킴
openclaw health --token "<gateway-token>"
openclaw nodes pending
openclaw nodes approve <requestId>

24/7 터널이 필요하면 운영자 Mac의 LaunchAgent에 ssh -N을 넣고, 토큰은 셸 프로필이 아니라 gateway.remote.token config에 두세요. 캐나다 호스트는 Gateway를 loopback만 유지합니다.

역할 권장 경로 페어링 명령 실패 시 확인
캐나다 M4(Gateway) loopback + launchd openclaw qr, nodes pending lsof -i :18789, Gateway 로그
아태 운영자 Mac SSH -L + remote 모드 nodes approve, doctor 터널 생존? 토큰 명시?
iOS / Android tailnet 또는 Serve wss:// 앱 스캔, 노드 온라인 배지 공인 ws 오용, 인증서 신뢰

M4 용량: Gateway 하나, 폰 노드 여러 대

24 GB / 512 GB 캐나다 M4는 채널·workspace 스냅샷을 제한하면 Gateway 하나와 페어링된 노드 여러 대를 무리 없이 둡니다. 로그·채널 미디어·workspace보내기가 APFS를 다투면 1 TB / 2 TB를 검토하세요. 두 번째 임대 M4는 “폰 세 대가 Gateway 프로세스를 밀어낸다”기보다 프로덕션·스테이징 Gateway 프로필 분리가 필요할 때 정당합니다. 폰은 세션·쿼터를 공유할 뿐 Gateway 데몬을 중복 실행하지 않습니다.

승인된 기기마다 CMDB 태그를 붙이세요. 소유자 없는 페어링은 타임존을 넘으면 감사 불가능해집니다. 채널이 커질 때 디스크·병렬 확장 수치는 OpenClaw 2026 캐나다 원격 Mac M4 프로덕션 준비: Node·workspace 디스크 설계, Channels 인증 갱신, Gateway 원격 지터와 오류 — HOWTO + FAQ를 참고하세요.

openclaw doctor 티켓 플레이북

openclaw doctor(가능하면 --lint / --deep)를 티켓의 단일 스냅샷으로 쓰세요. Gateway 호스트 SSH 세션과 터널된 remote CLI에서 각각 실행하고 diff합니다. doctor는 녹색인데 폰이 pending이면 보통 nodes approve 누락이거나 폰이 잘못된 wss 호스트를 봅니다. doctor 인증 오류는 로컬/remote 토큰 표면이 섞인 경우가 많습니다.

권장 티켓 필드

UTC 시각, openclaw --version, Gateway health curl, 마스킹된 openclaw nodes pending / nodes status, 폰 오류 문구(secure endpoint required?), Serve vs SSH-only vs direct tailnet 사용 여부를 첨부하세요. 카메라 node 도구의 macOS TCC 디버그가 아니면 VNC는 드뭅니다.

증상 → 조치 트리

A. 폰이 secure endpoint requiredwss:// 구성(Tailscale Serve 우선); 공인 IP 평문 ws 게시 중단.
B. pending 비었는데 폰만 로딩 → 만료 QR, 잘못된 Gateway 호스트, 또는 2026.2.28+ 이전 WebSocket 페어링 버그(심층 전에 업그레이드).
C. CLI connection refused → 캐나다 loopback 확인 후 노트북에서 SSH 포워드 중 lsof -i :18789.
D. 승인 직후 끊김 → tailnet ACL, 폰 절전, Gateway OOM; 재시작 전 버전 캡처.

티켓 첨부 번들
openclaw doctor
openclaw doctor --lint
openclaw gateway status
openclaw nodes pending
openclaw nodes status
curl -fsS "http://127.0.0.1:18789/health" || true

사례: 아태 온콜 폰이 캐나다 자동화를 깨우기

싱가포르 온콜 엔지니어가 iPhone 노드를 wss://ca-m4.team.ts.net으로 캐나다 Gateway에 페어링합니다. OpenClaw 채널을 거친 Slack 슬래시 명령이 node.* RPC로 카메라 스냅샷을 요청하고, Gateway는 M4에서 오케스트레이션하며 폰이 센서 경로를 제공합니다. 지연은 태평양 구간이 지배하지만 MacBook이 잠들어도 Gateway는 유지됩니다. 승인은 티켓 ID로 로그하고, 토큰은 분기마다 로테이션하되 채팅에 비밀을 재게시하지 않습니다.

페어링·채널·tailnet ACL을 같은 플랫폼 팀이 소유할 때만 이 패턴이 성립합니다. 채널은 캐나다에서 녹색인데 nodes approve가 없으면 Slack은 되는데 node 도구만 pairing 오류 — doctor 스냅샷에 nodes status와 채널 헬스를 함께 붙이면 지원에서 빠르게 드러납니다.

FAQ

iOS·Android가 Gateway를 호스팅할 수 있나요?

아니요. 모바일 앱은 노드만입니다. 의도적으로 분리하지 않는 한 캐나다 M4가 정본 Gateway입니다.

원격 폰 페어링에 wss가 필수인 이유는?

크로스 네트워크 모바일 페어링은 자격 증명·기기 지문 보호를 위해 평문 ws://에 fail-closed합니다. LAN·문서화된 시뮬레이터 예외는 업스트림 문서를 보세요.

gateway.mode remote가 캐나다 호스트 설정을 바꾸나요?

remote클라이언트 설정입니다. 캐나다 Mac은 여전히 로컬 Gateway를 실행합니다. M4 자신의 config를 remote loopback으로 자기 자신에게 붙이지 마세요.

SSH 터널만 있고 폰에 Tailscale이 없으면?

폰은 여전히 도달 가능한 wss://(보통 Tailscale Serve 또는 기업 프록시)가 필요합니다. SSH는 운영자 CLI·approve용이며 핸드셋 TLS를 대체하지 않습니다.

openclaw qr vs openclaw qr --remote?

--remote는 원격 Gateway URL을 향한 설정을 인코딩합니다 — 터널·tailnet으로 호스트에 닿는 운영자 머신에서 쓰세요. QR이 노트북 loopback을 가리키는 실수를 줄입니다.

폰 여러 대가 Gateway를 “경쟁”하나요?

하나의 Gateway 프로세스와 쿼터를 공유할 뿐 데몬을 중복하지 않습니다. 기기 라벨과 승인 감사를 유지하세요.

페어링은 되는데 node 도구만 타임아웃?

WebSocket 생존과 느린 RPC를 분리하세요. 앱 재설치 전에 Gateway CPU·디스크·채널 큐를 보세요.

SSH로 doctor는 녹색인데 폰만 실패?

doctor는 터널 경로만 검증했을 수 있습니다. 폰 wss 호스트·만료 QR을 Serve 설정과 맞추고 스캔 후 nodes pending을 다시 확인하세요.

클라우드 Mac mini에서 Gateway를 두면 페어링이 단순해집니다

OpenClaw를 캐나다 원격 Mac mini M4에 고정하고 폰은 Tailscale wss://로 붙이면, 7×24 18789 listen에 Apple Silicon 저전력·macOS 안정성·openclaw doctor·SSH·Tailscale이 한 호스트에 모입니다. 잠드는 노트북을 프로덕션 Gateway로 두지 않아도 되고, 타임존을 넘는 nodes approve 경계가 분명해집니다.

iOS/Android 노드를 위한 캐나다 단일 Gateway를 검토 중이라면, Hashvps 클라우드 Mac mini M4가 좋은 출발점입니다 — 플랜·요금 보기 wss 진입, SSH 터널, 노드 페어링을 한 롤아웃에 맞출 수 있습니다.

Hashvps · Mac 클라우드

캐나다 M4 단일 Gateway: iOS/Android 노드 보안 페어링

전용 컴퓨팅과 안정적인 tailnet 프로필로 wss 진입, nodes approve, 태평양 doctor 티켓을 지원합니다. 홈에서 플랜을 확인하세요.

홈으로
한정 특가