웹 (Gateway)
Gateway는 Gateway WebSocket과 동일한 포트에서 작은 브라우저 Control UI (Vite + Lit)를 제공합니다:
- 기본값: http://<host>:18789/
- 선택적 프리픽스: gateway.controlUi.basePath 설정 (예: /openclaw)
기능은 Control UI에 있습니다. 이 페이지는 바인드 모드, 보안 및 웹 대면 표면에 중점을 둡니다.
웹훅
hooks.enabled=true일 때 Gateway는 동일한 HTTP 서버에서 작은 웹훅 엔드포인트도 노출합니다. 인증 + 페이로드는 Gateway configuration → hooks를 참조하세요.
구성 (기본 켜짐)
Control UI는 에셋이 있을 때 기본적으로 활성화됩니다 (dist/control-ui). 구성을 통해 제어할 수 있습니다:
{
gateway: {
controlUi: { enabled: true, basePath: "/openclaw" } // basePath 선택 사항
}
}
Tailscale 액세스
통합 Serve (권장)
Gateway를 loopback에 유지하고 Tailscale Serve가 프록시하도록 합니다:
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" }
}
}
그런 다음 Gateway를 시작합니다:
openclaw gateway
열기:
- https://<magicdns>/ (또는 구성된 gateway.controlUi.basePath)
Tailnet 바인드 + 토큰
{
gateway: {
bind: "tailnet",
controlUi: { enabled: true },
auth: { mode: "token", token: "your-token" }
}
}
그런 다음 Gateway를 시작합니다 (비 loopback 바인드에는 토큰 필요):
openclaw gateway
열기:
- http://<tailscale-ip>:18789/ (또는 구성된 gateway.controlUi.basePath)
공개 인터넷 (Funnel)
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password" } // 또는 OPENCLAW_GATEWAY_PASSWORD
}
}
보안 참고
- Gateway 인증은 기본적으로 필요합니다 (토큰/비밀번호 또는 Tailscale 신원 헤더).
- 비 loopback 바인드는 여전히 공유 토큰/비밀번호 (gateway.auth 또는 env)가 필요합니다.
- 마법사는 기본적으로 Gateway 토큰을 생성합니다 (loopback에서도).
- UI는 connect.params.auth.token 또는 connect.params.auth.password를 보냅니다.
- Serve를 사용하면 gateway.auth.allowTailscale이 true일 때 Tailscale 신원 헤더가 인증을 충족할 수 있습니다 (토큰/비밀번호 불필요). 명시적 자격 증명을 요구하려면 gateway.auth.allowTailscale: false를 설정합니다. Tailscale 및 Security를 참조하세요.
- gateway.tailscale.mode: "funnel"은 gateway.auth.mode: "password" (공유 비밀번호)가 필요합니다.
UI 빌드
Gateway는 dist/control-ui에서 정적 파일을 제공합니다. 다음으로 빌드합니다:
pnpm ui:build # 첫 실행 시 UI 종속성 자동 설치