Fjärråtkomst (SSH, tunnlar och tailnets)¶
Det här repo:t stöder ”fjärr över SSH” genom att hålla en enda Gateway (master) igång på en dedikerad värd (desktop/server) och ansluta klienter till den.
- För operatörer (du / macOS-appen): SSH-tunnling är den universella reserven.
- För noder (iOS/Android och framtida enheter): anslut till Gateway WebSocket (LAN/tailnet eller SSH-tunnel vid behov).
Grundidén¶
- Gateway WebSocket binder till loopback på din konfigurerade port (standard 18789).
- För fjärrbruk vidarebefordrar du den loopback-porten över SSH (eller använder ett tailnet/VPN och tunnlar mindre).
Vanliga VPN-/tailnet-upplägg (där agenten bor)¶
Tänk på Gateway värd som “där agenten bor”. Det äger sessioner, auth profiler, kanaler och stat. Din bärbara dator/skrivbord (och noder) ansluter till den värden.
1. Alltid-på Gateway i ditt tailnet (VPS eller hemserver)¶
Kör Gateway på en ihållande värd och nå den via Tailscale eller SSH.
- Bästa UX: behåll
gateway.bind: "loopback"och använd Tailscale Serve för Control UI. - Reserv: behåll loopback + SSH-tunnel från valfri maskin som behöver åtkomst.
- Exempel: exe.dev (enkel VM) eller Hetzner (produktions-VPS).
Detta är idealiskt när din laptop ofta går i vila men du vill att agenten alltid ska vara igång.
2. Hemdator kör Gateway, laptop är fjärrkontroll¶
Den bärbara datorn kör inte agenten. Den ansluter på distans:
- Använd macOS-appens läge Remote over SSH (Inställningar → Allmänt → ”OpenClaw runs”).
- Appen öppnar och hanterar tunneln, så WebChat + hälsokontroller ”bara fungerar”.
Körbok: fjärråtkomst för macOS.
3. Laptop kör Gateway, fjärråtkomst från andra maskiner¶
Behåll Gateway lokalt men exponera den säkert:
- SSH-tunnel till laptopen från andra maskiner, eller
- Använd Tailscale Serve för Control UI och håll Gateway loopback-only.
Guide: Tailscale och Web overview.
Kommandoflöde (vad körs var)¶
En gateway-tjänst äger stat + kanaler. Noder är kringutrustning.
Flödesexempel (Telegram → nod):
- Ett Telegram-meddelande anländer till Gateway.
- Gateway kör agenten och avgör om ett nodverktyg ska anropas.
- Gateway anropar noden över Gateway WebSocket (
node.*RPC). - Noden returnerar resultatet; Gateway svarar tillbaka till Telegram.
Noteringar:
- Noder kör inte gateway-tjänsten. Endast en gateway ska köras per värd om du inte avsiktligt kör isolerade profiler (se Multiple gateways).
- macOS-appens ”node mode” är bara en nodklient över Gateway WebSocket.
SSH-tunnel (CLI + verktyg)¶
Skapa en lokal tunnel till den fjärranslutna Gateway WS:
ssh -N -L 18789:127.0.0.1:18789 user@host
När tunneln är uppe:
openclaw healthochopenclaw status --deepnår nu den fjärranslutna gatewayn viaws://127.0.0.1:18789.openclaw gateway {status,health,send,agent,call}kan också rikta in sig på den vidarebefordrade URL:en via--urlvid behov.
Obs: ersätt 18789 med din konfigurerade gateway.port (eller --port/OPENCLAW_GATEWAY_PORT).
Notera: När du skickar --url, faller CLI inte tillbaka till config eller miljö referenser.
Inkludera --token eller--lösenord explicit. Saknar explicita referenser är ett fel.
CLI-fjärrstandarder¶
Du kan spara ett fjärrmål så att CLI-kommandon använder det som standard:
{
gateway: {
mode: "remote",
remote: {
url: "ws://127.0.0.1:18789",
token: "your-token",
},
},
}
När gatewayn är loopback-only, behåll URL:en på ws://127.0.0.1:18789 och öppna SSH-tunneln först.
Chatt-UI över SSH¶
WebChat använder inte längre en separat HTTP-port. SwiftUI chat UI ansluter direkt till Gateway WebSocket.
- Vidarebefordra
18789över SSH (se ovan), och anslut sedan klienter tillws://127.0.0.1:18789. - På macOS, föredra appens läge ”Remote over SSH”, som hanterar tunneln automatiskt.
macOS-app ”Remote over SSH”¶
macOS-menyradsappen kan driva samma uppsättning från början till slut (fjärrstatuskontroller, WebChat och vidarebefordran av Voice Wake).
Körbok: fjärråtkomst för macOS.
Säkerhetsregler (fjärr/VPN)¶
Kort version: håll Gateway loopback-only om du inte är säker på att du behöver en bindning.
- Loopback + SSH/Tailscale Serve är den säkraste standarden (ingen offentlig exponering).
- Icke-loopback-bindningar (
lan/tailnet/custom, ellerautonär loopback inte är tillgängligt) måste använda autentiseringstokens/lösenord. gateway.remote.tokenär endast för fjärr-CLI-anrop — det aktiverar inte lokal autentisering.gateway.remote.tlsFingerprintfäster det fjärranslutna TLS-certifikatet närwss://används.- Tailscale Serve kan autentisera via identitetshuvuden när
gateway.auth.allowTailscale: true. Sätt den tillfalseom du vill ha tokens/lösenord istället. - Behandla webbläsarkontroll som operatörsåtkomst: endast tailnet + avsiktlig nodparning.
Fördjupning: Security.