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 ببینید.
نکته امنیتی: رابط کاربری کنترل یک سطح مدیریتی است (چت، پیکربندی، تأییدهای exec). آن را عمومی در دسترس قرار ندهید. رابط کاربری توکنهای URL داشبورد را برای نشست تب فعلی مرورگر و URL انتخابشده Gateway در sessionStorage نگه میدارد و پس از بارگذاری آنها را از URL حذف میکند. localhost، Tailscale Serve یا تونل SSH را ترجیح دهید.
مسیر سریع (توصیهشده)
- پس از onboarding، CLI داشبورد را خودکار باز میکند و یک لینک پاک (بدون توکن) چاپ میکند.
- باز کردن دوباره در هر زمان:
openclaw dashboard(لینک را کپی میکند، اگر ممکن باشد مرورگر را باز میکند، و اگر headless باشد راهنمای SSH نشان میدهد). - اگر تحویل از طریق clipboard و مرورگر شکست بخورد،
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، تاریخچه clipboard یا آرگومانهای راهاندازی مرورگر جلوگیری میکند. - اگر
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 غیر local loopback و آگاه از هویت میتواندgateway.auth.mode: "trusted-proxy"را برآورده کند. در این حالتها داشبورد برای WebSocket به shared secret جایگذاریشده نیاز ندارد. - غیر از localhost: از Tailscale Serve، یک bind غیر local loopback با shared-secret، یک reverse proxy غیر local 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 مورد اعتماد با توکن device ذخیرهشده انجام دهند. آن retry با توکن ذخیرهشده، scopeهای تأییدشده ذخیرهشده توکن را دوباره استفاده میکند؛ فراخوانهای دارایdeviceTokenصریح /scopesصریح مجموعه scope درخواستی خود را نگه میدارند. اگر احراز هویت پس از آن retry همچنان شکست خورد، drift توکن را دستی برطرف کنید. - خارج از آن مسیر retry، تقدم احراز هویت اتصال ابتدا shared token/password صریح، سپس
deviceTokenصریح، سپس توکن device ذخیرهشده، سپس توکن bootstrap است. - در مسیر ناهمگام رابط کاربری کنترل Tailscale Serve، تلاشهای ناموفق برای همان
{scope, ip}پیش از ثبت آنها توسط محدودکننده failed-auth بهصورت ترتیبی انجام میشوند، بنابراین دومین retry بد همزمان میتواند از قبلretry laterرا نشان دهد. - برای مراحل ترمیم drift توکن، چکلیست بازیابی 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
- توکن:
- در تنظیمات داشبورد، توکن یا گذرواژه را در فیلد احراز هویت جایگذاری کنید، سپس وصل شوید.
- انتخابگر زبان رابط کاربری در نمای کلی -> دسترسی Gateway -> زبان قرار دارد. این بخش جزئی از کارت دسترسی است، نه بخش ظاهر.