leanvps 독일(프랑크푸르트) 원격 Mac에서 OpenClaw 게이트웨이를 루프백에만 두고, 토큰 인증과 SSH LocalForward로 접근하며, 병합에는
openclaw doctor --non-interactive·openclaw config validate를 씁니다. 근거는 Configuration reference, Configuration, CLI doctor, Gateway doctor 공식 문서입니다.
목표: 루프백 전용 제어면, 최소 노출
OpenClaw 게이트웨이는 기본 18789에서 WebSocket·HTTP를 다중화합니다. 공식 configuration reference에 gateway.bind: "loopback"은 localhost 전용이고, 비루프백에는 토큰 등 게이트웨이 인증이 필요합니다. 공유 원격 Mac에는 루프백+토큰과 SSH 터널만으로 공인 인터페이스 노출을 피합니다.
데몬·아웃바운드·로그는 독일 노드 온보딩·기준선과 같이 설계하세요. 용량은 독일 구매 안내·요금제로 맞춥니다.
127.0.0.1
루프백 바인딩
SSH -L
LocalForward 터널
CI
validate + doctor
최소 재현 절차(원격 Mac)
스테이징 호스트에서 먼저 같은 순서로 실행하고, plist·SSH 스탠자·CI 잡이 녹색 드라이런을 통과한 뒤 프로덕션에 승격하세요.
- SSH 기준선. OpenClaw 전용 macOS 사용자를 만듭니다. 승인된 빌드만 설치한 뒤, 키 기반 비대화형 SSH를 확인합니다(정책이 허용하면 해당 계정에 대해
sshd_config에서 비밀번호 인증을 끕니다). - JSON5에서 바인드·인증.
~/.openclaw/openclaw.json에gateway.mode: "local",gateway.bind: "loopback",gateway.auth.mode: "token",gateway.auth.token: "${OPENCLAW_GATEWAY_TOKEN}"를 공식 Configuration의 환경 변수 치환 예와 같이 둡니다. 토큰·비밀번호가 공존할 수 있으면gateway.auth.mode를 명시합니다. - 토큰은 주입하고, Git에는 비밀 경로를 남기지 않습니다.
OPENCLAW_GATEWAY_TOKEN은 LaunchDaemonEnvironmentVariables또는 제한적 POSIX 권한의 root 소유 환경 파일에서만 로드합니다. 보안된 관리 셸에서 일회 부트스트랩으로openclaw doctor --generate-gateway-token을 쓸 수 있습니다(CLI doctor). 이후 회전하고 시크릿 스토어 패턴으로 옮깁니다. - 헤드리스 헬스 패스.
openclaw config validate다음에openclaw doctor --non-interactive를 실행합니다. Gateway doctor에 따르면--non-interactive는 프롬프트를 건너뛰고 안전한 마이그레이션을 적용하며 대화형 OAuth 갱신을 피하므로 cron·CI에 적합합니다. - 게이트웨이 서비스 설치·재시작. 이미 표준화한 벤더 플로우(예: 고정 플래그의
openclaw gateway install)를 사용합니다.openclaw gateway status가 루프백 전용의 정상 리스너를 보여주는지 확인합니다. - 워크스테이션에서 SSH LocalForward.
ssh -N -L 18789:127.0.0.1:18789 openclaw-svc@germany-host.example(사용자·호스트 조정)을 실행합니다. 로컬 도구는ws://127.0.0.1:18789를 향하고 패킷은 SSH를 탑니다. 터널을 장시간 유지하려면-o ExitOnForwardFailure=yes와 클라이언트 측 systemd 또는 launchd 유닛을 추가하세요. - 토큰 경로 스모크. 터널이 올라간 상태에서 런북에 적은 베어러 토큰 패턴(Control UI·CLI·짧은 스크립트)으로 노트북에서
127.0.0.1:18789에 연결합니다. 의도적으로 잘못된 토큰을 한 번 보내 인증 실패가 나오는지 확인해 end-to-end 강제를 검증합니다.
LAN 바인드를 피하는 이유: 보완 통제 없이 18789를
0.0.0.0에 열면 스캔·무차별 노출이 커집니다. SSH 없이 접근이 꼭 필요하면 mTLS나 Tailscale Serve 등으로 경화된 역프록시를 앞에 두고, 인증을 생략하지 말고 configuration reference의 trusted-proxy 절을 다시 읽으세요.
컴플라이언스 관점 최소 노출 체크리스트(엔지니어링만)
아래는 법률 자문이 아니라 「최소 권한」을 보안 리뷰어가 grep 할 수 있는 게이트로 번역한 것입니다.
- 셸 히스토리에 평문 토큰 금지: LaunchDaemon 또는 CI 시크릿 인젝터로만 로드하고, 공유 screen 세션에서 인라인
export를 쓰지 않습니다. - 운영자 SSH와 서비스 계정 분리: 사람은 본인 UNIX 주체로, OpenClaw 데몬 사용자는 개인 dotfile을 소유하지 않게 합니다.
- PR에서 gateway diff 리뷰:
gateway.bind,gateway.auth,hooks,gateway.http엔드포인트 변경은 2인 리뷰를 요구합니다. - doctor 수리 전 설정 백업: 업그레이드 전 타임스탬프 복사본을 보관합니다. 마이그레이션이 인증 메타를 떨어뜨리면 아티팩트 저장소에서 복구 후 서비스를 재시작합니다.
- 브레이크 글라스 문서화: 사고 대응으로 바인드 모드를 일시 완화하면 티켓을 남기고 SLA 안에 되돌립니다.
병합 게이트 레시피(GitHub Actions 스타일 의사코드)
Git에는 프로덕션 설정의 읽기 전용 픽스처나 비식별 발췌만 두고, 프로덕션 토큰은 절대 넣지 않습니다. 환경 치환 경로가 통과하도록 CI 시크릿에서 일회성 OPENCLAW_GATEWAY_TOKEN을 주입합니다. 잡은 다음을 수행합니다.
- 프로덕션에 고정한 것과 동일한 OpenClaw 마이너 버전을 설치합니다.
- 체크인된 템플릿과 테스트 시크릿을 병합한 대상으로
openclaw config validate를 실행합니다. openclaw doctor --non-interactive를 실행하고, 경고가 정책 임계를 넘으면 실패시킵니다(다수 팀은 「auth missing」 한 줄도 하드 에러로 봅니다).- 선택:
openclaw doctor --deep는 매 PR이 아니라 야간에만—깊은 스캔은 느리고 상승된 권한이 필요할 수 있습니다.
에스컬레이션은 내부 런북을 따르고, 프로비저닝이나 SSH가 막히면 아래 CTA의 공개 도움말을 이용하세요.
운영 가이드일 뿐입니다. OpenClaw는 릴리스마다 동작이 바뀔 수 있으니, 자동화를 켜기 전에 위에 인용한 공식 문서에서 플래그·기본값을 다시 확인하세요.