OpenClaw може автоматично налаштовувати Tailscale Serve (tailnet) або Funnel (публічний доступ) для панелі Gateway і порту WebSocket. Це залишає Gateway прив’язаним до loopback, тоді як Tailscale забезпечує HTTPS, маршрутизацію і (для Serve) заголовки ідентичності.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Режими
serve: Serve лише для tailnet черезtailscale serve. Gateway залишається на127.0.0.1.funnel: Публічний HTTPS черезtailscale funnel. OpenClaw вимагає спільний пароль.off: Типово (без автоматизації Tailscale).
off означає, що OpenClaw не керує Serve або Funnel; це не означає, що локальний демон Tailscale зупинений або вийшов з облікового запису.
Автентифікація
Установітьgateway.auth.mode, щоб керувати рукостисканням:
none(лише приватний вхідний трафік)token(типово, коли встановленоOPENCLAW_GATEWAY_TOKEN)password(спільний секрет черезOPENCLAW_GATEWAY_PASSWORDабо конфігурацію)trusted-proxy(зворотний проксі з урахуванням ідентичності; див. Автентифікація довіреного проксі)
tailscale.mode = "serve" і gateway.auth.allowTailscale має значення true, автентифікація Control UI/WebSocket може використовувати заголовки ідентичності Tailscale (tailscale-user-login) без надання токена або пароля. OpenClaw перевіряє ідентичність, розв’язуючи адресу x-forwarded-for через локальний демон Tailscale (tailscale whois) і зіставляючи її із заголовком перед прийняттям. OpenClaw розглядає запит як Serve лише тоді, коли він надходить із loopback із заголовками Tailscale x-forwarded-for, x-forwarded-proto і x-forwarded-host.
Для операторських сеансів Control UI, які містять ідентичність пристрою браузера, цей перевірений шлях Serve також пропускає цикл сполучення пристрою. Він не обходить ідентичність пристрою браузера: клієнти без пристрою все одно відхиляються, а підключення WebSocket з роллю вузла або не з Control UI все одно проходять звичайні перевірки сполучення й автентифікації.
Кінцеві точки HTTP API (наприклад, /v1/*, /tools/invoke і /api/channels/*) не використовують автентифікацію за заголовками ідентичності Tailscale. Вони й надалі використовують звичайний режим HTTP-автентифікації Gateway: автентифікацію зі спільним секретом за замовчуванням або навмисно налаштовану схему trusted-proxy / приватного вхідного трафіку none.
Цей потік без токена припускає, що хост Gateway є довіреним. Якщо на тому самому хості може виконуватися недовірений локальний код, вимкніть gateway.auth.allowTailscale і натомість вимагайте автентифікацію токеном або паролем.
Щоб вимагати явні облікові дані зі спільним секретом, установіть gateway.auth.allowTailscale: false і використовуйте gateway.auth.mode: "token" або "password".
Приклади конфігурації
Лише tailnet (Serve)
https://<magicdns>/ (або ваш налаштований gateway.controlUi.basePath)
Лише tailnet (прив’язка до IP tailnet)
Використовуйте це, коли хочете, щоб Gateway слухав безпосередньо на IP tailnet (без Serve/Funnel).- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
Loopback (
http://127.0.0.1:18789) не працюватиме в цьому режимі.Публічний інтернет (Funnel + спільний пароль)
OPENCLAW_GATEWAY_PASSWORD, а не фіксуйте пароль на диску.
Приклади CLI
Примітки
- Для Tailscale Serve/Funnel потрібно, щоб CLI
tailscaleбув встановлений і виконаний вхід. tailscale.mode: "funnel"відмовляється запускатися, якщо режим автентифікації неpassword, щоб уникнути публічного розкриття.- Установіть
gateway.tailscale.resetOnExit, якщо хочете, щоб OpenClaw скасовував конфігураціюtailscale serveабоtailscale funnelпід час завершення роботи. - Установіть
gateway.tailscale.preserveFunnel: true, щоб зберігати зовнішньо налаштований маршрутtailscale funnelактивним між перезапусками Gateway. Коли це ввімкнено і Gateway працює вmode: "serve", OpenClaw перевіряєtailscale funnel statusперед повторним застосуванням Serve і пропускає його, якщо маршрут Funnel уже покриває порт Gateway. Керована OpenClaw політика Funnel лише з паролем не змінюється. gateway.bind: "tailnet"— це пряма прив’язка до tailnet (без HTTPS, без Serve/Funnel).gateway.bind: "auto"надає перевагу loopback; використовуйтеtailnet, якщо потрібен лише tailnet.- Serve/Funnel відкривають лише Control UI Gateway + WS. Вузли підключаються через ту саму кінцеву точку Gateway WS, тому Serve може працювати для доступу вузлів.
Керування браузером (віддалений Gateway + локальний браузер)
Якщо ви запускаєте Gateway на одній машині, але хочете керувати браузером на іншій машині, запустіть хост вузла на машині браузера й тримайте обидві в одному tailnet. Gateway проксіюватиме дії браузера до вузла; окремий сервер керування або URL Serve не потрібні. Уникайте Funnel для керування браузером; розглядайте сполучення вузла як операторський доступ.Передумови та обмеження Tailscale
- Serve вимагає ввімкненого HTTPS для вашого tailnet; CLI покаже підказку, якщо його немає.
- Serve додає заголовки ідентичності Tailscale; Funnel цього не робить.
- Funnel вимагає Tailscale v1.38.3+, MagicDNS, увімкненого HTTPS і атрибута вузла funnel.
- Funnel підтримує лише порти
443,8443і10000через TLS. - Funnel на macOS вимагає варіант програми Tailscale з відкритим кодом.
Докладніше
- Огляд Tailscale Serve: https://tailscale.com/kb/1312/serve
- Команда
tailscale serve: https://tailscale.com/kb/1242/tailscale-serve - Огляд Tailscale Funnel: https://tailscale.com/kb/1223/tailscale-funnel
- Команда
tailscale funnel: https://tailscale.com/kb/1311/tailscale-funnel