Remote access
Tailscale
OpenClaw може автоматично налаштувати Tailscale Serve (tailnet) або Funnel (публічний доступ) для панелі керування Gateway і порту WebSocket. Завдяки цьому Gateway залишається прив’язаним до local loopback, а Tailscale забезпечує HTTPS, маршрутизацію та (для Serve) заголовки ідентифікації.
Режими
gateway.tailscale.mode:
| Режим | Поведінка |
|---|---|
serve |
Serve лише в tailnet через tailscale serve. Gateway залишається на 127.0.0.1. |
funnel |
Публічний HTTPS через tailscale funnel. Потребує спільного пароля. |
off (типово) |
Без автоматизації Tailscale. |
У виводі стану та аудиту для цього режиму Serve/Funnel в OpenClaw використовується назва доступність через Tailscale. off означає, що OpenClaw не керує Serve або Funnel; це не означає, що локальний демон Tailscale зупинено або з нього вийшли.
Приклади конфігурації
Лише tailnet (Serve)
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Відкрийте: https://<magicdns>/ (або налаштований вами gateway.controlUi.basePath)
Щоб опублікувати інтерфейс керування через іменовану службу Tailscale замість імені хоста пристрою, задайте для gateway.tailscale.serviceName назву служби:
{ gateway: { bind: "loopback", tailscale: { mode: "serve", serviceName: "svc:openclaw" }, },}Після цього під час запуску URL-адреса служби відображатиметься як https://openclaw.<tailnet-name>.ts.net/ замість імені хоста пристрою. Для служб Tailscale хост має бути схваленим позначеним тегом вузлом у вашій tailnet — налаштуйте тег і схваліть службу в Tailscale, перш ніж вмикати цю можливість, інакше команда tailscale serve --service=... завершиться помилкою під час запуску Gateway.
Лише tailnet (прив’язка до IP-адреси Tailnet)
Скористайтеся цим варіантом, щоб Gateway прослуховував безпосередньо IP-адресу Tailnet без Serve/Funnel:
{ gateway: { bind: "tailnet", auth: { mode: "token", token: "your-token" }, },}Підключення з іншого пристрою в Tailnet:
- Інтерфейс керування:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
Публічний інтернет (Funnel + спільний пароль)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password", password: "replace-me" }, },}Використовуйте OPENCLAW_GATEWAY_PASSWORD замість збереження пароля на диску.
Приклади CLI
openclaw gateway --tailscale serveopenclaw gateway --tailscale funnel --auth passwordАвтентифікація
gateway.auth.mode керує встановленням з’єднання:
| Режим | Сценарій використання |
|---|---|
none |
Лише приватний вхідний доступ |
token (типово, якщо задано OPENCLAW_GATEWAY_TOKEN) |
Спільний токен |
password |
Спільний секрет через OPENCLAW_GATEWAY_PASSWORD або конфігурацію |
trusted-proxy |
Зворотний проксі з урахуванням ідентичності; див. Автентифікація через довірений проксі |
Заголовки ідентифікації Tailscale (лише Serve)
Коли задано tailscale.mode: "serve" і gateway.auth.allowTailscale має значення true, для автентифікації інтерфейсу керування/WebSocket можна використовувати заголовки ідентифікації Tailscale (tailscale-user-login) замість токена або пароля. Перед прийняттям запиту OpenClaw перевіряє заголовок: визначає адресу x-forwarded-for запиту через локальний демон Tailscale (tailscale whois) і зіставляє її з логіном у заголовку. Запит відповідає вимогам цього шляху, лише якщо він надходить із local loopback і містить заголовки Tailscale x-forwarded-for, x-forwarded-proto та x-forwarded-host.
Цей процес без токена передбачає, що хост Gateway є довіреним. Якщо на тому самому хості може виконуватися недовірений локальний код, задайте gateway.auth.allowTailscale: false і натомість вимагайте автентифікацію за токеном або паролем.
Область дії обходу:
- Застосовується лише до автентифікації WebSocket інтерфейсу керування. Кінцеві точки HTTP API (
/v1/*,/tools/invoke,/api/channels/*тощо) ніколи не використовують автентифікацію за заголовками ідентифікації Tailscale; вони завжди використовують звичайний режим HTTP-автентифікації Gateway. - Для операторських сеансів інтерфейсу керування, які вже містять ідентичність браузерного пристрою, перевірена ідентичність Tailscale дає змогу пропустити цикл сполучення за початковим токеном або QR-кодом.
- Це не обходить саму перевірку ідентичності пристрою: клієнти без ідентичності пристрою все одно відхиляються, а з’єднання з роллю вузла й надалі проходять звичайні перевірки сполучення та автентифікації.
Примітки
- Для Tailscale Serve/Funnel необхідно встановити CLI
tailscaleі ввійти в систему. tailscale.mode: "funnel"не запускається, якщо режим автентифікації не дорівнюєpassword, щоб уникнути ненавмисного публічного доступу.gateway.tailscale.serviceNameзастосовується лише в режимі Serve і передається доtailscale serve --service=<name>. Значення має відповідати формату Tailscalesvc:<dns-label>, наприкладsvc:openclaw. Tailscale вимагає, щоб хости служб були вузлами з тегами, а служба може потребувати схвалення в консолі адміністратора, перш ніж Serve зможе її опублікувати.gateway.tailscale.resetOnExitскасовує конфігураціюtailscale serve/tailscale funnelпід час завершення роботи.gateway.tailscale.preserveFunnel: trueзберігає зовнішньо налаштований маршрутtailscale funnelактивним після перезапусків Gateway. Зmode: "serve"OpenClaw перевіряєtailscale funnel statusперед повторним застосуванням Serve і пропускає його, якщо маршрут Funnel уже охоплює порт Gateway. Політика OpenClaw для керованого Funnel, що дозволяє лише пароль, не змінюється.gateway.bind: "tailnet"використовує пряму прив’язку до Tailnet (без HTTPS і Serve/Funnel), а також обов’язкову локальну адресу127.0.0.1, коли доступна IPv4-адреса Tailnet; інакше використовується лише local loopback.gateway.bind: "auto"надає перевагу local loopback; використовуйтеtailnet, щоб обмежити мережеву доступність Tailnet, зберігаючи доступ через local loopback із того самого хоста.- Serve/Funnel надають доступ лише до інтерфейсу керування Gateway та WS. Вузли підключаються через ту саму кінцеву точку WS Gateway, тому Serve також забезпечує доступ для вузлів.
Передумови й обмеження Tailscale
- Serve потребує ввімкненого HTTPS для вашої tailnet; якщо його немає, CLI запропонує ввімкнути.
- Serve додає заголовки ідентифікації Tailscale; Funnel — ні.
- Для Funnel потрібні Tailscale v1.38.3+, MagicDNS, увімкнений HTTPS і атрибут вузла Funnel.
- Funnel підтримує через TLS лише порти
443,8443і10000. - Для Funnel у macOS потрібен варіант застосунку Tailscale з відкритим кодом.
Керування браузером (віддалений Gateway + локальний браузер)
Щоб запустити Gateway на одному комп’ютері, але керувати браузером на іншому, запустіть хост вузла на комп’ютері з браузером і залиште обидва пристрої в одній tailnet. Gateway передає дії браузера до вузла через проксі; окремий сервер керування або URL-адреса Serve не потрібні.
Уникайте Funnel для керування браузером; ставтеся до сполучення вузлів як до операторського доступу.
Докладніше
- Огляд 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