Tryby
- Lokalnie (ten Mac): wszystko działa na laptopie; SSH nie jest używane.
- Zdalnie przez SSH (domyślnie): polecenia OpenClaw są uruchamiane na zdalnym hoście. Aplikacja otwiera połączenie SSH z opcją
-o BatchMode, wybraną tożsamością/kluczem i lokalnym przekierowaniem portu. - Bezpośrednio zdalnie (ws/wss): bez tunelu SSH; aplikacja łączy się bezpośrednio z adresem URL Gatewaya (LAN, Tailscale, Tailscale Serve lub publiczne odwrotne proxy HTTPS).
Transporty zdalne
- Tunel SSH (domyślnie): używa
ssh -N -L ..., aby przekierować port Gatewaya do localhosta. Gateway widzi adres IP Node’a jako127.0.0.1, ponieważ tunel korzysta z local loopback. - Bezpośredni (ws/wss): łączy się wprost z adresem URL Gatewaya. Gateway widzi rzeczywisty adres IP klienta.
ControlMaster lub ForkAfterAuthentication.
Weryfikacja klucza hosta SSH jest domyślnie rygorystyczna, ponieważ dane uwierzytelniające Gatewaya są przesyłane przez ten tunel. Aby użyć własnego sposobu ustalania zaufania zarządzanego aliasu SSH, ustaw --ssh-host-key-policy openssh za pomocą openclaw-mac configure-remote albo ustaw bezpośrednio gateway.remote.sshHostKeyPolicy na "openssh". Przed włączeniem tej opcji sprawdź alias oraz każdą pasującą konfigurację Host * lub konfigurację systemową. Zmiana celu SSH (w aplikacji lub za pomocą configure-remote) przywraca zasadę strict, chyba że ponownie jawnie włączysz tę opcję dla nowego celu.
W trybie tunelu SSH wykryte nazwy hostów LAN/Tailnet są zapisywane jako gateway.remote.sshTarget. Aplikacja pozostawia gateway.remote.url ustawiony na lokalny punkt końcowy tunelu (na przykład ws://127.0.0.1:18789), dzięki czemu CLI, Web Chat i lokalna usługa hosta Node’a używają tego samego transportu local loopback. Gdy wykrywanie zwraca zarówno nieprzetworzone adresy IP Tailnet, jak i stabilne nazwy hostów, aplikacja preferuje nazwy Tailscale MagicDNS lub LAN, aby połączenia lepiej znosiły zmiany adresów. Jeśli lokalny port tunelu różni się od portu zdalnego Gatewaya, ustaw gateway.remote.remotePort na port używany na zdalnym hoście.
Za automatyzację przeglądarki w trybie zdalnym odpowiada host Node’a CLI, a nie natywny Node aplikacji macOS. Gdy jest to możliwe, aplikacja uruchamia zainstalowaną usługę hosta Node’a; aby włączyć sterowanie przeglądarką z tego Maca, zainstaluj/uruchom ją za pomocą openclaw node install ... i openclaw node start (albo uruchom openclaw node run ... na pierwszym planie), a następnie wybierz jako cel Node obsługujący przeglądarkę.
Wymagania wstępne na zdalnym hoście
- Zainstaluj Node + pnpm oraz zbuduj/zainstaluj CLI OpenClaw (
pnpm install && pnpm build && pnpm link --global). - Upewnij się, że
openclawznajduje się w PATH dla powłok nieinteraktywnych (w razie potrzeby utwórz dowiązanie symboliczne w/usr/local/binlub/opt/homebrew/bin). - Dla transportu SSH: skonfiguruj uwierzytelnianie SSH oparte na kluczach. Adresy IP Tailscale są zalecane w celu zapewnienia stabilnej dostępności spoza sieci LAN.
Konfiguracja aplikacji macOS
Aby wstępnie skonfigurować aplikację bez przechodzenia przez ekran powitalny, za pośrednictwem SSH:~/.openclaw/openclaw.json, oznaczają wdrażanie jako ukończone i pozwalają aplikacji zarządzać wybranym transportem przy następnym uruchomieniu. Domyślna wartość opcji --local-port/--remote-port to 18789. Inne flagi: --password, --identity <path>, --ssh-host-key-policy <strict|openssh>, --project-root <path>, --cli-path <path>, --json. Uruchom openclaw-mac configure-remote --help, aby wyświetlić pełną dokumentację.
Aby zamiast tego skonfigurować aplikację w interfejsie użytkownika:
- Otwórz Settings -> General.
- W sekcji OpenClaw runs wybierz Remote i ustaw:
- Transport: SSH tunnel lub Direct (ws/wss).
- SSH target:
user@host(opcjonalnie:port). Jeśli Gateway znajduje się w tej samej sieci LAN i rozgłasza się przez Bonjour, wybierz go z listy wykrytych urządzeń, aby automatycznie wypełnić to pole. - Gateway URL (tylko tryb bezpośredni):
wss://gateway.example.ts.net(lubws://...dla połączenia lokalnego/LAN). - Identity file (zaawansowane): ścieżka do klucza.
- Project root (zaawansowane): ścieżka zdalnego repozytorium używana do wykonywania poleceń.
- CLI path (zaawansowane): opcjonalna ścieżka do uruchamialnego punktu wejścia/pliku binarnego
openclaw(wypełniana automatycznie, gdy jest rozgłaszana).
- Naciśnij Test remote. Powodzenie oznacza, że zdalne polecenie
openclaw status --jsonzostało wykonane prawidłowo. Niepowodzenia zwykle oznaczają problemy z PATH/CLI; kod wyjścia 127 oznacza, że CLI nie zostało znalezione na zdalnym hoście. - Kontrole kondycji i Web Chat działają teraz automatycznie przez wybrany transport.
Web Chat
- Tunel SSH: łączy się z Gatewayem przez przekierowany port sterowania WebSocket (domyślnie 18789).
- Bezpośredni (ws/wss): łączy się wprost ze skonfigurowanym adresem URL Gatewaya.
- Nie istnieje osobny serwer HTTP Web Chat.
Uprawnienia
- Zdalny host wymaga tych samych zatwierdzeń TCC co host lokalny (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Uruchom raz wdrażanie na tym komputerze, aby je nadać.
- Node’y ogłaszają stan swoich uprawnień za pośrednictwem
node.list/node.describe, dzięki czemu agenci wiedzą, co jest dostępne.
Uwagi dotyczące bezpieczeństwa
- Preferuj powiązania local loopback na zdalnym hoście i łącz się przez SSH, Tailscale Serve albo bezpośredni, zaufany adres URL Tailnet/LAN.
- Tunelowanie SSH domyślnie wymaga wcześniej zaufanego klucza hosta. Najpierw zaufaj kluczowi hosta (dodaj go do skonfigurowanego pliku znanych hostów) albo jawnie ustaw
gateway.remote.sshHostKeyPolicy: "openssh"dla zarządzanego aliasu, którego zasady zaufania OpenSSH akceptujesz. - Jeśli powiążesz Gateway z interfejsem innym niż local loopback, wymagaj prawidłowego uwierzytelniania Gatewaya: tokenu, hasła lub odwrotnego proxy rozpoznającego tożsamość z ustawieniem
gateway.auth.mode: "trusted-proxy". - Zobacz Bezpieczeństwo i Tailscale.
Proces logowania do WhatsApp (zdalnie)
- Uruchom
openclaw channels login --channel whatsapp --verbosena zdalnym hoście. Zeskanuj kod QR za pomocą WhatsApp na telefonie. - Jeśli uwierzytelnienie wygaśnie, ponownie wykonaj logowanie na tym hoście. Kontrola kondycji zgłasza problemy z połączeniem.
Rozwiązywanie problemów
Dźwięki powiadomień
Wybieraj dźwięki osobno dla każdego powiadomienia ze skryptów korzystających zopenclaw nodes notify, na przykład: