docs: vendor the documentation site into the monorepo

Fold the standalone 3x-ui-docs project (Next.js 16 + Fumadocs, deployed to
docs.sanaei.dev) into docs/ so the panel and its documentation share a single
source of truth, the way sing-box keeps its docs in-tree. The old repo becomes
redundant and can be retired.

- Import the full site under docs/ (app, components, content, lib, public,
  scripts, config). The self-contained pnpm project sits alongside the existing
  engineering notes with no filename collisions.
- Re-point "Edit on GitHub" links from MHSanaei/3x-ui-docs to this repo's
  docs/content/docs path (docs/lib/shared.ts, docs/app/.../page.tsx).
- Add docs-ci.yml and docs-deploy.yml under .github/workflows/, scoped to
  docs/** and run with working-directory: docs, since GitHub only runs
  workflows from the repo-root .github/. deploy-static.yml's GitHub Pages
  publish (CNAME docs.sanaei.dev) carries over unchanged.

Follow-up (outside this commit): attach the docs.sanaei.dev custom domain to
this repository's Pages (or set the Vercel project's root directory to docs),
confirm the site is live from the monorepo, then delete MHSanaei/3x-ui-docs.
This commit is contained in:
MHSanaei
2026-07-07 23:07:14 +02:00
parent 2c49dbf54e
commit 9b91f0f42e
283 changed files with 44179 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
---
title: تنظیمات پنل
description: تمام تنظیمات پنل 3x-ui — وب‌سرور، TLS، نمایش، امنیت و اعلان‌ها — همراه با مقادیر پیش‌فرض برگرفته از سورس.
icon: SlidersHorizontal
---
**تنظیمات پنل** نحوه‌ی ارائه و ایمن‌سازی خودِ پنل را کنترل می‌کند (جدا از ورودی‌ها
و کلاینت‌های شما). تنظیمات به‌صورت جفت‌های کلید/مقدار ذخیره می‌شوند؛ مقادیر
پیش‌فرض زیر مستقیماً از سورس پنل گرفته شده‌اند. اطلاعات محرمانه (توکن‌ها، گذرواژه‌ها)
فقط با نشانگرِ «تنظیم‌شده / تنظیم‌نشده» نمایش داده می‌شوند و هرگز به‌صورت کامل به
مرورگر بازگردانده نمی‌شوند.
## وب‌سرور
| Setting | Default | Meaning |
| ------------------- | ----------------------- | ----------------------------------------------------------------------- |
| `webPort` | `2053` | پورت پنل (۱ تا ۶۵۵۳۵). متغیر محیطی `XUI_PORT` در زمان اجرا آن را بازنویسی می‌کند. |
| `webListen` | _(همه‌ی واسط‌ها)_ | پنل را به یک IP مشخص مقید کنید. |
| `webBasePath` | `/` | مسیر URLی که پنل زیر آن ارائه می‌شود (همیشه به شکل `/…/` نرمال‌سازی می‌شود). |
| `webCertFile` / `webKeyFile` | _(هیچ‌کدام)_ | گواهی + کلید TLS. وقتی هر دو تنظیم شوند، پنل با **HTTPS** ارائه می‌شود. |
| `sessionMaxAge` | `360` | طول عمر نشست بر حسب **دقیقه** (پیش‌فرض ۶ ساعت). |
| `trustedProxyCIDRs` | `127.0.0.1/32,::1/128` | IPها/CIDRهایی که هدرهای فورواردشده‌شان (IP واقعی کلاینت) مورد اعتماد است. |
| `panelOutbound` | _(هیچ‌کدام)_ | مسیریابی خروجیِ خود پنل (بررسی به‌روزرسانی‌ها، Telegram، واکشی geo/sub) از طریق یک خروجی Xray با نام مشخص. |
پس از تغییر پورت یا مسیر پایه، آدرس پنل به‌صورت
`http(s)://<server>:<port><web-base-path>` درمی‌آید. می‌توانید مسیر پایه را در
نخستین اجرا با [`XUI_INIT_WEB_BASE_PATH`](/docs/reference/env-vars) از پیش تعیین کنید.
### TLS
ارائه‌ی پنل روی HTTPS از اطلاعات احراز هویت شما در حین انتقال محافظت می‌کند. یا
`webCertFile` + `webKeyFile` را تنظیم کنید — [منوی SSL در `x-ui`](/docs/config/ssl-certificates)
می‌تواند یک گواهی Let's Encrypt برای شما تهیه کند — یا TLS را روی یک
[پروکسی معکوس](/docs/operations/reverse-proxy) خاتمه دهید.
<Callout type="warn">
هرگز پنل را روی اینترنت عمومی با HTTP ساده در دسترس قرار ندهید. از TLS، یک پورت
غیرپیش‌فرض، و یک مسیر پایه‌ی وب تصادفیِ بلند استفاده کنید.
</Callout>
## نمایش
| Setting | Default | Meaning |
| ---------------- | ------------------------------------------------ | ------------------------------------------------------------- |
| `pageSize` | `25` | تعداد ردیف در هر صفحه از فهرست‌ها (`0` صفحه‌بندی را غیرفعال می‌کند). |
| `expireDiff` | `0` | تعداد روز پیش از انقضا برای شروع هشدار. |
| `trafficDiff` | `0` | درصد باقی‌مانده از سهمیه که در آن هشدار آغاز می‌شود. |
| `remarkTemplate` | `{{INBOUND}}-{{EMAIL}}\|📊{{TRAFFIC_LEFT}}\|⏳{{DAYS_LEFT}}D` | الگوی پیش‌فرض یادداشت کلاینت (نگاه کنید به [لینک‌های اشتراک‌گذاری](/docs/config/share-links#remark-template-variables)). |
| `timeLocation` | `Local` | منطقه‌ی زمانی برای آمار و انقضا. |
| `datepicker` | `gregorian` | تقویم برای ورودی‌های تاریخ (میلادی یا جلالی/شمسی). |
## امنیت و احراز هویت
اطلاعات احراز هویت، احراز هویت دومرحله‌ای، محدودکننده‌ی حملات جستجوی فراگیر،
نشست‌ها و LDAP در [نخستین ورود](/docs/guide/first-login) و
[امنیت](/docs/operations/security) پوشش داده شده‌اند. به‌طور خلاصه:
- گذرواژه‌ها به‌صورت هش‌های **bcrypt** ذخیره می‌شوند؛ تغییر آن‌ها همه‌ی نشست‌ها را از سیستم خارج می‌کند.
- **۲FA (TOTP)** می‌تواند در زمان ورود الزامی شود.
- یک سازوکار جایگزین **LDAP** می‌تواند زمانی که بررسی گذرواژه‌ی محلی ناموفق باشد، کاربران را احراز هویت کند.
- دسترسی API از **توکن‌های API** استفاده می‌کند که زیر تنظیمات پنل مدیریت می‌شوند (نگاه کنید به
[مرجع API](/docs/reference/api/api-tokens)).
## اعلان‌ها و اشتراک
این موارد گروه‌های تنظیمات و صفحه‌های مخصوص خود را دارند:
<Cards>
<Card title="ربات Telegram" href="/docs/operations/telegram-bot" description="توکن، شناسه‌های چت، هشدارها و گزارش‌ها." />
<Card title="اشتراک" href="/docs/config/subscription" description="سرور اشتراک، قالب‌ها و مسیرها." />
<Card title="امنیت" href="/docs/operations/security" description="۲FA، محدودیت‌های IP و سخت‌سازی." />
</Cards>
<Callout type="info">
اعلان‌های ایمیل (SMTP) نیز قابل پیکربندی‌اند (میزبان، پورت، رمزنگاری،
گیرندگان) با همان انواع رویدادهای ربات Telegram.
</Callout>