Subscription
راهاندازی سرور اشتراک 3x-ui — قالبهای base64/JSON/Clash، پورتها و مسیرها، TLS، هدرهای پاسخ و قالبهای سفارشی.
یک اشتراک (subscription) یک URL واحد است که همهی پیکربندیهای یک کلاینت را برمیگرداند. برنامههای کلاینت آن را بهصورت دورهای تازهسازی میکنند، بنابراین وقتی یک ورودی را تغییر میدهید، کلاینتها این تغییر را بهصورت خودکار دریافت میکنند. سرور اشتراک بهعنوان یک سرور جداگانه از پنل اجرا میشود.
فعالسازی و پیکربندی
سرور اشتراک بهصورت پیشفرض روشن است (subEnable). آن را در تنظیمات اشتراک
پنل پیکربندی کنید:
| Setting | Default | Meaning |
|---|---|---|
subPort | 2096 | پورت گوشدادن (جدا از پنل). |
subListen | (همه) | آدرس اتصال (bind). |
subPath | (تصادفی برای هر پنل) | مسیر پایه برای URLهای خام اشتراک. |
subDomain | (هیچ) | میزبان عمومی؛ اگر تنظیم شود، سرور فقط به همان Host پاسخ میدهد. |
subCertFile / subKeyFile | (هیچ) | گواهی و کلید TLS — هنگام تنظیم، سرور HTTPS ارائه میدهد. |
subEncrypt | true | بدنهی خام اشتراک را با base64 رمزگذاری میکند. |
subUpdates | 12 | بازهی پیشنهادی تازهسازی (ساعت) که به کلاینتها ارسال میشود. |
یک URL اشتراک به این شکل است:
https://<sub-host>:<sub-port>/<sub-path>/<sub-id>که در آن <sub-id> همان Sub ID کلاینت است.
همان Sub ID در چند قالب روی مسیرهای مختلف ارائه میشود — فهرست Base64 در
subPath و پیکربندی JSON (Xray-json) در مسیر JSON. URLها را بسازید و هر دو
بدنه را اینجا پیشنمایش کنید:
Subscription & sub-JSON builder
Build the subscription URLs and preview both body formats — the Base64 link list and the JSON (Xray-json) config.
https://sub.example.com:2096/your-sub-path/user-1https://sub.example.com:2096/your-json-path/user-1Clients in this subscription
vless://11111111-2222-3333-4444-555555555555@a.example.com:443?type=tcp&security=reality&sni=www.microsoft.com#HK-01dmxlc3M6Ly8xMTExMTExMS0yMjIyLTMzMzMtNDQ0NC01NTU1NTU1NTU1NTVAYS5leGFtcGxlLmNvbTo0NDM/dHlwZT10Y3Amc2VjdXJpdHk9cmVhbGl0eSZzbmk9d3d3Lm1pY3Jvc29mdC5jb20jSEstMDE={
"remarks": "HK-01",
"dns": {
"tag": "dns_out",
"queryStrategy": "UseIP",
"servers": [
{
"address": "8.8.8.8",
"skipFallback": false
}
]
},
"inbounds": [
{
"listen": "127.0.0.1",
"port": 10808,
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": true,
"userLevel": 8
},
"sniffing": {
"destOverride": [
"http",
"tls",
"quic",
"fakedns"
],
"enabled": true
},
"tag": "mixed"
},
{
"listen": "127.0.0.1",
"port": 10809,
"protocol": "http",
"settings": {
"userLevel": 8
},
"tag": "http"
}
],
"log": {
"loglevel": "warning"
},
"policy": {
"levels": {
"8": {
"connIdle": 300,
"downlinkOnly": 1,
"handshake": 4,
"uplinkOnly": 1
}
},
"system": {
"statsOutboundUplink": true,
"statsOutboundDownlink": true
}
},
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
},
"stats": {},
"outbounds": [
{
"protocol": "vless",
"tag": "proxy",
"streamSettings": {
"network": "tcp",
"security": "reality",
"tcpSettings": {
"header": {
"type": "none"
}
},
"realitySettings": {
"fingerprint": "chrome",
"serverName": "www.microsoft.com"
}
},
"settings": {
"address": "a.example.com",
"port": 443,
"id": "11111111-2222-3333-4444-555555555555",
"encryption": "none",
"level": 8
}
},
{
"tag": "direct",
"protocol": "freedom",
"settings": {
"domainStrategy": "AsIs",
"redirect": "",
"noises": []
}
},
{
"tag": "block",
"protocol": "blackhole",
"settings": {
"response": {
"type": "http"
}
}
}
]
}قالبهای خروجی
قالب بر اساس مسیر انتخاب میشود و هرکدام کلید فعالسازی مخصوص خود را دارند:
| 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 مراجعه کنید.
سرور اشتراک را پشت TLS قرار دهید (با تنظیم subCertFile/subKeyFile، یا یک
پروکسی معکوس) تا محتوای اشتراک در حین انتقال
افشا نشود.

3x-ui