Web interfaces
داشبورد
داشبورد Gateway همان رابط کاربری کنترلِ مرورگری است که بهصورت پیشفرض از / ارائه میشود
(با gateway.controlUi.basePath بازنویسی کنید).
باز کردن سریع (Gateway محلی):
- http://127.0.0.1:18789/ (یا http://localhost:18789/)
- با
gateway.tls.enabled: true، ازhttps://127.0.0.1:18789/وwss://127.0.0.1:18789برای نقطه پایانی WebSocket استفاده کنید.
مراجع کلیدی:
- رابط کاربری کنترل برای کاربرد و قابلیتهای رابط کاربری.
- Tailscale برای خودکارسازی Serve/Funnel.
- سطحهای وب برای حالتهای bind و نکات امنیتی.
احراز هویت در handshake مربوط به WebSocket از طریق مسیر احراز هویت پیکربندیشده gateway اعمال میشود:
connect.params.auth.tokenconnect.params.auth.password- سرآیندهای هویت Tailscale Serve وقتی
gateway.auth.allowTailscale: true - سرآیندهای هویت trusted-proxy وقتی
gateway.auth.mode: "trusted-proxy"
gateway.auth را در پیکربندی Gateway ببینید.
نکته امنیتی: رابط کاربری کنترل یک سطح ادمین است (گفتوگو، پیکربندی، تأییدیههای اجرا). آن را عمومی در دسترس قرار ندهید. رابط کاربری توکنهای URL داشبورد را برای نشست فعلی تب مرورگر و URL انتخابشده gateway در sessionStorage نگه میدارد و پس از بارگذاری آنها را از URL حذف میکند. localhost، Tailscale Serve، یا تونل SSH را ترجیح دهید.
مسیر سریع (توصیهشده)
- پس از onboarding، CLI داشبورد را بهصورت خودکار باز میکند و یک پیوند تمیز (بدون توکن) چاپ میکند.
- باز کردن دوباره در هر زمان:
openclaw dashboard(پیوند را کپی میکند، اگر ممکن باشد مرورگر را باز میکند، و اگر headless باشد راهنمای SSH نشان میدهد). - اگر تحویل از طریق کلیپبورد و مرورگر ناموفق باشد،
openclaw dashboardهمچنان URL تمیز را چاپ میکند و به شما میگوید از توکنOPENCLAW_GATEWAY_TOKENیاgateway.auth.tokenبهعنوان کلید fragment در URL با نامtokenاستفاده کنید؛ مقدار توکنها را در لاگها چاپ نمیکند. - اگر رابط کاربری برای احراز هویت shared-secret درخواست داد، توکن یا گذرواژه پیکربندیشده را در تنظیمات رابط کاربری کنترل وارد کنید.
مبانی احراز هویت (محلی در برابر راه دور)
- Localhost:
http://127.0.0.1:18789/را باز کنید. - TLS Gateway: وقتی
gateway.tls.enabled: true، پیوندهای داشبورد/وضعیت ازhttps://و پیوندهای WebSocket رابط کاربری کنترل ازwss://استفاده میکنند. - منبع توکن shared-secret:
gateway.auth.token(یاOPENCLAW_GATEWAY_TOKEN)؛openclaw dashboardمیتواند آن را از طریق fragment در URL برای bootstrap یکباره ارسال کند، و رابط کاربری کنترل آن را برای نشست فعلی تب مرورگر و URL انتخابشده gateway بهجای localStorage در sessionStorage نگه میدارد. - اگر
gateway.auth.tokenبا SecretRef مدیریت شود،openclaw dashboardعمداً یک URL بدون توکن چاپ/کپی/باز میکند. این کار از افشای توکنهای مدیریتشده خارجی در لاگهای shell، تاریخچه کلیپبورد، یا آرگومانهای راهاندازی مرورگر جلوگیری میکند. - اگر
gateway.auth.tokenبهصورت SecretRef پیکربندی شده و در shell فعلی شما resolve نشده باشد،openclaw dashboardهمچنان یک URL بدون توکن همراه با راهنمای عملی راهاندازی احراز هویت چاپ میکند. - گذرواژه shared-secret: از
gateway.auth.passwordپیکربندیشده (یاOPENCLAW_GATEWAY_PASSWORD) استفاده کنید. داشبورد گذرواژهها را بین reloadها پایدار نگه نمیدارد. - حالتهای دارای هویت: Tailscale Serve میتواند احراز هویت رابط کاربری کنترل/WebSocket را
از طریق سرآیندهای هویت وقتی
gateway.auth.allowTailscale: trueبرآورده کند، و یک reverse proxy آگاه از هویت و غیر loopback میتواندgateway.auth.mode: "trusted-proxy"را برآورده کند. در این حالتها داشبورد برای WebSocket به shared secret واردشده نیاز ندارد. - غیر از localhost: از Tailscale Serve، یک bind غیر loopback با shared-secret، یک
reverse proxy آگاه از هویت و غیر loopback با
gateway.auth.mode: "trusted-proxy"، یا یک تونل SSH استفاده کنید. APIهای HTTP همچنان از احراز هویت shared-secret استفاده میکنند مگر اینکه عمداًgateway.auth.mode: "none"با private-ingress یا احراز هویت HTTP trusted-proxy را اجرا کنید. سطحهای وب را ببینید.
اگر "unauthorized" / 1008 را میبینید
- مطمئن شوید gateway قابل دسترسی است (محلی:
openclaw status؛ راه دور: تونل SSH باssh -N -L 18789:127.0.0.1:18789 user@hostسپسhttp://127.0.0.1:18789/را باز کنید). - برای
AUTH_TOKEN_MISMATCH، کلاینتها ممکن است وقتی gateway راهنمای retry برمیگرداند، یک retry مورد اعتماد با توکن دستگاه cached انجام دهند. این retry با cached-token از scopeهای تأییدشده cached همان توکن دوباره استفاده میکند؛ فراخوانهای دارایdeviceTokenصریح /scopesصریح، مجموعه scope درخواستی خود را نگه میدارند. اگر احراز هویت پس از آن retry همچنان ناموفق بود، token drift را دستی برطرف کنید. - برای
AUTH_SCOPE_MISMATCH، توکن دستگاه شناسایی شده اما scopeهای درخواستی داشبورد را ندارد؛ بهجای چرخاندن توکن shared gateway، دوباره pair کنید یا قرارداد scope درخواستی را تأیید کنید. - خارج از آن مسیر retry، اولویت احراز هویت اتصال ابتدا token/password مشترک صریح، سپس
deviceTokenصریح، سپس توکن دستگاه ذخیرهشده، و سپس توکن bootstrap است. - در مسیر async مربوط به رابط کاربری کنترل Tailscale Serve، تلاشهای ناموفق برای همان
{scope, ip}پیش از ثبتشدن در limiter احراز هویت ناموفق بهصورت serialized انجام میشوند، بنابراین retry بدِ همزمان دوم میتواند از قبلretry laterرا نشان دهد. - برای گامهای ترمیم token drift، چکلیست بازیابی token drift را دنبال کنید.
- shared secret را از میزبان gateway بازیابی یا تأمین کنید:
- توکن:
openclaw config get gateway.auth.token - گذرواژه:
gateway.auth.passwordپیکربندیشده یاOPENCLAW_GATEWAY_PASSWORDرا resolve کنید - توکن مدیریتشده با SecretRef: ارائهدهنده secret خارجی را resolve کنید یا
OPENCLAW_GATEWAY_TOKENرا در این shell export کنید، سپسopenclaw dashboardرا دوباره اجرا کنید - shared secret پیکربندی نشده:
openclaw doctor --generate-gateway-token
- توکن:
- در تنظیمات داشبورد، توکن یا گذرواژه را در فیلد احراز هویت وارد کنید، سپس متصل شوید.
- انتخابگر زبان رابط کاربری در Overview -> Gateway Access -> Language است. این بخشی از کارت دسترسی است، نه بخش Appearance.