Skip to main content
Panel Gateway to interfejs Control UI w przeglądarce, domyślnie udostępniany pod adresem / (można go zmienić za pomocą gateway.controlUi.basePath). Szybkie otwieranie (lokalny Gateway): Najważniejsze materiały: Uwierzytelnianie jest wymuszane podczas uzgadniania połączenia WebSocket za pośrednictwem skonfigurowanej ścieżki uwierzytelniania Gateway:
  • connect.params.auth.token
  • connect.params.auth.password
  • nagłówki tożsamości Tailscale Serve, gdy gateway.auth.allowTailscale: true
  • nagłówki tożsamości zaufanego serwera proxy, gdy gateway.auth.mode: "trusted-proxy"
Zobacz gateway.auth w sekcji Konfiguracja Gateway.
Control UI jest interfejsem administracyjnym (czat, konfiguracja, zatwierdzanie wykonywania poleceń). Nie należy udostępniać go publicznie. Interfejs przechowuje tokeny z adresu URL panelu w sessionStorage dla bieżącej karty przeglądarki i wybranego adresu URL Gateway, a po załadowaniu usuwa je z adresu URL. Zaleca się używanie localhost, Tailscale Serve lub tunelu SSH.

Szybka ścieżka (zalecana)

  • Po wdrożeniu początkowym CLI automatycznie otwiera panel i wyświetla czysty odnośnik (bez tokenu).
  • Ponowne otwarcie w dowolnym momencie: openclaw dashboard (kopiuje odnośnik, otwiera przeglądarkę, jeśli to możliwe, i wyświetla wskazówkę dotyczącą SSH w środowisku bez interfejsu graficznego).
  • Jeśli przekazanie odnośnika do schowka i przeglądarki nie powiedzie się, openclaw dashboard nadal wyświetli czysty adres URL i poleci dołączyć token (z OPENCLAW_GATEWAY_TOKEN lub gateway.auth.token) jako klucz fragmentu adresu URL token; wartość tokenu nigdy nie jest wyświetlana w dziennikach.
  • Jeśli interfejs poprosi o uwierzytelnienie za pomocą współdzielonego sekretu, należy wkleić skonfigurowany token lub hasło w ustawieniach Control UI.

Podstawy uwierzytelniania (lokalnie i zdalnie)

  • Localhost: otwórz http://127.0.0.1:18789/.
  • TLS Gateway: gdy gateway.tls.enabled: true, odnośniki do panelu i stanu używają https://, a odnośniki WebSocket Control UI używają wss://.
  • Źródło tokenu współdzielonego sekretu: gateway.auth.token (lub OPENCLAW_GATEWAY_TOKEN). openclaw dashboard może przekazać go we fragmencie adresu URL w celu jednorazowego uruchomienia początkowego; Control UI przechowuje go w sessionStorage dla bieżącej karty i wybranego adresu URL Gateway, a nie w localStorage.
  • Jeśli gateway.auth.token jest zarządzany za pomocą SecretRef, openclaw dashboard celowo wyświetla, kopiuje i otwiera adres URL bez tokenu, aby uniknąć ujawnienia tokenów zarządzanych zewnętrznie w dziennikach powłoki, historii schowka lub argumentach uruchamiania przeglądarki. Jeśli odwołania nie można rozpoznać w bieżącej powłoce, polecenie nadal wyświetla adres URL bez tokenu wraz z praktycznymi wskazówkami dotyczącymi konfiguracji uwierzytelniania.
  • Hasło współdzielonego sekretu: należy użyć skonfigurowanego gateway.auth.password (lub OPENCLAW_GATEWAY_PASSWORD). Panel nie zachowuje haseł po ponownym załadowaniu.
  • Tryby przekazujące tożsamość: Tailscale Serve spełnia wymagania uwierzytelniania Control UI/WebSocket za pomocą nagłówków tożsamości, gdy gateway.auth.allowTailscale: true; serwer reverse proxy obsługujący tożsamość i działający poza interfejsem loopback spełnia wymagania gateway.auth.mode: "trusted-proxy". Żaden z tych trybów nie wymaga wklejenia współdzielonego sekretu dla połączenia WebSocket.
  • Poza localhost: należy użyć Tailscale Serve, powiązania poza interfejsem loopback ze współdzielonym sekretem, serwera reverse proxy obsługującego tożsamość i działającego poza interfejsem loopback z gateway.auth.mode: "trusted-proxy" albo tunelu SSH. Interfejsy API HTTP nadal używają uwierzytelniania współdzielonym sekretem, chyba że celowo uruchomiono prywatny ruch przychodzący gateway.auth.mode: "none" lub uwierzytelnianie HTTP zaufanego serwera proxy. Zobacz Interfejsy internetowe.

Otwieranie w Telegram

Boty Telegram mogą otwierać panel jako Telegram Mini App za pomocą /dashboard. Wymagania:
  • gateway.tailscale.mode: "serve" lub "funnel", aby Telegram otrzymał adres URL HTTPS aplikacji Mini App.
  • Nadawca w Telegram musi być właścicielem bota: numerycznym identyfikatorem użytkownika Telegram w commands.ownerAllowFrom lub efektywną wartością channels.telegram.allowFrom wybranego konta.
  • Należy uruchomić /dashboard w wiadomości prywatnej z botem. Wywołania w grupach jedynie informują o konieczności otwarcia polecenia w wiadomości prywatnej i nie zawierają przycisku.
  • Instalacje Docker: tryby Serve/Funnel wymagają powiązania Gateway z interfejsem loopback obok tailscaled, czego nie można osiągnąć za pomocą sieci mostkowej z opublikowanymi portami. Kontener Gateway należy uruchomić z network_mode: host oraz zamontować w nim gniazdo hosta tailscaled (/var/run/tailscale) i CLI tailscale.
Mini App wykonuje jednorazowe przekazanie właściciela i przekierowuje do Control UI z krótkotrwałym tokenem uruchomienia początkowego. Nie ujawnia współdzielonego tokenu Gateway w adresie URL. Elementy poza zakresem wersji v1:
  • Ramka iframe Telegram Web nie jest obsługiwana.
  • Tailscale Serve/Funnel jest jedyną obsługiwaną ścieżką publikowanego adresu URL.

Jeśli pojawi się „unauthorized” / 1008

  • Należy potwierdzić, że Gateway jest osiągalny: lokalnie openclaw status; zdalnie należy utworzyć tunel SSH ssh -N -L 18789:127.0.0.1:18789 user@gateway-host, a następnie otworzyć http://127.0.0.1:18789/.
  • W przypadku AUTH_TOKEN_MISMATCH klienci mogą wykonać jedną zaufaną ponowną próbę z buforowanym tokenem urządzenia, gdy Gateway zwróci wskazówki dotyczące ponowienia; ta próba wykorzystuje buforowane zatwierdzone zakresy tokenu (wywołujący, którzy jawnie określają deviceToken/scopes, zachowują żądany zestaw zakresów). Jeśli uwierzytelnianie nadal nie powiedzie się po tej próbie, należy ręcznie usunąć rozbieżność tokenów.
  • W przypadku AUTH_SCOPE_MISMATCH token urządzenia został rozpoznany, ale nie obejmuje żądanych zakresów; zamiast zmieniać współdzielony token Gateway, należy ponownie sparować urządzenie lub zatwierdzić nowy zestaw zakresów.
  • Poza tą ścieżką ponawiania kolejność pierwszeństwa uwierzytelniania połączenia jest następująca: jawny współdzielony token lub hasło, następnie jawny deviceToken, potem zapisany token urządzenia, a na końcu token uruchomienia początkowego.
  • W asynchronicznej ścieżce Tailscale Serve nieudane próby dla tego samego {scope, ip} są serializowane, zanim ogranicznik nieudanych prób uwierzytelniania je zarejestruje, dlatego druga równoczesna błędna próba może już wyświetlić retry later.
  • Instrukcje naprawy rozbieżności tokenów zawiera Lista kontrolna odzyskiwania po rozbieżności tokenów.
  • Należy pobrać lub podać współdzielony sekret z hosta Gateway:
    • Token: openclaw config get gateway.auth.token
    • Hasło: rozpoznaj skonfigurowany gateway.auth.password lub OPENCLAW_GATEWAY_PASSWORD
    • Token zarządzany za pomocą SecretRef: rozpoznaj zewnętrznego dostawcę sekretu lub wyeksportuj OPENCLAW_GATEWAY_TOKEN w tej powłoce i ponownie uruchom openclaw dashboard
    • Brak skonfigurowanego współdzielonego sekretu: openclaw doctor --generate-gateway-token
  • W ustawieniach panelu należy wkleić token lub hasło w polu uwierzytelniania, a następnie nawiązać połączenie.
  • Selektor języka interfejsu znajduje się w Settings -> General -> Language, a nie w sekcji Appearance.

Powiązane materiały