대상: Docker 또는 로컬에 OpenClaw를 설치했는데 openclaw CLI가 최초 페어링·onboarding·컨테이너 실행에서 WebSocket 1006/1008을 반복하거나, 설정 파일을 바꿔도 token mismatch가 남는 경우입니다.핵심: 환경 변수 덮어쓰기, CLI가 실제로 붙는 ws URL, 페어링 상태 머신을 한 장의 대조표에 맞춘 뒤 openclaw doctor와 Docker 네트워크 글을 이어 붙입니다.구성: 여섯 가지 오판, 증상 매트릭스, 지문 명령, 여섯 단계 Runbook, 세 KPI, 호스팅 정리입니다.
gateway.auth.token을 바꿨는데도 mismatch가 남는 이유: 여섯 가지 흔한 오판2025–2026 커뮤니티 장애 분류에서 OpenClaw Gateway 페어링·인증 문제는 종종 «네트워크가 끊겼다»로 섞입니다. 로그에 종료 코드와 모델 오류가 같이 보이면 상류 LLM 장애로 착각하기 쉽습니다. 아래 여섯 줄은 당직에서 엔지니어를 다른 길로 빼는 패턴이니, 설치 후 doctor와 Gateway 헬스와 함께 위키 첫 화면에 붙여 두세요.
OPENCLAW_GATEWAY_TOKEN이 설정 파일을 조용히 덮어씁니다: 컨테이너나 launchd 유닛이 주입한 환경 변수가 우선합니다. 디스크의 gateway.auth.token은 바꿨는데 프로세스는 예전 값을 읽어 «재시작해도 mismatch»처럼 보입니다.127.0.0.1을 향합니다: Compose에서 CLI의 Gateway URL을 openclaw-gateway 서비스 이름으로 돌리지 않으면 핸드셰이크 초기에 실패하고, 애플리케이션 계층 오류 없이 1006/1008만 남아 Docker 네트워크 분기 체크리스트와 겹칩니다..openclaw가 있고, CLI가 읽는 경로와 편집기에서 연 파일이 다릅니다.공식 설치 스크립트와 npm 전역 경로와의 관계: 설치 글은 «바이너리와 Node 버전이 PATH에 있다»를 보장하고, 이 글은 «CLI와 Gateway가 같은 token과 같은 WebSocket 엔드포인트로 말한다»를 보장합니다. 같은 첫날 Runbook에 순서대로 넣습니다.
이 매트릭스는 첫 분기용입니다. 행에 해당하면 해당 점검을 «재현 가능한 명령 출력»까지 만든 뒤 다음으로 넘어가고, token·Compose·리버스 프록시를 동시에 바꾸지 마세요.
| 겉으로 보이는 증상 | 먼저 의심할 스택 | 즉시 할 점검 | 다음 문서 |
|---|---|---|---|
로그: token mismatch이고 파일 수정이 소용없음 | 환경 변수 덮어쓰기 / 다중 설정 | 프로세스 환경의 OPENCLAW_GATEWAY_* 출력; 실제 로드 경로와 대조 | 이 글 §3 지문 스크립트; 설치 후 doctor 글 |
| 컨테이너에서만 실패하고 호스트는 성공 | 루프백 / 서비스 이름 / DNS | 컨테이너 안에서 Gateway 포트를 curl 또는 nc로 확인; ws URL 호스트 검증 | Docker 네트워크 분기 체크리스트 |
| 1008과 401/403 의미 또는 명시적 인증 실패 | 인증 설정 / 리버스 프록시 헤더 제거 | loopback 직접 연결로 재현; 프록시 전후 응답 헤더 비교 | Nginx/Caddy 리버스 프록시와 WebSocket 글 |
| 1006이 잦고 인증 오류가 분명하지 않음 | 유휴 종료, 프로브에 의한 세션 종료, 버전 불일치 | CLI와 Gateway 버전 정렬; 게이트웨이 로그에서 세션 회수 여부 확인 | Gateway 무응답과 doctor 글 |
| onboarding UI/CLI가 멈춘 것처럼 보임 | 상태 머신 미완 / 포트 충돌 | 리슨 포트 충돌 확인; 재페어링 전 임시 상태 정리(공식 안내) | 공식 Troubleshooting; 이 글 Runbook |
| 재설치 후 «한 번은 붙었다가» 곧 끊김 | 예전 token 주입 경로가 남음 | systemd drop-in, 셸 프로파일, CI 변수 확인 | 설치 글의 pin과 프록시 폴백 절 |
출력은 티켓에 붙이고, 루트 경로는 환경에 맞게 바꿉니다. Docker 볼륨과 권한과 함께 검토할 때는 마운트가 새 볼륨을 오래된 설정 디렉터리로 가리지 않는지 확인하세요.
# A) 현재 셸에서 보이는 환경 변수(대소문자와 접두사 주의) env | sort | grep -i OPENCLAW || true # B) 예시: systemd로 gateway를 관리할 때 drop-in이 token을 주입하는지 # systemctl show openclaw-gateway --property=Environment 2>/dev/null || true # C) CLI 버전과 doctor(먼저 얕게—프로덕션에서 무분별 --fix는 피함) openclaw --version || true openclaw doctor 2>/dev/null | sed -n '1,40p' || true # D) CLI 쪽 gateway URL 출력(서브커맨드는 설치된 빌드에 맞출 것) # openclaw config get gateway.remoteUrl # 예시 이름, 자리 표시자 # E) Docker: CLI를 돌리는 컨테이너에서 ws 목적지가 잘못된 127.0.0.1:18789가 아닌지 # docker compose exec cli sh -lc 'env | grep -i OPENCLAW; getent hosts openclaw-gateway || true'
안내: 커뮤니티 이슈에서 환경 변수의 token과 파일 불일치로 onboarding이 오래 멈추는 사례가 흔합니다. Compose 변경을 논하기 전에 A/B 출력을 먼저 채우세요.
OPENCLAW_GATEWAY_TOKEN 등 주입을 하나씩 제거하고 프로세스 재시작 후 환경이 깨끗한지 확인한 뒤, 설정 파일에 단일 진실을 되돌립니다.doctor --deep가 있으면 변경 창 안에서 실행하고 출력을 보관합니다.엔지니어링 정렬 메모(실험실 벤치가 아니라 커뮤니티·운영 경험): 공개 이슈에서 token 이중 트랙과 컨테이너 루프백 오지정은 «첫 배포 실패» 유형 상위에 계속 남습니다. 변경 템플릿에 환경 변수 감사를 넣으면 평균 분기 라운드가 줄어드는 경우가 많습니다. 더 중요한 점은 이런 실패가 GHz와 약한 상관이라는 것입니다. 메모리만 늘려서 핸드셰이크 실패가 사라지지는 않습니다.
Gateway를 7×24로 돌리고 개인 노트북의 절전·전원과 싸우지 않으려면 «안정적인 전용 실행면»과 «페어링·업그레이드 창»을 같은 SRE 문서에 둡니다. 기업이 에이전트용 Gateway를 원격 Mac에 상주시키는 관행과도 맞습니다.
개인 기기에서는 절전, VPN 전환, 기업 인증서 갱신의 영향을 받기 쉬워 페어링 상태 머신을 감사하고 재생하기 어렵습니다. token 로테가 여러 사람의 CI에 걸칠 때 노트북 환경은 고정 호스트명과 안정적인 루프백 경계도 부족해 로그가 잘게 쪼개집니다.
예측 가능하게 재시작할 수 있고 디스크·로그 동작이 읽기 쉬우며 팀 Runner와 같은 네트워크에 둘 수 있는 전용 원격 Mac에 Gateway를 두면, 여러 대의 개인 기기를 옮겨 다니는 것보다 onboarding 이슈가 빨리 수렴합니다. Apple Silicon을 상시 가동하고 CI 비밀 모델과 맞춰 납품하려는 팀은 MACCOME Mac mini M4 / M4 Pro 멀티 리전과 유연한 렌탈 기간으로 «페어링 분기»와 «안정 실행면»을 같은 청구와 변경 리듬에 올릴 수 있습니다. 먼저 공개 가격 안내를 읽고, 운영은 원격 Mac 상주 운영 체크리스트에 맞춥니다.
파일럿 제안: 주 CI와 같은 리전의 원격 한 대만 고르고 Gateway와 최소 smoke 잡만 올린 뒤, 격주 리뷰에서 이 글의 여섯 단계 Runbook을 돌리고, 그다음 대화형 개발까지 같은 토폴로지로 옮길지 결정합니다.
자주 묻는 질문
먼저 doctor를 돌릴까요, token을 바꿀까요?
먼저 이 글의 표 1로 «페어링·token」을 갈라냅니다. 네트워크 층까지 확정됐다면 doctor의 네트워크 항목을 병행해도 됩니다. 공개 가격과 리전은 Mac mini 대여 가격 안내를 보세요.
1006은 항상 1008보다 덜 심각한가요?
반드시 그렇지는 않습니다. 인접 로그 줄과 재현성을 함께 봅니다. 종료 코드는 라벨이지 결론이 아니므로 인증 분기를 건너뛰지 마세요.
프로덕션 컨테이너에 token을 오래 export해 두어도 되나요?
권장하지 않습니다. 오케스트레이터가 단기 자격 증명을 주입하거나 시크릿 사이드카를 쓰고 «진실»을 한곳으로 모으는 편이 안전합니다. 그렇지 않으면 로테 때마다 이중 트랙이 생기기 쉽습니다.