mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-11-12 16:15:02 +03:00
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:
@@ -0,0 +1,156 @@
|
||||
---
|
||||
title: خروجیها و مسیریابی
|
||||
description: مدیریت ترافیک خروجی در 3x-ui — خروجیهای WARP و NordVPN، اشتراکهای خروجی (مجموعه سرورها)، قواعد مسیریابی و متعادلکنندههای بار.
|
||||
icon: Route
|
||||
---
|
||||
|
||||
ورودیها کلاینتها را میپذیرند؛ **خروجیها** تعیین میکنند ترافیک آنها در ادامه به کجا برود.
|
||||
3x-ui میتواند ترافیک را از طریق Cloudflare WARP، NordVPN یا مجموعههای خروجی دلخواه
|
||||
واردشده از یک اشتراک مسیریابی کند و با قواعد مسیریابی و متعادلکنندهها میان آنها
|
||||
انتخاب نماید.
|
||||
|
||||
## ویرایش خروجیها و مسیریابی
|
||||
|
||||
خروجیها، قواعد مسیریابی، متعادلکنندهها، DNS و ثبت رویداد همگی در **پیکربندی Xray**
|
||||
قرار دارند (همان قالب پیکربندی که زیر Xray Settings ویرایش میکنید). رابط کاربری جداگانهای
|
||||
برای هر قاعده وجود ندارد — شما JSON را ویرایش میکنید و پنل Xray را بارگذاری مجدد میکند. پنل
|
||||
همچنین یک **آزمون اتصالپذیری خروجی** و یک **آزمون مسیر** ارائه میدهد (از هسته در حال اجرا
|
||||
بپرسید که برای یک مقصد مشخص از کدام خروجی استفاده خواهد شد).
|
||||
|
||||
## ساخت یک خروجی
|
||||
|
||||
هر خروجی یک شیء JSON است با حداکثر چهار بخش: یک **`tag`** (که قواعد مسیریابی و
|
||||
متعادلکنندهها به آن ارجاع میدهند)، یک **`protocol`**، **`settings`** مخصوص پروتکل،
|
||||
و — برای پروتکلهای proxy — **`streamSettings`** که باید با انتقال و امنیت ورودی راه دور
|
||||
مطابقت داشته باشد. دو خروجی تقریباً همیشه حضور دارند:
|
||||
|
||||
- **`freedom`** ترافیک را مستقیماً به مقصدش میفرستد — خروجی پیشفرض.
|
||||
بهصورت اختیاری میتوانید یک `domainStrategy` (مثلاً `UseIP`) تنظیم کنید تا نحوه تفکیک نامهای میزبان را کنترل کنید.
|
||||
- **`blackhole`** ترافیک را دور میاندازد. مقصدهای ناخواسته (تبلیغات، تورنتها) را به اینجا هدایت کنید.
|
||||
|
||||
```json title="freedom + blackhole"
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "direct", "protocol": "freedom", "settings": {} },
|
||||
{ "tag": "block", "protocol": "blackhole", "settings": {} }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
یک خروجی **proxy** (VLESS، VMess، Trojan، Shadowsocks) به سرور دیگری ارسال میکند —
|
||||
که برای زنجیرهکردن یا فرستادن ترافیک منتخب به خارج مفید است. به شکلهای سیمی که 3x-ui
|
||||
استفاده میکند توجه کنید: **VLESS شکل تخت است** (`address`/`port`/`id`/`flow`/
|
||||
`encryption`)، **VMess از `settings.vnext[]` استفاده میکند**، و **Trojan/Shadowsocks از
|
||||
`settings.servers[]` استفاده میکنند**. مقدار `streamSettings` باید با
|
||||
[انتقال و امنیت](/docs/config/transports) مقصد همخوانی داشته باشد.
|
||||
|
||||
هر خروجی را در زیر سرهم کنید و JSON را در **Xray Settings → Outbounds** بچسبانید:
|
||||
|
||||
<OutboundGenerator />
|
||||
|
||||
## Cloudflare WARP
|
||||
|
||||
WARP به سرور شما امکان میدهد ترافیک خود را از طریق شبکه Cloudflare خارج کند. 3x-ui میتواند
|
||||
یک حساب WARP برای شما ثبت کند و آن را به یک خروجی WireGuard با برچسب **`warp`** متصل نماید:
|
||||
|
||||
<Steps>
|
||||
|
||||
<Step>
|
||||
### افزودن یک خروجی با برچسب `warp`
|
||||
|
||||
یک خروجی WireGuard با برچسب `warp` در پیکربندی Xray خود بسازید.
|
||||
</Step>
|
||||
|
||||
<Step>
|
||||
### ثبت WARP
|
||||
|
||||
از کنترلهای WARP در پنل، یک حساب ثبت کنید. 3x-ui کلیدها، نشانیها، بایتهای رزروشده و نقطه
|
||||
انتهایی peer مربوط به خروجی را بهصورت خودکار پر میکند.
|
||||
</Step>
|
||||
|
||||
<Step>
|
||||
### (اختیاری) چرخش خودکار IP
|
||||
|
||||
یک بازه بهروزرسانی WARP (بر حسب **روز**) تنظیم کنید تا IP مربوط به WARP بهصورت دورهای چرخش
|
||||
یابد. یک لایسنس رایگان نیز میتواند اعمال شود.
|
||||
</Step>
|
||||
|
||||
</Steps>
|
||||
|
||||
ترافیک موردنظر خود (برای مثال دامنههای خاص) را با یک قاعده مسیریابی به خروجی `warp` هدایت
|
||||
کنید.
|
||||
|
||||
## NordVPN
|
||||
|
||||
3x-ui میتواند اعتبارنامههای NordVPN (NordLynx/WireGuard) را از یک توکن دسترسی دریافت کند (یا
|
||||
یک کلید خصوصی را مستقیماً بپذیرد) و کشورها/سرورها را فهرست کند تا بتوانید یک خروجی NordVPN
|
||||
بسازید.
|
||||
|
||||
## اشتراکهای خروجی (مجموعه سرورها)
|
||||
|
||||
یک **اشتراک خروجی** یک اشتراک share-link از راه دور را وارد میکند و سرورهای آن را بهعنوان
|
||||
**خروجی** به پیکربندی در حال اجرای Xray تزریق میکند — بدون دستزدن به قالب ذخیرهشده شما. این
|
||||
روش توصیهشده برای اشتراک در یک *مجموعه* از سرورهاست.
|
||||
|
||||
| فیلد | پیشفرض | معنا |
|
||||
| ---------------- | ------- | -------------------------------------------------------------- |
|
||||
| `url` | — | نشانی اشتراک از راه دور (محافظتشده در برابر SSRF). |
|
||||
| `tagPrefix` | auto | پیشوند برچسبهای خروجی تولیدشده (مثلاً `hk-`)؛ خالی = `subN-`. |
|
||||
| `updateInterval` | `600` | بازه تازهسازی بر حسب **ثانیه**. |
|
||||
| `prepend` | `false` | این خروجیها را پیش از خروجیهای دستی شما قرار میدهد. |
|
||||
| `priority` | `0` | ترتیب ادغام (مقدار کمتر، زودتر). |
|
||||
|
||||
خروجیهای واردشده **برچسبهای پایدار** میگیرند: همان سرور در طول تازهسازیها همان برچسب را
|
||||
حفظ میکند، بنابراین انتخابگرهای مسیریابی/متعادلکننده مبتنی بر برچسب دقیق پایدار میمانند —
|
||||
در حالی که انتخابگرهای پیشوندی/wildcard (مثلاً `hk-*`) با تغییر مجموعه، بهصورت خودکار سرورهای
|
||||
جدید را در بر میگیرند. طرحهای پیوند پشتیبانیشده: `vmess`، `vless`، `trojan`، `ss`،
|
||||
`hysteria2` (`hy2`) و `wireguard` (`wg`). پنل اشتراکهای فعال را روی یک زمانسنج تازه میکند و
|
||||
هنگام تغییر چیزی، Xray را بارگذاری مجدد میکند.
|
||||
|
||||
## قواعد مسیریابی
|
||||
|
||||
**قواعد مسیریابی** تعیین میکنند هر اتصال از کدام خروجی (یا متعادلکننده) استفاده کند. هر
|
||||
قاعده یک تطبیقدهنده از نوع `field` است: هر یک از `domain`، `ip`، `port`، `network`،
|
||||
`protocol`، `inboundTag`، `sourceIP`، … را تنظیم کنید و آن را به یک **`outboundTag`** یا یک
|
||||
**`balancerTag`** اشاره دهید. قواعد **از بالا به پایین — نخستین تطبیق برنده است** ارزیابی میشوند، بنابراین
|
||||
قواعد خاص را بالای قواعد عمومی قرار دهید.
|
||||
|
||||
```json title="route ads to blackhole, private IPs direct"
|
||||
{
|
||||
"routing": {
|
||||
"domainStrategy": "IPIfNonMatch",
|
||||
"rules": [
|
||||
{ "type": "field", "domain": ["geosite:category-ads-all"], "outboundTag": "block" },
|
||||
{ "type": "field", "ip": ["geoip:private"], "outboundTag": "direct" }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## متعادلکنندهها
|
||||
|
||||
یک **متعادلکننده** خروجیها را با یک **انتخابگر** (پیشوندهای برچسب، از جمله مجموعههای
|
||||
wildcard حاصل از اشتراکهای خروجی) گروهبندی میکند و ترافیک را با یک **استراتژی** میان آنها
|
||||
توزیع یا در صورت خرابی منتقل میکند:
|
||||
|
||||
| استراتژی | انتخاب میکند… | به مانیتور نیاز دارد |
|
||||
| ------------- | ----------------------------------------------- | ------------------------ |
|
||||
| `random` | یک عضو تصادفی برای هر اتصال | خیر |
|
||||
| `roundRobin` | اعضا بهصورت چرخشی | خیر |
|
||||
| `leastPing` | عضو با کمترین تأخیر | **`observatory`** |
|
||||
| `leastLoad` | پایدارترین عضو بر اساس بار نمونهبرداریشده | **`burstObservatory`** |
|
||||
|
||||
از یک قاعده با `balancerTag` به یک متعادلکننده ارجاع دهید. `leastPing` و `leastLoad`
|
||||
به یک مانیتور سلامت نیاز دارند که Xray آن را در **سطح بالای** پیکربندی قرار میدهد
|
||||
(`observatory` / `burstObservatory`، **نه** درون `routing`). پنل میتواند وضعیت
|
||||
متعادلکننده را گزارش کند و برای آزمایش یک متعادلکننده را به یک خروجی مشخص **بازنویسی** کند.
|
||||
|
||||
بلوک مسیریابی — قواعد، متعادلکنندهها و observatory متناظر — را در اینجا بسازید:
|
||||
|
||||
<RoutingBuilder />
|
||||
|
||||
<Callout type="warn">
|
||||
خروجیهایی که به سرویسهای خارجی دسترسی مییابند با محافظت SSRF واکشی میشوند — بهصورت
|
||||
پیشفرض نشانیهای خصوصی/داخلی مسدود هستند مگر آنکه بهطور صریح آنها را بهازای هر منبع مجاز
|
||||
کنید.
|
||||
</Callout>
|
||||
Reference in New Issue
Block a user