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
+126
View File
@@ -0,0 +1,126 @@
---
title: نخستین ورود
description: مشخصات ورود تولیدشدهٔ 3x-ui را بیابید، به پنل دسترسی پیدا کنید، احراز هویت دومرحله‌ای را فعال کنید و پیش از در معرض قرار دادن هر چیزی، پنل را ایمن‌سازی کنید.
icon: KeyRound
---
پس از نصب، نخستین کار شما این است که وارد پنل شوید و **آن را ایمن کنید**، پیش از
آنکه چیز دیگری را در معرض دسترس قرار دهید.
## دسترسی به پنل
پنل در این نشانی ارائه می‌شود:
```text
http://<your-server-ip>:<port>/<web-base-path>
```
پورت پیش‌فرض **2053** و مسیر پایهٔ پیش‌فرض `/` است — اما نصب با اسکریپت، نام
کاربری، رمز عبور، **پورت** و مسیر پایهٔ وب را **به‌صورت تصادفی تولید می‌کند**،
پس مقادیر واقعی خود را بررسی کنید.
### یافتن مشخصات ورود
نصب با اسکریپت پس از پایان، خلاصه‌ای از مشخصات ورود را چاپ می‌کند و آن را در یک
فایل ویژهٔ root نیز می‌نویسد:
```bash title="/etc/x-ui/install-result.env (mode 600)"
XUI_USERNAME=...
XUI_PASSWORD=...
XUI_PANEL_PORT=...
XUI_WEB_BASE_PATH=...
XUI_ACCESS_URL=...
XUI_API_TOKEN=...
XUI_DB_TYPE=sqlite
```
اگر آن‌ها را از دست دادید، از ابزارهای مدیریتی استفاده کنید:
```bash
x-ui # menu → 11 (View Current Settings)
x-ui settings # or the one-shot form
```
برای **Docker**، مشخصات ورود تولیدشده را از لاگ‌های کانتینر بخوانید، یا دستور
`docker exec -it <container> x-ui setting -show` را اجرا کنید.
<Callout type="warn">
اگر پنل شما هنوز از مقادیر پیش‌فرض `admin` / `admin` استفاده می‌کند (پنل در این
حالت هشدار می‌دهد)، بی‌درنگ آن را تغییر دهید — پیش از ساختن هر inbound.
</Callout>
## تغییر مشخصات ورود، پورت و مسیر
یک پورت غیرپیش‌فرض و یک **مسیر پایهٔ وب** طولانی و تصادفی، یافتن پنل را بسیار
دشوارتر می‌کند. آن‌ها را از بخش **Panel Settings** در رابط کاربری، یا از منوی
`x-ui` تغییر دهید:
- **7 — Reset Username & Password** (با امکان غیرفعال‌سازی همزمان 2FA)
- **8 — Reset Web Base Path** (آن را تصادفی می‌کند)
- **10 — Change Port**
تغییر نام کاربری یا رمز عبور **همهٔ نشست‌های موجود را از سیستم خارج می‌کند** و
اگر احراز هویت دومرحله‌ای فعال بود، آن را غیرفعال می‌سازد.
## احراز هویت دومرحله‌ای (2FA)
‏3x-ui از احراز هویت دومرحله‌ای TOTP پشتیبانی می‌کند (سازگار با Google
Authenticator، Aegis و غیره). آن را در بخش **Panel Settings** فعال کنید — پس از
فعال‌سازی، صفحهٔ ورود علاوه بر رمز عبور، یک کد ۶ رقمی نیز درخواست می‌کند و
فعال کردن آن همه را وادار به ورود مجدد می‌کند. می‌توانید آن را از مرحلهٔ **Reset
Username & Password** در منو یا با دستور `x-ui setting -resetTwoFactor` غیرفعال
کنید.
## محافظت داخلی از ورود
- **محدودکنندهٔ حملهٔ جستجوی فراگیر:** پس از **۵** ورود ناموفق از یک IP/نام
کاربری یکسان در بازهٔ ۵ دقیقه، آن ترکیب برای **۱۵ دقیقه** مسدود می‌شود.
- **خطاهای عمومی:** صفحهٔ ورود هم برای مشخصات نادرست و هم برای کدهای 2FA نادرست،
پیام «wrong username or password» را نمایش می‌دهد، پس هیچ چیزی فاش نمی‌کند.
- **نشست‌ها** به مدت `sessionMaxAge` دقیقه (پیش‌فرض **۳۶۰** = ۶ ساعت) معتبرند و
هنگام تغییر مشخصات ورود باطل می‌شوند.
- **LDAP** را می‌توان به‌عنوان روش جایگزین احراز هویت در Panel Settings فعال کرد.
## چک‌لیست ضروری ایمن‌سازی
<Steps>
<Step>
### مشخصات ورود قوی و یکتا تعیین کنید
نام کاربری و رمز عبور تولیدشده (یا `admin/admin`) را با مقادیر قوی جایگزین کنید.
</Step>
<Step>
### از پورت غیرپیش‌فرض و مسیر پایهٔ تصادفی استفاده کنید
پنل را از `2053` جابه‌جا کنید و آن را زیر یک مسیر تصادفی و طولانی ارائه دهید.
</Step>
<Step>
### احراز هویت دومرحله‌ای را فعال کنید
‏2FA را فعال کنید تا یک رمز عبور لو رفته به‌تنهایی نتواند دسترسی بدهد.
</Step>
<Step>
### پنل را پشت TLS قرار دهید
از یک گواهی معتبر (از طریق مدیریت SSL در منوی `x-ui` یا یک reverse proxy)
استفاده کنید تا پنل تنها از طریق HTTPS در دسترس باشد.
</Step>
<Step>
### دسترسی را با فایروال محدود کنید
تنها پورت‌هایی را که واقعاً نیاز دارید باز کنید و محدود کردن دسترسی به پنل بر
اساس IP را در نظر بگیرید.
</Step>
</Steps>
<Callout type="info">
می‌خواهید پنل روی یک دامنهٔ تمیز با HTTPS خودکار باشد؟ به
[Reverse proxy](/docs/operations/reverse-proxy) مراجعه کنید. برای ایمن‌سازی
عمیق‌تر، به [Security](/docs/operations/security) مراجعه کنید.
</Callout>
+73
View File
@@ -0,0 +1,73 @@
---
title: آشنایی با 3x-ui
description: یک پنل تحت وب برای Xray-core — ورودی‌ها، پروتکل‌ها، کلاینت‌ها و اشتراک‌ها را به‌جای ویرایش دستی JSON، از مرورگر خود مدیریت کنید.
icon: Info
---
**3x-ui** یک پنل کنترل تحت وب است که روی
[Xray-core](https://github.com/XTLS/Xray-core)، همان موتور پروکسی که در واقع
ترافیک شما را جابه‌جا می‌کند، قرار می‌گیرد. به‌جای نوشتن و بارگذاری مجدد پیکربندی
JSON ‏Xray به‌صورت دستی، همه‌چیز — ورودی‌ها، پروتکل‌ها، کلاینت‌ها، گواهی‌ها،
اشتراک‌ها — را از یک داشبورد مرورگری مدیریت می‌کنید.
## اجزا چگونه کنار هم کار می‌کنند
<Mermaid
chart={`
flowchart LR
Admin["Admin browser"] -->|HTTPS panel| Panel["3x-ui panel"]
Panel -->|writes config, reloads| Xray["Xray-core"]
Panel --- DB[("SQLite or PostgreSQL")]
Clients["Client apps"] -->|VLESS / VMess / Trojan / ...| Xray
Xray -->|proxied traffic| Internet["Internet"]
`}
/>
- **پنل** لایهٔ مدیریت است: پیکربندی شما را در یک پایگاه‌داده ذخیره می‌کند،
داشبورد را رندر می‌کند، یک REST API ارائه می‌دهد و پیکربندی زندهٔ Xray را
می‌نویسد.
- **Xray-core** لایهٔ داده است: اتصالات کلاینت را روی **ورودی‌های** شما
پایان می‌دهد و ترافیک را به مقصدش هدایت می‌کند.
- **اپلیکیشن‌های کلاینت** (مانند v2rayNG، Clash/Mihomo، Hiddify و دیگران) با
استفاده از یک لینک اشتراک‌گذاری یا اشتراکی که پنل برای هر کلاینت تولید می‌کند
متصل می‌شوند.
## چه چیزی در اختیار شما می‌گذارد
- داشبوردی برای **ورودی‌ها** در تمام پروتکل‌های اصلی — VLESS، VMess،
Trojan، Shadowsocks، WireGuard، Hysteria2، SOCKS، HTTP و Dokodemo-door.
- پشتیبانی درجه‌یک از **REALITY** و **XTLS-Vision** برای ترانسپورت‌های مخفی
و سریع.
- سهمیه‌های ترافیک **به‌ازای هر کلاینت**، تاریخ‌های انقضا، محدودیت‌های IP،
وضعیت آنلاین و لینک‌های اشتراک‌گذاری / کدهای QR با یک کلیک.
- **اشتراک‌ها** در قالب‌های VLESS، Clash/Mihomo و JSON.
- ابزارهای عملیاتی: مدیریت **چندنودی**، یک **ربات Telegram**، پشتیبان‌گیری،
محدودسازی IP مبتنی بر Fail2ban و یک REST API مستندشده.
## پشت صحنه
| لایه | فناوری |
| ------------ | -------------------------------------------- |
| بک‌اند | Go با فریم‌ورک وب Gin |
| فرانت‌اند | TypeScript / React |
| پایگاه‌داده | SQLite (پیش‌فرض) یا PostgreSQL |
| موتور پروکسی | Xray-core (همراه و مدیریت‌شده توسط پنل) |
پایگاه‌دادهٔ پیش‌فرض SQLite در مسیر `/etc/x-ui/x-ui.db` قرار دارد و پنل به‌صورت
پیش‌فرض روی پورت **2053** گوش می‌دهد. هر دو قابل پیکربندی هستند — به
[نخستین ورود](/docs/guide/first-login) و مرجع متغیرهای محیطی مراجعه کنید.
## برای چه کسانی است
3x-ui برای هر کسی که سرور Xray خودش را اجرا می‌کند طراحی شده است: از یک
VPS شخصی منفرد تا اپراتورهایی که نودها و کلاینت‌های فراوانی را مدیریت می‌کنند. اگر
قدرت Xray-core را می‌خواهید بدون اینکه در فایل‌های پیکربندی JSON زندگی کنید، این
برای شماست.
<Callout type="info">
3x-ui یک فورک ارتقایافته از پروژهٔ اصلی X-UI است که پشتیبانی گسترده‌تری از
پروتکل‌ها، پایداری بهبودیافته، حسابداری ترافیک به‌ازای هر کلاینت، مدیریت
چندنودی و بسیاری از قابلیت‌های راحتی‌بخش را اضافه می‌کند.
</Callout>
آماده‌اید نصب کنید؟ به [نصب](/docs/guide/installation) ادامه دهید.
+150
View File
@@ -0,0 +1,150 @@
---
title: نصب
description: نصب 3x-ui با اسکریپت رسمی (نسخهٔ پایدار، نسخهٔ مشخص یا dev-latest)، نصب خودکار/cloud-init یا Docker — و انتخاب میان SQLite و PostgreSQL.
icon: Download
---
‏3x-ui روی طیف گسترده‌ای از توزیع‌های Linux اجرا می‌شود — Ubuntu، Debian، Armbian،
Fedora، CentOS، RHEL، AlmaLinux، Rocky Linux، Oracle Linux، Amazon Linux،
Virtuozzo، Arch، Manjaro، openSUSE (Tumbleweed/Leap)، Alpine — و همچنین Windows،
روی معماری‌های `amd64`، `386`، `arm64`، `armv7`، `armv6`، `armv5` و `s390x`.
<Callout type="warn">
نصب‌کنندهٔ اسکریپتی را به‌صورت **root** (یا با `sudo`) اجرا کنید. این اسکریپت یک
سرویس نصب می‌کند، دستور مدیریتی `x-ui` را راه‌اندازی می‌کند و پنل را در زمان
بوت فعال می‌سازد.
</Callout>
<Tabs items={['Script', 'Docker', 'Manual']}>
<Tab value="Script">
اسکریپت رسمی مسیر توصیه‌شده است. این اسکریپت در طول نصب یک نام کاربری، رمز عبور و
مسیر دسترسی (مسیر پایهٔ وب) **تصادفی** تولید می‌کند، سرویس را راه‌اندازی می‌کند و
دستور مدیریتی `x-ui` را نصب می‌کند.
```bash title="latest stable"
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
```
برای نصب یک **نسخهٔ مشخص**، تگ آن را در انتها اضافه کنید:
```bash title="pinned version"
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.0
```
برای نصب نسخهٔ **dev** غلتان (آخرین پیش‌انتشار به‌ازای هر کامیت از شاخهٔ `main`
— نه یک نسخهٔ پایدار) عبارت `dev-latest` را پاس دهید:
```bash title="rolling dev build"
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) dev-latest
```
پس از پایان نصب، مشخصات ورود چاپ‌شده را یادداشت کنید و دستور `x-ui` را اجرا کنید تا
[منوی مدیریت](/docs/guide/update-uninstall#the-x-ui-management-menu) باز شود، سپس
به [نخستین ورود](/docs/guide/first-login) ادامه دهید.
</Tab>
<Tab value="Docker">
پیکربندی پیش‌فرض Compose از SQLite استفاده می‌کند. مخزن را کلون کنید (یا فایل‌های
`docker-compose.yml` و `Dockerfile` آن را کپی کنید) و آن را اجرا کنید:
```bash
docker compose up -d
```
برای اجرا با سرویس **PostgreSQL** همراه، دو خط `XUI_DB_*` را در
`docker-compose.yml` از حالت کامنت خارج کنید و با پروفایل مربوطه اجرا کنید:
```bash
docker compose --profile postgres up -d
```
ترجیح می‌دهید از ایمیج از‌پیش‌ساخته استفاده کنید؟ این ایمیج روی GitHub Container Registry
منتشر شده است. این ایمیج Fail2ban را به‌همراه دارد (برای [محدودیت‌های IP](/docs/operations/security))
که با `iptables` مسدودسازی انجام می‌دهد و بنابراین به `NET_ADMIN` (و `NET_RAW` برای IPv6)
نیاز دارد — در غیر این صورت مسدودسازی‌ها فقط ثبت می‌شوند ولی هرگز اعمال نمی‌شوند:
```bash title="docker run"
docker run -d \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
-e XUI_ENABLE_FAIL2BAN=true \
-v $PWD/db/:/etc/x-ui/ \
-v $PWD/cert/:/root/cert/ \
--network=host \
--restart=unless-stopped \
--name 3x-ui \
ghcr.io/mhsanaei/3x-ui:latest
```
والیوم `db/` پایگاه‌دادهٔ SQLite (`/etc/x-ui/x-ui.db`) را نگه می‌دارد و `cert/`
گواهی‌های TLS را، بنابراین داده‌های شما در ارتقاها حفظ می‌شوند.
</Tab>
<Tab value="Manual">
برای کاربران پیشرفته، یک آرشیو انتشار متناسب با معماری خود را از
[صفحهٔ releases](https://github.com/MHSanaei/3x-ui/releases) دانلود کنید، آن را
استخراج کنید و باینری را به‌عنوان یک سرویس systemd اجرا کنید. اسکریپت نصب دقیقاً
همین مراحل را خودکار می‌کند، بنابراین مگر اینکه دلیل خاصی برای نصب دستی داشته
باشید، روش اسکریپتی ترجیح داده می‌شود.
</Tab>
</Tabs>
## دستور نصب خود را بسازید
دستور را متناسب با تنظیمات خود سفارشی کنید:
<InstallCommandBuilder />
## انتخاب یک پایگاه‌داده
شما بک‌اند ذخیره‌سازی را در زمان نصب انتخاب می‌کنید:
- **SQLite** (پیش‌فرض) — یک فایل واحد در مسیر `/etc/x-ui/x-ui.db`. بدون نیاز به هیچ تنظیماتی.
- **PostgreSQL** — برای تعداد کلاینت بالا یا پیکربندی‌های چندنودی. نصب‌کننده
می‌تواند آن را به‌صورت محلی نصب کند یا از یک DSN که شما ارائه می‌دهید استفاده کند.
برای جزئیات و مهاجرت SQLite→PostgreSQL به [پایگاه‌داده](/docs/reference/database)
مراجعه کنید.
## نصب خودکار / cloud-init
نصب‌کننده برای خودکارسازی به‌صورت **غیرتعاملی** نیز اجرا می‌شود.
`XUI_NONINTERACTIVE=1` را تنظیم کنید (یا بدون TTY اجرا کنید) تا نصب به‌صورت
سرتاسری و بدون هیچ پرسشی انجام شود، مشخصات تصادفی تولید کند و آن‌ها را در
`/etc/x-ui/install-result.env` بنویسد:
```bash
XUI_NONINTERACTIVE=1 bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
```
دایرکتوری [`deploy/`](https://github.com/MHSanaei/3x-ui/tree/main/deploy) در مخزن
یک user-data آمادهٔ **cloud-init** برای نصب‌های خودکار روی هر ابری (Hetzner، AWS،
DigitalOcean، Vultr، GCP، Azure، Oracle) دارد.
## گام‌های بعدی
<Cards>
<Card
title="نخستین ورود"
href="/docs/guide/first-login"
description="به پنل دسترسی پیدا کنید و آن را ایمن کنید."
/>
<Card
title="به‌روزرسانی و حذف نصب"
href="/docs/guide/update-uninstall"
description="منوی x-ui، به‌روزرسانی‌ها و حذف."
/>
<Card
title="REALITY"
href="/docs/config/reality"
description="نخستین ورودی مخفی خود را پیکربندی کنید."
/>
</Cards>
+5
View File
@@ -0,0 +1,5 @@
{
"title": "شروع به کار",
"icon": "Rocket",
"pages": ["index", "installation", "first-login", "update-uninstall"]
}
@@ -0,0 +1,99 @@
---
title: به‌روزرسانی و حذف
description: مدیریت 3x-ui با منوی x-ui و خط فرمان — به‌روزرسانی (پایدار، dev یا نسخه‌های قدیمی)، تغییر تنظیمات و حذف تمیز و کامل.
icon: RefreshCw
---
پس از نصب با اسکریپت، دستور `x-ui` مرکز کنترل شماست. آن را بدون هیچ آرگومانی اجرا
کنید تا منوی تعاملی باز شود، یا یک زیردستور به آن بدهید تا یک عملیات تک‌مرحله‌ای انجام شود.
```bash
x-ui
```
## منوی مدیریت `x-ui`
منو (آیتم‌های `0`–`28`) وضعیت پنل/Xray را در بالا نشان می‌دهد و سپس:
| # | آیتم | کاری که انجام می‌دهد |
| ----- | -------------------------------------- | --------------------------------------------------------- |
| 1 | Install | (دوباره) نصب از روی اسکریپت راه دور |
| 2 | Update | به‌روزرسانی به آخرین نسخهٔ **پایدار** |
| 3 | Update to Dev Channel (latest commit) | به‌روزرسانی به بیلد غلتان `dev-latest` |
| 4 | Update Menu | به‌روزرسانی فقط اسکریپت منوی `x-ui` |
| 5 | Legacy Version | نصب یک نسخهٔ قدیمی مشخص (تگ را می‌پرسد) |
| 6 | Uninstall | حذف 3x-ui (در ادامه ببینید) |
| 7 | Reset Username & Password | تنظیم مشخصات جدید؛ اختیاراً غیرفعال‌کردن 2FA |
| 8 | Reset Web Base Path | تصادفی‌کردن مسیر پایهٔ وب |
| 9 | Reset Settings | بازنشانی تنظیمات پنل (حساب شما حفظ می‌شود) |
| 10 | Change Port | تغییر پورت پنل |
| 11 | View Current Settings | نمایش نام کاربری، پورت، مسیر پایهٔ وب، مسیرهای گواهی |
| 12–14 | Start / Stop / Restart | کنترل سرویس پنل |
| 15 | Restart Xray | بارگذاری مجدد فقط Xray-core |
| 16 | Check Status | وضعیت سرویس |
| 17 | Logs Management | مشاهدهٔ لاگ‌های دیباگ / پاک‌سازی لاگ‌ها |
| 18–19 | Enable / Disable Autostart | فعال/غیرفعال‌کردن اجرای خودکار در زمان بوت |
| 20 | SSL Certificate Management | Let's Encrypt (دامنه یا IP)، مسیرهای سفارشی، تمدید/ابطال |
| 21 | Cloudflare SSL Certificate | گواهی wildcard از طریق DNS-01 با Cloudflare |
| 22 | IP Limit Management | محدودیت IP به‌ازای هر کلاینت مبتنی بر Fail2ban |
| 23 | Firewall Management | نصب `ufw` و قواعد پورت |
| 24 | SSH Port Forwarding Management | اتصال پنل به localhost و تونل‌زدن روی SSH |
| 25 | PostgreSQL Management | نصب/مهاجرت/مدیریت PostgreSQL |
| 26 | Enable BBR | فعال/غیرفعال‌کردن sysctl کنترل ازدحام BBR |
| 27 | Update Geo Files | به‌روزرسانی دادهٔ geoip/geosite (Loyalsoldier، IR، RU) |
| 28 | Speedtest by Ookla | اجرای تست سرعت Ookla |
| 0 | Exit | — |
برخی از این موارد صفحهٔ مخصوص خود را دارند: [گواهی‌های SSL](/docs/config/ssl-certificates)
(آیتم‌های 20–21)، [امنیت](/docs/operations/security) (محدودیت IP، فایروال)،
[پروکسی معکوس](/docs/operations/reverse-proxy) و [تنظیمات پنل](/docs/config/panel)
(TLS)، و [پایگاه‌داده](/docs/reference/database) (PostgreSQL).
## زیردستورهای خط فرمان
برای اسکریپت‌ها و اقدام‌های سریع، `x-ui` یک زیردستور را هم مستقیماً می‌پذیرد:
| دستور | عملیات |
| -------------------------- | --------------------------------------------------- |
| `x-ui start` / `stop` / `restart` | کنترل سرویس |
| `x-ui restart-xray` | بارگذاری مجدد فقط Xray-core |
| `x-ui status` | نمایش وضعیت |
| `x-ui settings` | نمایش تنظیمات فعلی |
| `x-ui enable` / `disable` | فعال/غیرفعال‌کردن اجرای خودکار در زمان بوت |
| `x-ui log` | دنبال‌کردن لاگ دیباگ |
| `x-ui banlog` | نمایش لاگ مسدودسازی Fail2ban |
| `x-ui update` | به‌روزرسانی به آخرین نسخهٔ پایدار |
| `x-ui update-dev` | به‌روزرسانی به بیلد غلتان `dev-latest` |
| `x-ui legacy` | نصب یک نسخهٔ قدیمی مشخص (می‌پرسد) |
| `x-ui update-all-geofiles` | به‌روزرسانی همهٔ فایل‌های geo و راه‌اندازی مجدد در صورت تغییر |
| `x-ui migrate-db --dsn …` | مهاجرت SQLite ← PostgreSQL (نگاه کنید به [پایگاه‌داده](/docs/reference/database)) |
| `x-ui install` / `uninstall` | نصب / حذف |
## به‌روزرسانی
- **پایدار:** گزینهٔ منوی **۲** یا `x-ui update`. اجرای دوبارهٔ اسکریپت نصب هم
در همان محل به‌روزرسانی می‌کند.
- **کانال dev:** گزینهٔ منوی **۳** یا `x-ui update-dev` — بیلد غلتان
`dev-latest` به‌ازای هر کامیت (نه یک نسخهٔ پایدار).
- **یک نسخهٔ قدیمی مشخص:** گزینهٔ منوی **۵** (Legacy Version).
به‌روزرسانی، پایگاه‌داده و تنظیمات شما را حفظ می‌کند. پیش از یک جهش نسخهٔ اصلی، یک
[پشتیبان](/docs/operations/backup-restore) بگیرید.
<Callout type="info">
کاربران Docker به شیوهٔ دیگری به‌روزرسانی می‌کنند — به‌جای استفاده از دستورهای
به‌روزرسانی `x-ui`، ایمیج جدید را pull کرده و کانتینر را از نو بسازید
(`docker compose pull && docker compose up -d`).
</Callout>
## حذف
گزینهٔ منوی **۶** یا `x-ui uninstall`. سرویس را متوقف و غیرفعال می‌کند، یونیت سرویس
را حذف می‌کند و `/etc/x-ui/` و پوشهٔ نصب را پاک می‌کند. اگر پنل از یک PostgreSQL
نصب‌شده به‌صورت محلی استفاده می‌کرده، پیشنهاد می‌دهد آن را هم پاک‌سازی کند (یک تأیید
جداگانه و برگشت‌ناپذیر).
<Callout type="warn">
حذف، پایگاه‌داده (`/etc/x-ui/x-ui.db`) و پیکربندی شما را پاک می‌کند. اگر ممکن است
بعداً به آن نیاز داشته باشید، ابتدا [پشتیبان بگیرید](/docs/operations/backup-restore).
</Callout>