Gateway
Penemuan dan transportasi
OpenClaw memiliki dua masalah penemuan yang saling terkait tetapi berbeda:
- Kendali jarak jauh operator: aplikasi bilah menu macOS yang mengendalikan Gateway yang berjalan di tempat lain.
- Pemasangan Node: iOS/Android (dan Node mendatang) menemukan Gateway dan melakukan pemasangan secara aman.
Semua penemuan/pengiklanan jaringan berada di Gateway Node
(openclaw gateway); klien (aplikasi Mac, iOS) hanya bertindak sebagai konsumen.
Istilah
- Gateway: satu proses berumur panjang yang memiliki status (sesi, pemasangan, registri Node) dan menjalankan kanal. Sebagian besar konfigurasi menggunakan satu per host; konfigurasi dengan beberapa Gateway yang terisolasi juga dimungkinkan.
- WS Gateway (bidang kendali): titik akhir WebSocket pada
127.0.0.1:18789secara default; ikat ke LAN/tailnet melaluigateway.bind. - Transportasi WS langsung: titik akhir WS Gateway yang menghadap LAN/tailnet (tanpa SSH).
- Transportasi SSH (cadangan): kendali jarak jauh dengan meneruskan
127.0.0.1:18789melalui SSH. - Jembatan TCP lama (dihapus): transportasi Node lama (lihat Protokol jembatan); tidak lagi diiklankan untuk penemuan dan tidak lagi menjadi bagian dari build saat ini.
Detail protokol: Protokol Gateway, Protokol jembatan (lama).
Mengapa koneksi langsung dan SSH tersedia
- WS langsung memberikan pengalaman pengguna terbaik di jaringan yang sama dan dalam satu tailnet: penemuan otomatis LAN melalui Bonjour, token pemasangan dan ACL yang dimiliki oleh Gateway, serta tidak memerlukan akses shell.
- SSH adalah cadangan universal: berfungsi di mana pun Anda memiliki akses SSH, bahkan di antara jaringan yang tidak berkaitan, tetap berfungsi saat terjadi masalah multicast/mDNS, dan tidak memerlukan port masuk baru selain SSH.
Masukan penemuan
1) Bonjour / DNS-SD
Bonjour multicast bersifat upaya terbaik dan tidak melintasi jaringan. OpenClaw juga
mendukung penelusuran suar Gateway yang sama melalui domain DNS-SD area luas yang
dikonfigurasi, sehingga penemuan dapat mencakup local. di LAN yang sama dan domain
DNS-SD unicast yang dikonfigurasi untuk penemuan lintas jaringan.
Gateway mengiklankan titik akhir WS-nya melalui Bonjour saat Plugin bawaan
bonjour diaktifkan; klien menelusuri dan menampilkan daftar "pilih Gateway",
lalu menyimpan titik akhir yang dipilih.
Pemecahan masalah dan detail suar: Bonjour.
Detail suar layanan
-
Jenis layanan:
_openclaw-gw._tcp(suar transportasi Gateway). -
Kunci TXT (bukan rahasia):
Kunci Catatan role=gatewaySelalu ada. transport=gatewaySelalu ada. displayName=<name>Nama tampilan yang dikonfigurasi operator. lanHost=<hostname>.localHanya pengiklan mDNS LAN; tidak ditulis oleh DNS-SD area luas. gatewayPort=18789Port WS Gateway + HTTP. gatewayTls=1Hanya saat TLS diaktifkan. gatewayTlsSha256=<sha256>Hanya saat TLS diaktifkan dan sidik jari tersedia. tailnetDns=<magicdns>Petunjuk opsional; terdeteksi otomatis saat Tailscale tersedia. sshPort=<port>Hanya ada saat discovery.mdns.mode="full"; dihilangkan (SSH secara default menggunakan22) dalam mode default"minimal", baik pada pengiklan LAN maupun DNS-SD area luas.cliPath=<path>Menggunakan batasan discovery.mdns.mode="full"yang sama sepertisshPort; petunjuk instalasi jarak jauh untuk jalur CLI.Kunci TXT
canvasPortditentukan dalam kontrak penemuan Plugin untuk port host kanvas mendatang, tetapi saat ini tidak ada jalur kode yang menetapkan nilainya, sehingga saat ini kunci tersebut tidak pernah dipancarkan.
Catatan keamanan:
- Catatan TXT Bonjour/mDNS tidak diautentikasi. Klien harus memperlakukan nilai TXT hanya sebagai petunjuk pengalaman pengguna.
- Perutean (host/port) sebaiknya mengutamakan titik akhir layanan yang diresolusi
(SRV + A/AAAA) daripada
lanHost,tailnetDns, ataugatewayPortyang disediakan TXT. - Penyematan TLS tidak boleh membiarkan
gatewayTlsSha256yang diiklankan menggantikan sematan yang telah disimpan sebelumnya. - Node iOS/Android harus mewajibkan konfirmasi eksplisit "percayai sidik jari ini" sebelum menyimpan sematan untuk pertama kalinya (verifikasi di luar kanal) setiap kali rute yang dipilih aman/berbasis TLS.
Mengaktifkan, menonaktifkan, dan mengganti:
openclaw plugins enable bonjourmengaktifkan pengiklanan multicast LAN.discovery.mdns.modedalamopenclaw.jsonmengendalikan siaran mDNS:"minimal"(default),"full"(menambahkancliPath/sshPortke suar LAN dan zona DNS-SD area luas mana pun), atau"off"(menonaktifkan mDNS).OPENCLAW_DISABLE_BONJOUR=1menonaktifkan pengiklanan secara paksa;discovery.mdns.mode="off"menonaktifkannya secara terpisah.OPENCLAW_DISABLE_BONJOUR=0adalah persetujuan eksplisit yang menggantikan penonaktifan otomatis Plugin di dalam kontainer yang terdeteksi (Docker, containerd, Kubernetes, LXC); nilai ini tidak menggantikandiscovery.mdns.mode="off". Plugin bawaanbonjourdimulai otomatis pada host macOS (enabledByDefaultOnPlatforms: ["darwin"]) dan dinonaktifkan otomatis di dalam kontainer yang terdeteksi; penerapan Linux, Windows, dan penerapan terkontainerisasi lainnya memerlukanplugins enable bonjoursecara eksplisit.gateway.binddalam~/.openclaw/openclaw.jsonmengendalikan mode pengikatan Gateway.OPENCLAW_SSH_PORTmengganti port SSH yang diiklankan (hanya berlaku saatdiscovery.mdns.mode="full").OPENCLAW_TAILNET_DNSmenerbitkan petunjuktailnetDns(MagicDNS).OPENCLAW_CLI_PATHmengganti jalur CLI yang diiklankan.
2) Tailnet (lintas jaringan)
Untuk Gateway di jaringan fisik yang berbeda, Bonjour tidak akan membantu. Target langsung yang disarankan adalah nama Tailscale MagicDNS (diutamakan) atau IP tailnet yang stabil.
Jika Gateway mendeteksi bahwa ia berjalan di bawah Tailscale, Gateway menerbitkan
tailnetDns sebagai petunjuk opsional bagi klien (termasuk suar area luas).
Aplikasi macOS mengutamakan nama MagicDNS daripada IP Tailscale mentah untuk
penemuan Gateway, yang tetap andal ketika IP tailnet berubah (Node dimulai ulang,
penetapan ulang CGNAT) karena MagicDNS secara otomatis meresolusi ke IP saat ini.
Untuk pemasangan Node seluler, petunjuk penemuan tidak pernah melonggarkan keamanan transportasi pada rute tailnet/publik:
- iOS/Android tetap memerlukan jalur koneksi pertama kali ke tailnet/publik yang aman
(
wss://atau Tailscale Serve/Funnel). - IP tailnet mentah yang ditemukan adalah petunjuk perutean, bukan izin untuk menggunakan
ws://jarak jauh tanpa enkripsi. - Koneksi langsung
ws://pada LAN privat tetap didukung. - Untuk jalur Tailscale paling sederhana pada Node seluler, gunakan Tailscale Serve agar penemuan dan penyiapan sama-sama mengarah ke titik akhir MagicDNS aman yang sama.
3) Target manual / SSH
Saat tidak ada rute langsung (atau koneksi langsung dinonaktifkan), klien selalu dapat terhubung melalui SSH dengan meneruskan port Gateway local loopback. Lihat Akses jarak jauh.
Pemilihan transportasi (kebijakan klien)
- Jika titik akhir langsung yang telah dipasangkan dikonfigurasi dan dapat dijangkau, gunakan titik akhir tersebut.
- Jika tidak, bila penemuan menemukan Gateway pada
local.atau domain area luas yang dikonfigurasi, tawarkan pilihan sekali ketuk "Gunakan Gateway ini" dan simpan sebagai titik akhir langsung. - Jika tidak, bila DNS/IP tailnet dikonfigurasi, coba koneksi langsung. Untuk Node seluler pada
rute tailnet/publik, koneksi langsung berarti titik akhir yang aman, bukan
ws://jarak jauh tanpa enkripsi. - Jika tidak, gunakan SSH sebagai cadangan.
Pemasangan dan autentikasi (transportasi langsung)
Gateway adalah sumber kebenaran untuk penerimaan Node/klien:
- Permintaan pemasangan dibuat/disetujui/ditolak di Gateway (lihat Pemasangan Gateway).
- Gateway memberlakukan autentikasi (token/pasangan kunci), cakupan/ACL (Gateway bukan proksi mentah ke setiap metode), dan batas laju.
Tanggung jawab berdasarkan komponen
- Gateway: mengiklankan suar penemuan, memiliki keputusan pemasangan, dan menghosting titik akhir WS.
- Aplikasi macOS: membantu Anda memilih Gateway, menampilkan permintaan pemasangan, dan menggunakan SSH hanya sebagai cadangan.
- Node iOS/Android: menelusuri Bonjour untuk kemudahan, lalu terhubung ke WS Gateway yang dipasangkan.