Web (Gateway)
Gateway는 Gateway WebSocket과 동일한 포트에서 소형 브라우저 Control UI (Vite + Lit)를 제공합니다:- 기본값:
http://<host>:18789/ - 선택적 경로 접두사:
gateway.controlUi.basePath설정 (예:/openclaw)
웹훅
hooks.enabled=true로 설정하면 Gateway는 동일한 HTTP 서버에 소형 웹훅 엔드포인트를 추가로 노출합니다.
인증 및 페이로드 관련 내용은 Gateway 설정 → hooks 항목을 참고하세요.
설정 (기본 활성화)
Control UI는 에셋이 존재할 경우 (dist/control-ui) 기본적으로 활성화됩니다.
설정으로 제어할 수 있습니다:
Tailscale 접근
Integrated Serve 방식 (권장)
Gateway를 루프백에 유지하고 Tailscale Serve로 프록시합니다:https://<magicdns>/(또는 설정한gateway.controlUi.basePath)
Tailnet 바인드 + 토큰
http://<tailscale-ip>:18789/(또는 설정한gateway.controlUi.basePath)
공인 인터넷 (Funnel)
보안 참고사항
- Gateway 인증은 기본적으로 필수입니다 (토큰/비밀번호 또는 Tailscale 신원 헤더).
- 루프백이 아닌 바인드는 여전히 공유 토큰/비밀번호가 필수입니다 (
gateway.auth또는 환경변수). - 마법사는 기본적으로 Gateway 토큰을 생성합니다 (루프백에서도 마찬가지).
- UI는
connect.params.auth.token또는connect.params.auth.password를 전송합니다. - Control UI는 클릭재킹 방지 헤더를 전송하며,
gateway.controlUi.allowedOrigins를 설정하지 않는 한 동일 출처의 브라우저 WebSocket 연결만 허용합니다. - Serve 방식에서
gateway.auth.allowTailscale이true이면 Tailscale 신원 헤더로 Control UI/WebSocket 인증을 통과할 수 있습니다 (토큰/비밀번호 불필요). HTTP API 엔드포인트는 여전히 토큰/비밀번호가 필요합니다. 명시적 자격증명을 요구하려면gateway.auth.allowTailscale: false로 설정하세요. Tailscale 및 보안을 참고하세요. 이 토큰 없는 흐름은 게이트웨이 호스트가 신뢰할 수 있다고 가정합니다. gateway.tailscale.mode: "funnel"은gateway.auth.mode: "password"(공유 비밀번호)를 필요로 합니다.
UI 빌드
Gateway는dist/control-ui에서 정적 파일을 제공합니다. 빌드 명령: