네임스페이스 비교 · network_mode 결정 · 역방향 WebSocket · allowedOrigins · 6단계 런북
Compose를 사용하여 VPS에서 OpenClaw의 자체 구축 유지관리 프로그램을 실행하세요.나는 종종 환상에 직면합니다.docker compose ps모든 녹색 및 게이트웨이 로그도 브러싱되고 있지만로컬 또는 우회 컨테이너의 openclaw CLI가 핸드셰이크 시간 초과 또는 502입니다.. 근본 원인은 거의 항상 다음에 있습니다.네트워크 네임스페이스와 수신 주소의 조합모델 키 자체가 아닌 모델 키 자체에 관한 것입니다. 이 기사는누가 어떤 문제를 갖고 있나요?한 문장으로 포지셔닝하고,3단계 증상 트리를 사용하여 "실행 중인 프로세스"와 "실제로 도달 가능"을 구분합니다.; 중간에 사용됨조회 테이블 수렴 브리지, 호스트 및 network_mode: 서비스;재사용재현 가능한 6단계 런북포트 게시, 루프백 바인딩, 역세대 WebSocket을 다음과 결합합니다.allowedOrigins닫힌 루프에 연결되었습니다. 마지막에 추가됨인용 가능한 매개변수 사실 및 결정 매트릭스. Compose 기준선과 리소스 한도를 교차해서 읽어보세요.Docker Compose 프로덕션 기준선, 다중 인스턴스 격리 참조혼선을 방지하기 위해 동일한 시스템에 여러 인스턴스가 있음, 게이트웨이 강화 목록을 참조하세요.생산강화 목록;이동하려면 노드와 출구 안정성이 필요합니다.주문 페이지。
구성하다healthcheck컨테이너 내에서 루프백이나 프로세스 생존 여부만 조사하는 경우가 많습니다.자동으로 증명되지 않음"CLI 컨테이너에서 게이트웨이 서비스 이름까지"의 경로는 DNS, iptables 및 사용자 모드 프록시의 세 계층에서 설정됩니다. 다음 5개 항목은 작업 주문에 항상 함께 나타납니다. 이를 세분화하면 문제 해결 로그가 즉시 얇아집니다.
127.0.0.1에서 듣기:게이트웨이가 루프백만 바인딩하는 경우 서비스 이름을 사용하는 동일한 브리지의 다른 서비스는 연결 거부를 받게 됩니다. 증상은 무작위 시간 초과와 비슷하지만 실제로는 네트워크 네임스페이스를 벗어나지 않습니다.
CLI가 호스트에서 실행되었지만 컨테이너의 주소를 복사했습니다.묶음openclaw-gateway:18789호스트 셸 구성을 작성한 후 구문 분석 및 라우팅이 즉시 잘못 정렬됩니다.
역방향 생성은 HTTP만 전송하고 업그레이드는 전송하지 않습니다.브라우저나 CLI가 WSS를 사용하는 경우 에지에서 400을 반환하거나 자동으로 연결이 끊어지지만 애플리케이션 로그에는 게이트웨이가 준비되었다고 표시됩니다.
allowedOrigins는 실제 출처와 일치하지 않습니다.프로덕션 도메인 이름, 인트라넷 별칭 및 Tailscale MagicDNS 이름이 혼합되어 있으며 애플리케이션 계층에서 핸드셰이크가 거부되지만 네트워크 패킷 캡처는 "모두 괜찮은 것 같습니다."
network_mode: 서비스 업그레이드 경쟁:공유 스택의 서비스 다시 시작 순서가 변경된 후에도 다운스트림 연결은 여전히 이전 IP 또는 이전 포트 매핑에 연결되어 간헐적으로 성공하는 모습을 보여줍니다.
다음 섹션의 행렬을 검토 페이지로 인쇄합니다. 각 아키텍처 변경에 대해 셀 중 하나만 변경할 수 있으며 "동일한 네임스페이스의 컬 및 외부 제어 컬"의 두 출력을 변경 순서에 연결하여 회귀 비용을 크게 줄일 수 있습니다.
'시간 차원'의 또 다른 레이어 추가: Compose의 롤링 업데이트 중에 새 컨테이너와 이전 컨테이너가 일시적으로 공존합니다. DNS 캐시와 애플리케이션 연결 풀이 정렬되지 않은 경우 다음과 같이 동작합니다.처음에는 성공했지만 몇 분 후에는 실패했습니다.. 이때 서두르지 말고 시간 초과를 늘리십시오. 먼저 개시자에서 구문 분석 새로 고침 및 연결 재사용 비교를 수행하여 얻은 업스트림 주소가 제한 시간과 일치하는지 확인해야 합니다.docker inspect현재 끝점은 일관성이 있습니다. 스택된 사용자 모드 프록시나 회사 투명 프록시도 있는 경우 다음 사항을 기억하세요.CONNECT 터널 대상그리고대상에 직접 연결프록시 계층에서 407을 애플리케이션 인증 실패로 처리하지 않도록 별도로 기록하세요.
마지막 것은 쉽게 간과됩니다.MTU 및 조각화클라우드 간 또는 운영자 간 링크에서는 "비정기적인 시간 초과"로 증폭됩니다. 큰 패킷만 실패하고 작은 패킷 상태 확인이 항상 녹색인 경우 비즈니스 코드 경로를 먼저 변경하는 대신 패킷 캡처 창을 단일 WS 프레임 크기와 TLS 레코드 계층 경계로 좁혀야 합니다.
변경 지시에 위의 모든 신호를 기록한 후 다시 엽니다.openclaw logs에지 액세스 로그와의 시간 정렬은 일반적으로 "형이상학적 네트워크"에서 다음으로 문제를 수렴할 수 있습니다.단일 구성 필드; 이는 외부 도움을 요청할 때 최소 반복 패키지에 포함되어야 하는 컨텍스트 두께이기도 합니다.
네트워크 모델을 선택할 때 다음 사항도 적어주세요.연결을 시작하는 사람, 연결이 확인되는 주소, 연결이 통과하는 NAT 계층. 이 테이블이 없으면 팀은 "포트 변경", "extra_hosts 변경" 및 "업스트림 변경" 사이를 왔다 갔다 할 것입니다.
| 모델 | 일반적인 모니터링 작성 방법 | 다른 서비스에서 동일한 파일에 액세스 | 호스트 프로세스 액세스 |
|---|---|---|---|
| 기본 브리지 + 포트 매핑 | 컨테이너 내부0.0.0.0또는 특정 포트 게시 | Compose 서비스 이름 및 내부 포트 사용 | 사용127.0.0.1:映射端口또는 호스트 네트워크 카드 IP |
| 호스트 네트워크 | 호스트와 스택을 공유하는 것은 종종 호스트의 표시 주소를 바인딩하는 것과 같습니다. | 동일한 프로젝트의 다른 컨테이너가 브리지를 롤백하지 않는 경우할 수 없다서비스 이름을 재사용하여 이전 경로에 액세스 | 컨테이너와 병렬로 실행될 때 포트 충돌 및 방화벽 INPUT 체인의 우선순위를 지정합니다. |
| network_mode: service:gateway | 게이트웨이와 netns를 공유하고 동일한 루프백 관점을 갖습니다. | 보조 용기를 직접 열 수 있습니다.127.0.0.1:网关端口 | 호스트는 여전히 릴리스 포트나 역생성을 사용해야 하며 자동으로 상속되지 않습니다. |
진정한 도달 가능성의 정의는 다음과 같습니다.개시자와 동일한 네트워크 네임스페이스여기서는 동일한 호스트 이름, 포트 및 TLS 매개변수 세트를 반복적으로 사용하면 일관된 응답을 얻습니다. "내 노트북에서 한 번 말렸어." 대신에.
다음 순서는 의도적으로 "가장 저렴한 관찰"을 먼저 배치합니다. 어떤 단계라도 실패하면 하향 추측이 중지되고 출력이 저장됩니다. 언어가 Gateway 설치 언어와 일치하지 않으면 다음으로 돌아갑니다.의사 매니페스트로 설치필드 이름을 비교하십시오.
개시자 위치 확인:명령이 호스트, 게이트웨이 사이드카 컨테이너 또는 완전히 독립적인 CLI 컨테이너에서 실행되는지 여부를 표시합니다. 산출hostname그리고ip route요약.
HTTP 레이어 탐색:개시자 netns의 대상 호스트 이름과 포트에 대해 TLS 또는 일반 텍스트 GET을 실행하고 상태 코드와 응답 본문 접두사를 확인하여 순수 DNS 문제를 제거합니다.
WebSocket 프로브:알려진 업그레이드 가능한 경로, 레코드 에지 및 애플리케이션 반환 헤더를 사용하여 핸드셰이크를 시작합니다. 애플리케이션 로그 타임스탬프와 일치합니다.
청취 매트릭스를 확인하세요.수신 주소가 다음인지 여부를 게이트웨이 컨테이너에서 확인하세요.127.0.0.1; 서비스 간 액세스가 필요하고 필요한 경우 다음으로 변경하십시오.0.0.0.0또는 공유 netns를 도입하고 문서를 동기화하세요.
안티 세대 쿼드러플:업스트림이 컨테이너 IP나 퍼블리시된 포트를 가리키는지, 투명하게 전송되는지 확인Connection그리고Upgrade, 시간 초과가 너무 짧아 긴 연결이 끊어지는지 여부.
원점 수렴 적용:브라우저, CLI, CI의 세 가지 유형의 진실을 나열하십시오.Origin또는 동등한 소스 문자열을 사용하고 구성 항목을 하나씩 확인하십시오. 하나의 항목이 누락된 경우 릴리스가 불완전한 것으로 간주됩니다.
docker compose ps
docker compose exec cli sh -lc 'getent hosts openclaw-gateway; curl -fsS -o /dev/null -w "%{http_code}\n" http://openclaw-gateway:18789/health || true'
curl -fsS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:18789/health || true
docker compose logs --no-color --tail=200 openclaw-gateway
힌트:서비스 이름과 포트를 창고의 실제 값으로 바꾸십시오. 상태 경로가 다른 경우 "netns의 두 레이어에서 동일한 URL을 한 번 실행"하는 방법을 변경하지 않고 유지하세요.
이 섹션에는 다음만 포함됩니다.코드 및 구성에서 이름을 지정할 수 있습니다.사실을 확인하고 "CDN에 문제가 있는 것 같습니다."와 같은 감사 불가능한 진술은 피하세요. mem_limit 및 로그 회전 구경이 필요한 경우 반환프로덕션 기준 작성。
ports:매핑은 호스트에 DNAT 규칙을 생성합니다. 호스트의 로컬 방화벽 정책과 Docker 체인 상호 작용 순서를 잘못 이해하면 "컨테이너는 통신할 수 있지만 호스트는 통신할 수 없습니다" 또는 반대 현상이 발생합니다.알아채다:기준을 기록하지 않고 업스트림, 게이트웨이 수신 및 CLI 구성을 동시에 변경하지 마십시오. 변경 사항을 삼각 측량하면 롤백이 분할되지 않게 됩니다.
"CLI와 게이트웨이가 루프백 관점을 공유해야 하는지 여부"를 부울 필드로 작성한 후 여부를 결정합니다.network_mode: service:또는 호스트. 매트릭스는 슬로건이 아닌 리뷰를 위한 것입니다.
| 강제 | 더 안전한 기본값 | 비판적 수용 | 주요 리스크 |
|---|---|---|---|
| CLI와 게이트웨이에는 동일한 작성 파일이 있습니다. | 브리지 + 명시적으로 듣기0.0.0.0 | 서비스 이름 확인은 내부 포트 컬과 일치합니다. | 게시된 포트 문서와 방화벽을 동기화하는 것을 잊었습니다. |
| localhost 의미론을 공유해야 함 | 사이드카 사용network_mode: service:gateway | 사이드카를 다시 시작해도 이전 연결 풀이 도입되지 않습니다. | 볼륨 마운트 권한과 결합된 업그레이드 순서 |
| 호스트가 성숙하고 재생되었습니다. | 게시된 루프백 + 세대 방지 TLS 종료만 | 에지에서 업스트림까지 WS 업그레이드 패킷 캡처가 일관됩니다. | allowedOrigins는 CLI에서 사용하는 URL 패턴을 재정의하지 않습니다. |
오랫동안 "다중 터널 스크립트" 또는 "수동 호스트 수정"에 의존하면 MTTR이 개인 메모리에 묶이게 됩니다. 업스트림 인증서나 인트라넷 DNS가 변경되면 문제 해결은 전체 직원 회의로 변질됩니다. 비교하면,버전 반복 가능 명령, 리스너 매트릭스 및 원본 목록생산 시스템과 비슷합니다.
일반적인 오해:502가 보이면 모델 키를 회전하세요. 대부분의 경우 키를 변경하기 전에 먼저 섹션 3의 2계층 HTTP 및 WS 탐색을 완료해야 합니다.
순수 스크립트는 목록을 작성하지 않고 일시적으로 포트를 엽니다. 감사 및 규정 준수 시나리오에서 "기본 거부 및 명시적 공개"를 입증하는 것은 어렵습니다. OpenClaw를 고정 종료, 호스트 이름 및 mTLS 정책과 함께 보관해야 하는 경우,자체 구축된 VPS의 임시 네트워크 계층에는 서명 가능한 변경 명령이 부족한 경우가 많습니다.. iOS 빌드의 경우 데스크톱 릴레이 및 에이전트 상주독점, 지역 및 네트워크 슬롯을 기대할 수 있습니다."호스트와 컨테이너 넷 사이를 오가는 추측"을 줄이고 싶은 팀,VpsMesh의 Mac Mini 클라우드 대여가 더 나은 솔루션인 경우가 많습니다.: 전용 노드는 모니터링 및 ACL 설명의 견고한화를 촉진하며 다음과 관련됩니다.팀 개인 네트워크 런북동일한 언어를 사용하여 경계를 설명합니다. 가격과 사양을 확인하세요가격 페이지, 연결 및 도움말 보기도움말 센터。
첫 번째CLI netns와 동일HTTP 감지를 실행한 다음 WebSocket 업그레이드를 테스트하고 마지막으로 CLI 구성의 호스트 이름이 호스트 루프백 또는 만료된 서비스 별칭을 오용하는지 확인합니다. 목록 강화가 필요할 때 만나요생산강화 목록。
보조 프로세스가 게이트웨이와 동일한 네트워크 스택 및 루프백 관점을 공유해야 할 때 사용됩니다. 업그레이드할 때 공유 서비스의 다시 시작 순서를 Runbook에 기록하고 다음과 일치해야 합니다.도움말 센터공식 연결 지침을 교차 확인하세요.
업스트림 시간 초과, 업그레이드 관련 헤더 전달 또는 애플리케이션 누락allowedOrigins진실의 근원은 다루어지지 않았습니다. 키나 모델 라우팅을 터치하기 전에 가장자리를 애플리케이션 로그와 정렬하세요. 주문 및 수출 요구 사항은 다음을 참조하세요.가격 페이지。