---
read_when:
    - Mengubah auth dashboard atau mode eksposur
summary: Akses dan auth dashboard Gateway (Control UI)
title: Dashboard
x-i18n:
    generated_at: "2026-04-25T13:59:22Z"
    model: gpt-5.4
    provider: openai
    source_hash: 5e0e7c8cebe715f96e7f0e967e9fd86c4c6c54f7cc08a4291b02515fc0933a1a
    source_path: web/dashboard.md
    workflow: 15
---

Dashboard Gateway adalah Control UI browser yang disajikan di `/` secara default
(timpa dengan `gateway.controlUi.basePath`).

Buka cepat (Gateway lokal):

- [http://127.0.0.1:18789/](http://127.0.0.1:18789/) (atau [http://localhost:18789/](http://localhost:18789/))
- Dengan `gateway.tls.enabled: true`, gunakan `https://127.0.0.1:18789/` dan
  `wss://127.0.0.1:18789` untuk endpoint WebSocket.

Referensi utama:

- [Control UI](/id/web/control-ui) untuk penggunaan dan kemampuan UI.
- [Tailscale](/id/gateway/tailscale) untuk otomatisasi Serve/Funnel.
- [Permukaan web](/id/web) untuk mode bind dan catatan keamanan.

Authentication diberlakukan pada handshake WebSocket melalui jalur auth gateway
yang dikonfigurasi:

- `connect.params.auth.token`
- `connect.params.auth.password`
- Header identitas Tailscale Serve saat `gateway.auth.allowTailscale: true`
- Header identitas trusted-proxy saat `gateway.auth.mode: "trusted-proxy"`

Lihat `gateway.auth` di [Konfigurasi Gateway](/id/gateway/configuration).

Catatan keamanan: Control UI adalah **permukaan admin** (chat, config, persetujuan exec).
Jangan mengeksposnya secara publik. UI menyimpan token URL dashboard di sessionStorage
untuk sesi tab browser saat ini dan URL gateway yang dipilih, lalu menghapusnya dari URL setelah dimuat.
Utamakan localhost, Tailscale Serve, atau tunnel SSH.

## Jalur cepat (direkomendasikan)

- Setelah onboarding, CLI otomatis membuka dashboard dan mencetak tautan bersih (tanpa token).
- Buka kembali kapan saja: `openclaw dashboard` (menyalin tautan, membuka browser jika memungkinkan, menampilkan petunjuk SSH jika headless).
- Jika UI meminta auth shared-secret, tempel token atau
  password yang dikonfigurasi ke pengaturan Control UI.

## Dasar auth (lokal vs remote)

- **Localhost**: buka `http://127.0.0.1:18789/`.
- **Gateway TLS**: saat `gateway.tls.enabled: true`, tautan dashboard/status menggunakan
  `https://` dan tautan WebSocket Control UI menggunakan `wss://`.
- **Sumber token shared-secret**: `gateway.auth.token` (atau
  `OPENCLAW_GATEWAY_TOKEN`); `openclaw dashboard` dapat meneruskannya melalui URL fragment
  untuk bootstrap satu kali, dan Control UI menyimpannya di sessionStorage untuk
  sesi tab browser saat ini dan URL gateway yang dipilih, bukan localStorage.
- Jika `gateway.auth.token` dikelola oleh SecretRef, `openclaw dashboard`
  mencetak/menyalin/membuka URL tanpa token secara desain. Ini menghindari
  mengekspos token yang dikelola secara eksternal di log shell, riwayat clipboard, atau argumen peluncuran browser.
- Jika `gateway.auth.token` dikonfigurasi sebagai SecretRef dan belum di-resolve di
  shell Anda saat ini, `openclaw dashboard` tetap mencetak URL tanpa token plus
  panduan penyiapan auth yang dapat ditindaklanjuti.
- **Password shared-secret**: gunakan `gateway.auth.password` (atau
  `OPENCLAW_GATEWAY_PASSWORD`) yang dikonfigurasi. Dashboard tidak mempertahankan password antar
  reload.
- **Mode pembawa identitas**: Tailscale Serve dapat memenuhi auth Control UI/WebSocket
  melalui header identitas saat `gateway.auth.allowTailscale: true`, dan
  reverse proxy sadar identitas non-loopback dapat memenuhi
  `gateway.auth.mode: "trusted-proxy"`. Dalam mode tersebut dashboard tidak
  memerlukan shared secret yang ditempel untuk WebSocket.
- **Bukan localhost**: gunakan Tailscale Serve, bind shared-secret non-loopback, reverse proxy sadar identitas non-loopback dengan
  `gateway.auth.mode: "trusted-proxy"`, atau tunnel SSH. API HTTP tetap menggunakan
  auth shared-secret kecuali Anda dengan sengaja menjalankan ingress privat
  `gateway.auth.mode: "none"` atau auth HTTP trusted-proxy. Lihat
  [Permukaan web](/id/web).

<a id="if-you-see-unauthorized-1008"></a>

## Jika Anda melihat "unauthorized" / 1008

- Pastikan gateway dapat dijangkau (lokal: `openclaw status`; remote: tunnel SSH `ssh -N -L 18789:127.0.0.1:18789 user@host` lalu buka `http://127.0.0.1:18789/`).
- Untuk `AUTH_TOKEN_MISMATCH`, klien dapat melakukan satu retry tepercaya dengan token perangkat yang di-cache saat gateway mengembalikan petunjuk retry. Retry token ter-cache itu menggunakan kembali cakupan yang telah disetujui dari token; pemanggil `deviceToken` eksplisit / `scopes` eksplisit mempertahankan set cakupan yang diminta. Jika auth masih gagal setelah retry itu, selesaikan token drift secara manual.
- Di luar jalur retry itu, prioritas auth koneksi adalah shared token/password eksplisit terlebih dahulu, lalu `deviceToken` eksplisit, lalu token perangkat tersimpan, lalu token bootstrap.
- Pada jalur Control UI Tailscale Serve async, upaya yang gagal untuk
  `{scope, ip}` yang sama diserialkan sebelum limiter auth gagal mencatatnya, sehingga retry buruk serentak kedua mungkin sudah menampilkan `retry later`.
- Untuk langkah perbaikan token drift, ikuti [Checklist pemulihan token drift](/id/cli/devices#token-drift-recovery-checklist).
- Ambil atau sediakan shared secret dari host gateway:
  - Token: `openclaw config get gateway.auth.token`
  - Password: resolve `gateway.auth.password` atau
    `OPENCLAW_GATEWAY_PASSWORD` yang dikonfigurasi
  - Token yang dikelola SecretRef: resolve penyedia secret eksternal atau export
    `OPENCLAW_GATEWAY_TOKEN` di shell ini, lalu jalankan ulang `openclaw dashboard`
  - Tidak ada shared secret yang dikonfigurasi: `openclaw doctor --generate-gateway-token`
- Di pengaturan dashboard, tempel token atau password ke field auth,
  lalu sambungkan.
- Pemilih bahasa UI ada di **Overview -> Gateway Access -> Language**.
  Ini merupakan bagian dari kartu akses, bukan bagian Appearance.

## Terkait

- [Control UI](/id/web/control-ui)
- [WebChat](/id/web/webchat)
