| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- ---
- title: Subscription
- description: راهاندازی سرور اشتراک 3x-ui — قالبهای base64/JSON/Clash، پورتها و مسیرها، TLS، هدرهای پاسخ و قالبهای سفارشی.
- icon: Rss
- ---
- یک **اشتراک** (subscription) یک URL واحد است که همهی پیکربندیهای یک کلاینت را
- برمیگرداند. برنامههای کلاینت آن را بهصورت دورهای تازهسازی میکنند، بنابراین وقتی
- یک ورودی را تغییر میدهید، کلاینتها این تغییر را بهصورت خودکار دریافت میکنند. سرور
- اشتراک بهعنوان یک سرور **جداگانه** از پنل اجرا میشود.
- ## فعالسازی و پیکربندی
- سرور اشتراک بهصورت **پیشفرض روشن** است (`subEnable`). آن را در تنظیمات اشتراک
- پنل پیکربندی کنید:
- | Setting | Default | Meaning |
- | ------------- | ------- | --------------------------------------------------------------- |
- | `subPort` | `2096` | پورت گوشدادن (جدا از پنل). |
- | `subListen` | _(همه)_ | آدرس اتصال (bind). |
- | `subPath` | _(تصادفی برای هر پنل)_ | مسیر پایه برای URLهای خام اشتراک. |
- | `subDomain` | _(هیچ)_ | میزبان عمومی؛ اگر تنظیم شود، سرور فقط به همان Host پاسخ میدهد. |
- | `subCertFile` / `subKeyFile` | _(هیچ)_ | گواهی و کلید TLS — هنگام تنظیم، سرور **HTTPS** ارائه میدهد. |
- | `subEncrypt` | `true` | بدنهی خام اشتراک را با base64 رمزگذاری میکند. |
- | `subUpdates` | `12` | بازهی پیشنهادی تازهسازی (ساعت) که به کلاینتها ارسال میشود. |
- یک URL اشتراک به این شکل است:
- ```text
- https://<sub-host>:<sub-port>/<sub-path>/<sub-id>
- ```
- که در آن `<sub-id>` همان **Sub ID** کلاینت است.
- همان Sub ID در چند قالب روی مسیرهای مختلف ارائه میشود — فهرست **Base64** در
- `subPath` و پیکربندی **JSON** (Xray-json) در مسیر JSON. URLها را بسازید و هر دو
- بدنه را اینجا پیشنمایش کنید:
- <SubscriptionBuilder />
- ## قالبهای خروجی
- **قالب بر اساس مسیر انتخاب میشود** و هرکدام کلید فعالسازی مخصوص خود را دارند:
- | Format | Path | Enabled by | Output |
- | --------------------- | --------- | ---------------- | --------------------------------------------------- |
- | **لینکهای خام** | `subPath` | همیشه (اگر روشن باشد) | فهرستی از لینکهای `vless://`، `vmess://`، … (هنگام فعالبودن `subEncrypt` با base64 رمزگذاری میشود). |
- | **JSON** | `subJsonPath` | `subJsonEnable` | پیکربندی(های) کامل کلاینت Xray. |
- | **Clash / Mihomo** | `subClashPath` | `subClashEnable` | پروفایل YAML. |
- فقط ورودیهای فعالی که از **VLESS، VMess، Trojan، Shadowsocks، WireGuard، AmneziaWG، MTProto، TUIC یا Hysteria2**
- استفاده میکنند در یک اشتراک ظاهر میشوند و بر اساس شاخص sub-sort آنها مرتب میشوند (TUIC و AmneziaWG در لینکهای خام و پروفایلهای Clash/Mihomo گنجانده میشوند اما از اندپوینتهای JSON حذف میشوند؛ MTProto در لینکهای خام گنجانده میشود). درخواست `subPath` همراه با هدر `Accept: text/html` (یا `?html=1`) بهجای بدنهی خام،
- یک صفحهی اطلاعات خوانا برای انسان برمیگرداند.
- ### Base64 vs JSON
- بدنهی **Base64** صرفاً همان لینکهای اشتراکگذاری است که با خط جدید به هم پیوسته و
- با standard-base64 رمزگذاری شدهاند (با `subEncrypt` قابل تغییر است). بدنهی **JSON**
- هر کلاینت را در یک پیکربندی کامل کلاینت Xray میپیچد — یک اسکلت ثابت (ورودیهای محلی
- SOCKS/HTTP روی 127.0.0.1، DNS، مسیریابی، policy) بهعلاوهی یک outbound از نوع `proxy` که به ورودی
- اشاره میکند. 3x-ui **برای یک کلاینت یک شیء پیکربندی واحد و برای چند کلاینت یک آرایه**
- تولید میکند، از فرم تخت `settings` در outbound استفاده میکند
- (`address`/`port`/`id`، `level: 8`) و `sockopt` را از `streamSettings` حذف میکند.
- ## هدرهای پاسخ
- اشتراکها هدرهای استانداردی برمیگردانند که برنامههای سازگار آنها را میخوانند:
- - **`Subscription-Userinfo`** — `upload`، `download`، `total` (بایت؛ `total=0`
- یعنی نامحدود) و `expire` (ثانیههای Unix).
- - **`Profile-Update-Interval`** — بازهی تازهسازی برحسب ساعت (`subUpdates`).
- - **`Profile-Title`**، **`Support-Url`**، **`Profile-Web-Page-Url`**،
- **`Announce`** — برندینگ اختیاری که برخی کلاینتها نمایش میدهند.
- ### لینک صفحه پروفایل
- در تنظیمات **سابسکریپشن ← پروفایل**، گزینه **صفحه پروفایل** (`subProfileMode`)
- لینک را برای همه کلاینتهای اشتراک کنترل میکند:
- - **بدون لینک** (`none`، پیشفرض) — هدر `Profile-Web-Page-Url` ارسال نمیشود.
- - **صفحه اشتراک داخلی** (`builtin`) — لینک صفحه اشتراک داخلی ارائه میشود.
- - **وبسایت سفارشی** (`custom`) — آدرس `subProfileUrl` استفاده میشود؛ اگر خالی باشد، هدر ارسال نمیشود.
- **پس از ارتقا:** اگر `subProfileMode` هنوز تنظیم نشده و مقدار قبلی `subProfileUrl`
- خالی یا فقط شامل فاصله باشد، بهجای لینک خودکار صفحه داخلی، حالت **بدون لینک**
- انتخاب میشود. آدرس سفارشی غیرخالی قبلی در حالت **وبسایت سفارشی** حفظ میشود.
- برای بازگرداندن لینک قبلی، در همین بخش **صفحه اشتراک داخلی** را انتخاب و تنظیمات
- را ذخیره کنید. این صفحه آدرسهای اشتراک و پیکربندی گرهها را آشکار میکند، حتی
- برای اشتراکهای رمزگذاریشده Happ.
- ## قالبهای سفارشی صفحه
- برای برندینگ صفحهی HTML اشتراک، `subThemeDir` را به یک پوشهی حاوی قالب سفارشیِ
- صفحهی اطلاعات اشاره دهید. توضیح (remark) هر کلاینت روی هر لینک کاملاً قابل
- قالببندی است — به [لینکهای اشتراکگذاری ← متغیرهای remark](/docs/config/share-links#remark-template-variables) مراجعه کنید.
- <Callout type="info">
- سرور اشتراک را پشت TLS قرار دهید (با تنظیم `subCertFile`/`subKeyFile`، یا یک
- [پروکسی معکوس](/docs/operations/reverse-proxy)) تا محتوای اشتراک در حین انتقال
- افشا نشود.
- </Callout>
|