[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80248":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":13,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":14,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":15,"fork":15,"defaultBranch":16,"hasWiki":17,"hasPages":15,"topics":18,"createdAt":8,"pushedAt":8,"updatedAt":19,"readmeContent":20,"aiSummary":21,"trendingCount":13,"starSnapshotCount":13,"syncStatus":22,"lastSyncTime":23,"discoverSource":24},80248,"SNI-XHTTP-V1.1","avacocloud\u002FSNI-XHTTP-V1.1","avacocloud",null,"JavaScript",51,99,52,0,6,false,"main",true,[],"2026-06-12 02:04:00","# SNI-XHTTP\n\n> ⚠️ **هشدار مهم:** دوستان لطفاً این پروژه رو فورک نکنید. دفعه‌ی قبل روی فورک پروژه لو رفتیم. لطفاً فقط استفاده کنید و فورک نکنید.\n\n### 🇮🇷 راهنمای کامل فارسی — Complete Persian Setup Guide\n\n[![Telegram Channel](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-%40avaco__cloud-26A5E4?style=for-the-badge&logo=telegram&logoColor=white)](https:\u002F\u002Ft.me\u002Favaco_cloud)\n\n> 📢 **کانال تلگرام Avaco Cloud** — برای آموزش‌های بیشتر، آپدیت‌ها، روش‌های دور زدن سانسور و کانفیگ‌های جدید عضو شو:\n> \n> 👉 **[https:\u002F\u002Ft.me\u002Favaco_cloud](https:\u002F\u002Ft.me\u002Favaco_cloud)**\n\nA minimal relay running on **Vercel Serverless Functions** (Node.js runtime, 128MB memory) that forwards **XHTTP** traffic from your Xray\u002FV2Ray client to your backend Xray server. The goal: use Vercel's global edge network and the `*.vercel.app` domain as a front to hide the real IP of your origin server.\n\n> **v1.1 — Memory Optimization:** switched from Edge Runtime (~1GB per instance) to Node.js Serverless with 128MB memory + Fluid Compute concurrency. **~8x reduction in Provisioned Memory costs.**\n\n---\n\n## فهرست\n\n- [این پروژه برای کیه؟](#این-پروژه-برای-کیه)\n- [نحوه‌ی کار (معماری)](#نحوه‌ی-کار-معماری)\n- [محدودیت‌ها و هشدارها](#محدودیت‌ها-و-هشدارها)\n- [پیش‌نیازها](#پیش‌نیازها)\n- [مرحله ۱ — خرید VPS](#مرحله-۱--خرید-vps)\n- [مرحله ۲ — تنظیم دامنه و DNS](#مرحله-۲--تنظیم-دامنه-و-dns)\n- [مرحله ۳ — اتصال SSH به VPS](#مرحله-۳--اتصال-ssh-به-vps)\n- [مرحله ۴ — نصب Xray](#مرحله-۴--نصب-xray)\n- [مرحله ۵ — گرفتن TLS Certificate](#مرحله-۵--گرفتن-tls-certificate)\n- [مرحله ۶ — کانفیگ Xray با XHTTP](#مرحله-۶--کانفیگ-xray-با-xhttp)\n- [مرحله ۷ — Deploy روی Vercel](#مرحله-۷--deploy-روی-vercel)\n- [مرحله ۸ — کانفیگ کلاینت](#مرحله-۸--کانفیگ-کلاینت)\n- [محدودیت‌های Vercel](#محدودیت‌های-vercel)\n- [بهینه‌سازی هزینه (v1.1)](#بهینه‌سازی-هزینه-v11)\n- [عیب‌یابی](#عیب‌یابی)\n- [سوالات متداول](#سوالات-متداول)\n\n---\n\n## این پروژه برای کیه؟\n\nاین پروژه فقط زمانی به دردت می‌خوره که **خودت یک سرور Xray با XHTTP داری** و می‌خوای IP اون رو با Vercel استتار کنی.\n\n❌ **به دردت نمی‌خوره** اگر:\n- فقط یه کانفیگ آماده (vless\u002Fvmess) از فروشنده گرفتی\n- کانفیگت WebSocket \u002F gRPC \u002F Reality \u002F Trojan \u002F TCP هست\n- می‌خوای بدون VPS فقط با Vercel پروکسی بسازی\n- **ترافیک سنگین** داری (استریم 4K، دانلود حجیم، torrent، چندکاربره) — چون **Fast Origin Transfer در Hobby خیلی زود تموم می‌شه** و حساب Pause می‌شه\n\n✅ **به دردت می‌خوره** اگر:\n- VPS داری یا می‌خوای بگیری\n- می‌خوای transport رو **XHTTP** بذاری\n- می‌خوای IP سرورت پنهان بمونه\n- استفاده‌ی **شخصی و سبک** می‌کنی (چت، مرور وب، ویدیو تا 1080p، موزیک)\n- یا حاضری برای ترافیک سنگین پلن **Pro** بگیری\n\n---\n\n## نحوه‌ی کار (معماری)\n\n```\n┌──────────┐  TLS, SNI=vercel.com   ┌──────────────┐  HTTP\u002F2   ┌──────────────┐\n│  کلاینت   │ ─────────────────────► │ Vercel Edge  │ ────────► │  سرور Xray   │\n│ (v2rayN\u002F  │      XHTTP request     │  (relay)     │  forward  │ XHTTP inbound│\n│  Hiddify) │                        │              │           │              │\n└──────────┘                        └──────────────┘            └──────────────┘\n```\n\n1. کلاینت با SNI=`vercel.com` به دامنه‌ی Vercel وصل می‌شه. برای سانسورچی شبیه ترافیک عادی Vercel به‌نظر می‌رسه.\n2. Vercel Serverless Function بدنه‌ی request رو **stream** می‌کنه به سرور Xray.\n3. پاسخ هم به همون صورت stream می‌شه برمی‌گرده.\n\n---\n\n## محدودیت‌ها و هشدارها\n\n🔴 **هشدار مهم — Fast Origin Transfer:** در پلن Hobby هر بایت ترافیک **دو بار** شمرده می‌شه (یک‌بار کلاینت↔Vercel و یک‌بار Vercel↔سرور). اگه سهمیه تموم بشه، Vercel اکانتت رو **Pause می‌کنه**، کاربرا دیگه نمی‌تونن وصل بشن و **۳۰ روز** باید صبر کنی یا Pro بخری. جزئیات در بخش [محدودیت‌های Vercel](#محدودیت‌های-vercel).\n\n⚠️ **فقط XHTTP**: WebSocket, gRPC, TCP, mKCP, QUIC و Reality روی Vercel Edge کار **نمی‌کنه** (محدودیت runtime).\n\n⚠️ **TOS Vercel**: استفاده‌ی proxy ممکنه TOS رو نقض کنه. اگه ترافیک بالا باشه، اکانتت ممکنه suspend بشه. ترافیک رو متعادل نگه دار.\n\n⚠️ **آموزشی**: این repo برای آموزش و تست شخصیه، نه production. هیچ SLA و پشتیبانی نداره.\n\n### 💡 توصیه‌های مصرف پایدار\n\nبرای جلوگیری از قطع شدن اتصال در وسط ماه:\n\n- 📊 **Dashboard → Usage** رو **هفتگی** چک کن (Vercel هنگام ۸۰٪ و ۱۰۰٪ ایمیل می‌فرسته)\n- 🔄 **چند پروژه Hobby** با چند اکانت Gmail بساز و در کلاینت به‌صورت **Load Balance \u002F Failover** تنظیم کن\n- ⏸ ویدیوهای 4K و دانلودهای حجیم رو از پروکسی **خارج** کن (مستقیم یا از پروکسی دیگه)\n- 💳 اگه ترافیک زیاد داری، **Pro ($20\u002Fماه)** بگیر و با **Spend Management** سقف هزینه بذار\n\n---\n\n## پیش‌نیازها\n\n| مورد | توضیح |\n|---|---|\n| **VPS** | یک سرور لینوکس خارج از ایران با IP عمومی (ترجیحاً Ubuntu 22.04 یا 24.04) |\n| **دامنه** | یک دامنه (پولی یا رایگان مثل DuckDNS) که A record اون به IP سرور اشاره کنه |\n| **اکانت Vercel** | رایگان از [vercel.com](https:\u002F\u002Fvercel.com) |\n| **Node.js + npm** | روی سیستم محلی برای Vercel CLI (می‌تونی از داشبورد هم deploy کنی) |\n| **اکانت GitHub** | اختیاری، اگه از روش Dashboard استفاده می‌کنی |\n\n### ابزارهای لازم بر اساس سیستم‌عامل\n\nاین راهنما هم برای **ویندوز** و هم **مک\u002Fلینوکس** نوشته شده. در هر مرحله بسته به OS خودت دستورات معادل رو می‌بینی.\n\n#### 🪟 ویندوز (Windows 10\u002F11)\n\nهمه‌ی ابزارهای زیر **رایگان** هستن:\n\n| ابزار | لینک نصب | کاربرد |\n|---|---|---|\n| **PowerShell** | از قبل نصبه (در منوی Start جستجو کن) | اجرای دستورات |\n| **OpenSSH Client** | از قبل در Win10\u002F11 نصبه ([راهنما](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows-server\u002Fadministration\u002Fopenssh\u002Fopenssh_install_firstuse)) | اتصال SSH |\n| **Git for Windows** | [git-scm.com\u002Fdownload\u002Fwin](https:\u002F\u002Fgit-scm.com\u002Fdownload\u002Fwin) | git + Git Bash |\n| **Node.js LTS** | [nodejs.org](https:\u002F\u002Fnodejs.org) — installer رو دانلود و Next-Next-Finish | برای Vercel CLI |\n| **PuTTY** (اختیاری) | [putty.org](https:\u002F\u002Fwww.putty.org\u002F) | جایگزین SSH با GUI |\n\n> 💡 **توصیه:** بعد از نصب Git for Windows از **Git Bash** استفاده کن، چون دستورات یونیکسی (مثل `curl`, `ssh`, `cat`) داخلش طبیعی کار می‌کنن. این راهنما رو راحت‌تر می‌کنه.\n\n#### 🍎 مک \u002F 🐧 لینوکس\n\n| ابزار | روش نصب |\n|---|---|\n| **Terminal** | از قبل نصبه |\n| **ssh, curl, dig** | از قبل نصبن |\n| **Homebrew** (Mac) | `\u002Fbin\u002Fbash -c \"$(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FHomebrew\u002Finstall\u002FHEAD\u002Finstall.sh)\"` |\n| **Node.js** | `brew install node` (Mac) یا `apt install nodejs npm` (Linux) |\n| **Git** | `brew install git` (Mac) یا `apt install git` (Linux) |\n\n---\n\n## مرحله ۱ — خرید VPS\n\n### پیشنهادها\n\n| ارائه‌دهنده | قیمت ماهانه | لوکیشن پیشنهادی |\n|---|---|---|\n| **Hetzner** | ~€4.5 | Frankfurt \u002F Helsinki |\n| **Contabo** | ~$4.5 | EU \u002F US |\n| **Vultr** | $5-6 | EU \u002F US |\n| **DigitalOcean** | $6 | متعدد |\n\n### مشخصات حداقلی\n- RAM: ۱ GB\n- CPU: ۱ vCPU\n- Disk: ۲۰ GB SSD\n- Bandwidth: حداقل ۱ TB\u002Fماه\n- OS: **Ubuntu 22.04** یا **24.04**\n\nپس از خرید، **IP عمومی** و **رمز SSH** رو از داشبورد بگیر.\n\n---\n\n## مرحله ۲ — تنظیم دامنه و DNS\n\n### اگه دامنه نداری\n- پولی: [Namecheap](https:\u002F\u002Fwww.namecheap.com), [Porkbun](https:\u002F\u002Fporkbun.com), [Cloudflare Registrar](https:\u002F\u002Fwww.cloudflare.com\u002Fproducts\u002Fregistrar\u002F)\n- رایگان: [DuckDNS](https:\u002F\u002Fwww.duckdns.org\u002F)\n\n### تنظیم A Record (در Cloudflare)\n\n1. وارد [dash.cloudflare.com](https:\u002F\u002Fdash.cloudflare.com) شو\n2. روی دامنه‌ت کلیک کن → منوی **DNS → Records**\n3. **Add record**:\n\n| فیلد | مقدار |\n|---|---|\n| **Type** | `A` |\n| **Name** | `xray` (یا هر چیز دلخواه — می‌شه `xray.yourdomain.com`) |\n| **IPv4 address** | IP عمومی VPS تو (مثلاً `203.0.113.45`) |\n| **Proxy status** | ⚫ **DNS only** (خاکستری، **نه** نارنجی) |\n| **TTL** | `Auto` |\n\n> 🔴 **Proxy status حتماً DNS only باشه**. اگه Proxied بذاری، Cloudflare وسط ترافیک قرار می‌گیره و کار نمی‌کنه.\n\n### تست DNS\n\n**🍎 Mac \u002F 🐧 Linux:**\n```bash\ndig @8.8.8.8 xray.yourdomain.com +short\n```\n\n**🪟 Windows (PowerShell):**\n```powershell\nResolve-DnsName xray.yourdomain.com -Server 8.8.8.8 -Type A\n```\n\nیا با `nslookup`:\n```powershell\nnslookup xray.yourdomain.com 8.8.8.8\n```\n\n**🪟 Windows (Git Bash):**\n```bash\nnslookup xray.yourdomain.com 8.8.8.8\n```\n\nباید **IP سرور تو** رو برگردونه. ممکنه ۱-۵ دقیقه طول بکشه.\n\n---\n\n## مرحله ۳ — اتصال SSH به VPS\n\n### 🍎 Mac \u002F 🐧 Linux \u002F 🪟 Windows (PowerShell یا Git Bash)\n\n```bash\nssh root@YOUR_VPS_IP\n```\n\nاولین بار `yes` بزن. رمز رو وارد کن (هنگام تایپ نشون داده نمی‌شه — این طبیعیه).\n\n### 🪟 Windows با PuTTY (اگه CLI سخته)\n\n1. PuTTY رو باز کن\n2. **Host Name (or IP address):** `YOUR_VPS_IP`\n3. **Port:** `22`\n4. **Connection type:** `SSH`\n5. **Open** بزن\n6. اولین بار **Accept** بزن\n7. login: `root` + Enter، رمز رو وارد کن\n\n> 💡 پس از این مرحله، تمام دستوراتی که با `#` (یا `root@vps:~#`) شروع می‌شن، **داخل سرور SSH** اجرا می‌شن — مهم نیست از Mac وصل شدی یا Windows.\n\n### چک OS\n\n```bash\ncat \u002Fetc\u002Fos-release\n```\n\nباید Ubuntu 22.04 یا 24.04 رو ببینی.\n\n---\n\n## مرحله ۴ — نصب Xray\n\n### آپدیت سیستم و نصب پکیج‌ها\n\n```bash\napt update && apt upgrade -y\napt install -y curl socat cron ufw\n```\n\n### نصب Xray با اسکریپت رسمی\n\n```bash\nbash -c \"$(curl -L https:\u002F\u002Fgithub.com\u002FXTLS\u002FXray-install\u002Fraw\u002Fmain\u002Finstall-release.sh)\" @ install\n```\n\nپس از چند ثانیه:\n```\ninfo: Xray vXX.X.X is installed.\n```\n\n### چک نسخه\n\n```bash\nxray version\n```\n\n> ⚠️ نسخه باید **حداقل v1.8.16** باشه (برای XHTTP). نسخه‌های جدیدتر (مثل ۲۶.x) بهترن.\n\n### تولید UUID\n\n```bash\nxray uuid\n```\n\nخروجی مثل:\n```\nxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\n**این UUID رو ذخیره کن** — بعداً تو کانفیگ سرور و کلاینت لازمه.\n\n### فعال‌سازی سرویس\n\n```bash\nsystemctl enable xray\n```\n\n### تنظیم فایروال\n\n```bash\nufw allow 22\u002Ftcp      # SSH\nufw allow 80\u002Ftcp      # برای صدور cert\nufw allow 443\u002Ftcp     # برای آینده\nufw allow 2096\u002Ftcp    # پورت Xray ما\nufw --force enable\nufw status\n```\n\n> ⚠️ قبل از `ufw --force enable` مطمئن شو پورت ۲۲ allow شده، وگرنه ارتباط SSH قطع می‌شه.\n\n---\n\n## مرحله ۵ — گرفتن TLS Certificate\n\nاز **acme.sh** + **Let's Encrypt** استفاده می‌کنیم (رایگان، خودکار).\n\n### نصب acme.sh\n\n```bash\ncurl https:\u002F\u002Fget.acme.sh | sh -s email=your@email.com\nsource ~\u002F.bashrc\n```\n\n### تنظیم CA پیش‌فرض\n\n```bash\n~\u002F.acme.sh\u002Facme.sh --set-default-ca --server letsencrypt\n```\n\n### اطمینان از خالی بودن پورت ۸۰\n\n```bash\nss -tlnp | grep :80\n```\n\nاگه چیزی listen می‌کنه (مثل apache یا nginx)، خاموشش کن:\n```bash\nsystemctl stop apache2 2>\u002Fdev\u002Fnull\nsystemctl disable apache2 2>\u002Fdev\u002Fnull\nsystemctl stop nginx 2>\u002Fdev\u002Fnull\n```\n\n### صدور certificate\n\n```bash\n~\u002F.acme.sh\u002Facme.sh --issue -d xray.yourdomain.com --standalone -k ec-256\n```\n\n> جای `xray.yourdomain.com` دامنه‌ی واقعی خودت رو بذار.\n\nخروجی موفق:\n```\nCert success.\nYour cert is in: \u002Froot\u002F.acme.sh\u002Fxray.yourdomain.com_ecc\u002F...\n```\n\n### نصب cert در مسیر Xray\n\n```bash\nmkdir -p \u002Fetc\u002Fxray\n\n~\u002F.acme.sh\u002Facme.sh --install-cert -d xray.yourdomain.com --ecc \\\n  --fullchain-file \u002Fetc\u002Fxray\u002Fcert.pem \\\n  --key-file \u002Fetc\u002Fxray\u002Fkey.pem \\\n  --reloadcmd \"systemctl restart xray\"\n\nchown -R nobody:nogroup \u002Fetc\u002Fxray\nchmod 644 \u002Fetc\u002Fxray\u002Fcert.pem\nchmod 640 \u002Fetc\u002Fxray\u002Fkey.pem\nls -la \u002Fetc\u002Fxray\u002F\n```\n\nباید `cert.pem` و `key.pem` رو ببینی.\n\n---\n\n## مرحله ۶ — کانفیگ Xray با XHTTP\n\n### آماده‌سازی لاگ‌ها\n\n```bash\nmkdir -p \u002Fvar\u002Flog\u002Fxray\ntouch \u002Fvar\u002Flog\u002Fxray\u002Faccess.log \u002Fvar\u002Flog\u002Fxray\u002Ferror.log\nchown -R nobody:nogroup \u002Fvar\u002Flog\u002Fxray\ncp \u002Fusr\u002Flocal\u002Fetc\u002Fxray\u002Fconfig.json \u002Fusr\u002Flocal\u002Fetc\u002Fxray\u002Fconfig.json.bak 2>\u002Fdev\u002Fnull || true\n```\n\n### نوشتن کانفیگ\n\n> 📝 **قبل از پیست**، این مقادیر رو در ذهن داشته باش:\n> - `YOUR-UUID-HERE` → UUID که از `xray uuid` گرفتی\n> - `xray.yourdomain.com` → دامنه‌ی واقعی خودت\n> - `\u002Fyourpath` → یه path دلخواه (مثلاً `\u002Fmyapppath`)\n\n```bash\ncat > \u002Fusr\u002Flocal\u002Fetc\u002Fxray\u002Fconfig.json \u003C\u003C 'EOF'\n{\n  \"log\": {\n    \"loglevel\": \"warning\",\n    \"access\": \"\u002Fvar\u002Flog\u002Fxray\u002Faccess.log\",\n    \"error\": \"\u002Fvar\u002Flog\u002Fxray\u002Ferror.log\"\n  },\n  \"inbounds\": [\n    {\n      \"tag\": \"xhttp-in\",\n      \"listen\": \"0.0.0.0\",\n      \"port\": 2096,\n      \"protocol\": \"vless\",\n      \"settings\": {\n        \"clients\": [\n          { \"id\": \"YOUR-UUID-HERE\", \"flow\": \"\" }\n        ],\n        \"decryption\": \"none\"\n      },\n      \"streamSettings\": {\n        \"network\": \"xhttp\",\n        \"security\": \"tls\",\n        \"tlsSettings\": {\n          \"alpn\": [\"h2\", \"http\u002F1.1\"],\n          \"certificates\": [\n            {\n              \"certificateFile\": \"\u002Fetc\u002Fxray\u002Fcert.pem\",\n              \"keyFile\": \"\u002Fetc\u002Fxray\u002Fkey.pem\"\n            }\n          ]\n        },\n        \"xhttpSettings\": {\n          \"path\": \"\u002Fyourpath\",\n          \"host\": \"xray.yourdomain.com\",\n          \"mode\": \"auto\"\n        }\n      }\n    }\n  ],\n  \"outbounds\": [\n    { \"protocol\": \"freedom\", \"tag\": \"direct\" },\n    { \"protocol\": \"blackhole\", \"tag\": \"blocked\" }\n  ]\n}\nEOF\n```\n\n> ⚠️ بعد از پیست، فایل رو با `nano \u002Fusr\u002Flocal\u002Fetc\u002Fxray\u002Fconfig.json` باز کن و سه مقدار `YOUR-UUID-HERE`, `\u002Fyourpath`, `xray.yourdomain.com` رو با مقادیر واقعی جایگزین کن.\n\n### تست syntax کانفیگ\n\n```bash\nxray -test -config \u002Fusr\u002Flocal\u002Fetc\u002Fxray\u002Fconfig.json\n```\n\nباید ببینی: `Configuration OK.`\n\n### راه‌اندازی Xray\n\n```bash\nsystemctl restart xray\nsystemctl status xray --no-pager\nss -tlnp | grep 2096\n```\n\n### تست محلی\n\n```bash\ncurl -vk https:\u002F\u002F127.0.0.1:2096\u002Fyourpath\n```\n\nاگه `HTTP\u002F2 404` گرفتی → عالیه! (404 طبیعیه چون UUID نفرستادی، یعنی Xray داره کار می‌کنه.)\n\n---\n\n## مرحله ۷ — Deploy روی Vercel\n\nدو روش: **CLI** (سریع‌تر) یا **Dashboard** (با GitHub).\n\n### روش A: Vercel CLI\n\n#### نصب Node.js و Vercel CLI\n\n**🍎 Mac:**\n```bash\n# اگه Homebrew نداری\n\u002Fbin\u002Fbash -c \"$(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FHomebrew\u002Finstall\u002FHEAD\u002Finstall.sh)\"\n\nbrew install node\nsudo npm i -g vercel\nvercel --version\n```\n\n**🐧 Linux (Ubuntu\u002FDebian):**\n```bash\nsudo apt update\nsudo apt install -y nodejs npm\nsudo npm i -g vercel\nvercel --version\n```\n\n**🪟 Windows:**\n\n1. **نصب Node.js:**\n   - برو [nodejs.org](https:\u002F\u002Fnodejs.org)\n   - نسخه‌ی **LTS** رو دانلود کن (فایل `.msi`)\n   - دابل‌کلیک کن، Next تا Finish\n   - حتماً تیک **Add to PATH** فعال باشه\n\n2. **نصب Vercel CLI** (در PowerShell یا Git Bash):\n   ```powershell\n   npm i -g vercel\n   vercel --version\n   ```\n   \n   اگه permission error داد، PowerShell رو **As Administrator** باز کن و دوباره بزن.\n\n#### لاگین به Vercel\n\n**در هر سیستم‌عاملی:**\n```bash\nvercel login\n```\n\nبا فلش `Continue with Email` رو انتخاب کن، ایمیلت رو بزن، روی لینک تأیید کلیک کن.\n\n#### دانلود فایل‌های پروژه\n\n> 🔴 **خیلی مهم — قبل از Deploy حتماً این تغییرات رو انجام بده و کل README رو کامل بخون تا به مشکل نخوری:**\n> \n> - داخل `package.json` مقدارهای زیر رو **حتماً** با یه مقدار دلخواه عوض کن (دقیقاً مثل فایل اصلی نمونه نباشه):\n>   - `\"name\": \"sni-xhttp\"` → مثلا `\"name\": \"my-xhttp-relay\"`\n>   - `\"description\": \"Serverless XHTTP relay for Xray\u002FV2Ray on Vercel (Node.js runtime, 128MB memory)\"` → یه متن دلخواه\u002Fالکی\n> - داخل `vercel.json` مقدار `\"name\": \"sni-xhttp\"` رو هم با یه اسم دلخواه عوض کن.\n> \n> این کار برای اینه که پروژه‌ی تو شبیه نسخه‌های قبلی\u002Fعمومی نباشه.\n\n**روش ۱: clone از گیت‌هاب (پیشنهادی)**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FYOUR-USERNAME\u002FSNI-XHTTP.git\ncd SNI-XHTTP\n```\n\n**روش ۲: دانلود ZIP**\n\nاز صفحه‌ی Release آخرین نسخه رو دانلود کن، unzip کن، و وارد پوشه شو:\n```bash\ncd path\u002Fto\u002FSNI-XHTTP\n```\n\nداخل پوشه باید این فایل‌ها باشن:\n```\napi\u002Findex.js\nvercel.json\npackage.json\n```\n\n#### Link پروژه به Vercel\n\n```bash\nvercel link\n```\n\nسؤالات و جواب‌های پیشنهادی:\n\n| سؤال | جواب |\n|---|---|\n| `Set up \"~\u002Fpath\u002Fto\u002Ffolder\"?` | `yes` |\n| `Which scope should contain your project?` | اکانت خودت رو انتخاب کن |\n| `Link to existing project?` | `no` (برای پروژه‌ی جدید) |\n| `What's your project's name?` | اسم دلخواه (مثلاً `myrelay`) |\n| `In which directory is your code located?` | `.\u002F` |\n| `Want to modify these settings?` | `no` |\n| `Do you want to change additional project settings?` | `no` |\n\n✅ پیغام موفقیت: `Linked to ACCOUNT\u002FPROJECT (created .vercel)`\n\n#### تنظیم Environment Variable\n\n```bash\nvercel env add TARGET_DOMAIN\n```\n\nسؤالات و جواب‌ها:\n\n| سؤال | جواب |\n|---|---|\n| `What's the value of TARGET_DOMAIN?` | `https:\u002F\u002Fxray.yourdomain.com:2096` (دامنه و پورت سرور خودت) |\n| `Add TARGET_DOMAIN to which Environments?` | با Space روی **Production** بزن، بعد Enter |\n| `Make it sensitive?` | `no` |\n\n✅ پیغام موفقیت: `Added Environment Variable TARGET_DOMAIN to Project`\n\n#### Deploy به Production\n\n```bash\nvercel --prod\n```\n\n✅ خروجی موفق:\n```\nProduction: https:\u002F\u002FYOUR-PROJECT.vercel.app\nAliased: https:\u002F\u002FYOUR-PROJECT-ACCOUNT.vercel.app\n```\n\nURL رو یادداشت کن — ازش در کانفیگ کلاینت استفاده می‌کنی.\n\n#### دستورات کاربردی Vercel CLI\n\n| دستور | کار |\n|---|---|\n| `vercel ls` | لیست deployment‌های پروژه |\n| `vercel logs --follow` | دیدن لاگ زنده |\n| `vercel env ls` | لیست environment variables |\n| `vercel env rm TARGET_DOMAIN` | حذف یک env var |\n| `vercel logout` | خروج از اکانت فعلی |\n| `vercel login` | ورود (می‌تونی چند اکانت داشته باشی) |\n\n### روش B: Dashboard (با GitHub)\n\n1. ریپوی این پروژه رو fork یا clone کن و به GitHub خودت push کن.\n2. در [vercel.com\u002Fnew](https:\u002F\u002Fvercel.com\u002Fnew) ریپو رو **Import** کن.\n3. در صفحه‌ی تنظیمات، بخش **Environment Variables**:\n   - `TARGET_DOMAIN` = `https:\u002F\u002Fxray.yourdomain.com:2096`\n4. **Deploy** بزن.\n\n### غیرفعال کردن Deployment Protection\n\nاگه موقع setup گزینه‌ی **Vercel Authentication** رو روشن گذاشتی، باید خاموشش کنی وگرنه relay کار نمی‌کنه:\n\n1. داشبورد Vercel → پروژه → **Settings → Deployment Protection**\n2. **Vercel Authentication** رو روی **Disabled** بذار\n3. **Save**\n\n### تست relay\n\n**🍎 Mac \u002F 🐧 Linux \u002F 🪟 Git Bash \u002F 🪟 PowerShell (Win 10+):**\n```bash\ncurl -I https:\u002F\u002Fyour-project.vercel.app\u002Fyourpath\n```\n\n**🪟 Windows PowerShell (نسخه‌ی native):**\n```powershell\nInvoke-WebRequest -Uri \"https:\u002F\u002Fyour-project.vercel.app\u002Fyourpath\" -Method Head\n```\n\n> 💡 در ویندوز ۱۰+ خود `curl.exe` نصبه و کار می‌کنه.\n\n| خروجی | معنی |\n|---|---|\n| `HTTP\u002F2 404` | ✅ همه چیز درسته |\n| `HTTP\u002F2 401` + HTML login | Deployment Protection روشنه |\n| `HTTP\u002F2 500` | env var ست نشده |\n| `HTTP\u002F2 502` | TARGET_DOMAIN غلطه |\n\n---\n\n## مرحله ۸ — کانفیگ کلاینت\n\n### مقادیر کانفیگ\n\n```\nUUID:        UUID خودت\nAddress:     vercel.com\nPort:        443\nSNI:         vercel.com\nType:        xhttp\nPath:        \u002Fyourpath\nHost:        your-project.vercel.app\nMode:        auto\nTLS:         on\nALPN:        h2\nFingerprint: chrome\n```\n\n### لینک VLESS share\n\n```\nvless:\u002F\u002FYOUR-UUID@vercel.com:443?encryption=none&security=tls&sni=vercel.com&alpn=h2&fp=chrome&type=xhttp&path=%2Fyourpath&host=your-project.vercel.app&mode=auto#Vercel-Relay\n```\n\n> توجه: `\u002F` در path رو با `%2F` encode کن.\n\n### کلاینت‌های پیشنهادی\n\n| پلتفرم | کلاینت |\n|---|---|\n| Windows | **v2rayN** (v6.45+) |\n| Android | **v2rayNG**, **Hiddify** |\n| iOS | **V2Box**, **Streisand** |\n| macOS | **V2Box**, **Hiddify** |\n| Linux | **Hiddify**, **xray-core** |\n\n### نکات تنظیم\n\n- **Core**: حتماً `Xray-core` (نه V2Ray-core، چون XHTTP رو V2Ray ساپورت نمی‌کنه)\n- **Mux**: خاموش (`OFF`)\n- **Routing**: Bypass LAN\u002FIran رو روشن کن\n- **Allow Insecure**: `OFF`\n\n### تست بعد از اتصال\n\nتو مرورگر برو:\n```\nhttps:\u002F\u002Fifconfig.me\n```\n\nباید **IP سرور VPS تو** رو نشون بده، نه IP ایران.\n\n---\n\n## محدودیت‌های Vercel\n\n> ⚠️ این اعداد از مستندات رسمی Vercel در زمان نوشتن این README هستن. ممکنه تغییر کرده باشن — برای آخرین آپدیت [vercel.com\u002Fpricing](https:\u002F\u002Fvercel.com\u002Fpricing) و [vercel.com\u002Fdocs\u002Flimits](https:\u002F\u002Fvercel.com\u002Fdocs\u002Flimits) رو چک کن.\n\n### اعداد عمومی\n\n| محدودیت | Hobby (رایگان) | Pro |\n|---|---|---|\n| **Fast Data Transfer** (کلاینت ↔ Vercel) | ۱۰۰ GB \u002F ماه | ۱ TB \u002F ماه |\n| **Fast Origin Transfer** (Vercel ↔ سرور پشتی) | **۱۰ GB \u002F ماه** | ~۱۰۰ GB \u002F ماه |\n| **Edge Requests** | ۱M \u002F ماه | ۱۰M \u002F ماه |\n| **Function Invocations** | ۱M \u002F ماه | ۱۰M \u002F ماه |\n| **Fluid Active CPU** | ۴ ساعت \u002F ماه | ۴۰ ساعت \u002F ماه |\n| **Fluid Provisioned Memory** | ۳۶۰ GB-hrs \u002F ماه | بیشتر |\n| **Max Duration (per invocation)** | ۶۰ ثانیه | ۳۰۰ ثانیه |\n\n### قیمت و تفاوت پلن‌ها\n\n| پلن | قیمت تقریبی | مناسب برای | رفتار هنگام اتمام سهمیه |\n|---|---|---|---|\n| **Hobby** | رایگان | استفاده شخصی سبک | معمولاً اکانت **pause** می‌شه و باید صبر کنی تا دوره بعدی |\n| **Pro** | از حدود `20$` به‌ازای هر عضو در ماه | استفاده جدی‌تر \u002F تیمی | روی مصرف اضافه، **overage** (هزینه اضافه) محاسبه می‌شه |\n| **Enterprise** | سفارشی | سازمانی \u002F SLA \u002F امنیت پیشرفته | قرارداد و سیاست مصرف اختصاصی |\n\n> 💡 اگر مصرفت نزدیک سقف Hobby می‌رسه (به‌خصوص `Fast Origin Transfer`)، برای پایداری بهتر به `Pro` مهاجرت کن یا چند relay جداگانه داشته باش.\n\n> 📚 منبع رسمی: [Vercel Pricing](https:\u002F\u002Fvercel.com\u002Fpricing)\n\n### 🔴 نکته‌ی خیلی مهم: Fast Origin Transfer\n\nبرای استفاده‌ی **پروکسی\u002Frelay** این مورد بحرانی‌تر از Fast Data Transfer هست!\n\n**هر بایت ترافیک شما دو بار شمرده می‌شه:**\n\n```\n┌─────────┐   Fast Data    ┌────────┐   Fast Origin   ┌───────────┐\n│ کلاینت   │ ─────────────► │ Vercel │ ─────────────► │ Xray سرور │\n│         │   Transfer     │  Edge  │   Transfer      │           │\n└─────────┘                └────────┘                 └───────────┘\n            (سهمیه ۱ — کلاینت)        (سهمیه ۲ — origin)\n```\n\n- ۱ GB دانلود از سمت تو = ۱ GB Fast Data + ۱ GB Fast Origin مصرف می‌شه\n- اگه Fast Origin Transfer به حدش برسه، حساب Hobby ت **pause می‌شه** و باید ۳۰ روز صبر کنی یا upgrade کنی\n\n> 📚 [مستندات Fast Origin Transfer](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fmanage-cdn-usage)\n\n### تخمین مصرف Hobby (محافظه‌کارانه)\n\nبا در نظر گرفتن **هر دو** Fast Data و Fast Origin:\n\n| استفاده | تقریبی |\n|---|---|\n| چت \u002F تلگرام \u002F WhatsApp | عملاً نامحدود |\n| استریم موزیک (Spotify) | عملاً نامحدود |\n| مرور وب عادی | عملاً نامحدود |\n| یوتیوب 720p | ~۵۰ ساعت \u002F ماه |\n| یوتیوب 1080p | ~۲۰-۳۰ ساعت \u002F ماه |\n| یوتیوب 4K \u002F دانلود حجیم | ~۷ ساعت \u002F ماه |\n\n> 💡 برای استفاده‌ی روزمره (چت، مرور، موزیک، ویدیو 720p) Hobby کاملاً کافیه. برای استریم 4K یا دانلود سنگین، یا Pro بگیر یا چند پروژه‌ی Hobby بساز و بین‌شون load balance کن.\n\n---\n\n## بهینه‌سازی هزینه (v1.1)\n\n### مشکل: Provisioned Memory بالا\n\nدر نسخه‌ی قبلی (Edge Runtime)، هر connection همزمان یک **instance جدا** با **~1GB RAM رزرو‌شده** ایجاد می‌کرد. حتی اگه مصرف واقعی هر instance فقط ~350MB بود، **کل 1GB** حساب می‌شد.\n\nمثال واقعی از داشبورد:\n```\n۵ connection همزمان × 1GB × 12 ساعت\u002Fروز = 60 GB-hrs\u002Fروز\n30 روز = 1,800 GB-hrs → خیلی بیشتر از سهمیه 360 GB-hrs!\n```\n\n### راه‌حل v1.1: Node.js Runtime + 128MB Memory\n\n| | v1.0 (Edge) | v1.1 (Node.js) |\n|---|---|---|\n| **Runtime** | Edge (V8 isolate) | Node.js Serverless |\n| **Memory هر instance** | ~1 GB | **128 MB** |\n| **Concurrency** | 1 request\u002Finstance | چند request\u002Finstance (Fluid Compute) |\n| **هزینه Memory تخمینی** | ~$6.75\u002Fperiod | **~$0.50-0.85** |\n| **کاهش** | — | **~8x ارزان‌تر** |\n\n### تنظیمات اعمال‌شده\n\n**`vercel.json`:**\n```json\n\"functions\": {\n  \"api\u002Findex.js\": {\n    \"memory\": 128,\n    \"maxDuration\": 60\n  }\n}\n```\n\n**`api\u002Findex.js`:**\n- `bodyParser: false` → request body بدون buffer stream می‌شه\n- `supportsResponseStreaming: true` → response هم stream می‌شه\n- Fluid Compute concurrency → چند request در یک instance\n\n### بهینه‌سازی اختیاری: محدود کردن XMUX (سمت کلاینت)\n\nبرای کاهش بیشتر تعداد instance‌ها، می‌تونی تو کانفیگ Xray کلاینت (Custom Config) تعداد connection‌های همزمان رو محدود کنی:\n\n```json\n\"xhttpSettings\": {\n  \"path\": \"\u002Fyourpath\",\n  \"host\": \"your-project.vercel.app\",\n  \"mode\": \"auto\",\n  \"xmux\": {\n    \"maxConnections\": 2,\n    \"maxConcurrency\": 16,\n    \"cMaxReuseTimes\": 64\n  }\n}\n```\n\n- **`maxConnections: 2`** → حداکثر ۲ اتصال HTTP همزمان به Vercel\n- **`maxConcurrency: 16`** → هر اتصال تا ۱۶ stream رو multiplex می‌کنه\n\n> ⚠️ در **v2rayNG** و **Hiddify** معمولاً XMUX از GUI قابل تنظیم نیست — باید **Custom Config** استفاده کنی.\n\n### خلاصه‌ی هزینه ماهانه (Pro، 12h\u002Fروز استفاده)\n\n| آیتم | نرخ | v1.0 | v1.1 |\n|---|---|---|---|\n| **Fluid Provisioned Memory** | $0.012\u002FGB-hr | ~$6.75 | **~$0.50** |\n| **Fluid Active CPU** | $0.14\u002Fhr | ~$1.50 | ~$1.50 |\n| **Function Invocations** | $0.60\u002F1M | ~$0.60 | ~$0.60 |\n| **Fast Origin Transfer** | $0.06\u002FGB | ~$0.57 | ~$0.57 |\n| **جمع** | | **~$10.46** | **~$3.17** |\n\n---\n\n## عیب‌یابی\n\n### مرحله‌ی اول دیباگ — تست URL Vercel\n\n```bash\ncurl -I https:\u002F\u002FYOUR-PROJECT.vercel.app\u002Fyourpath\n```\n\n| خروجی | معنی | راه‌حل |\n|---|---|---|\n| `HTTP\u002F2 404` | ✅ همه چیز درسته (relay آماده‌ست) | کانفیگ کلاینت رو بساز |\n| `HTTP\u002F2 401` + HTML login | Deployment Protection روشنه | بخش بعدی |\n| `HTTP\u002F2 500` | env var ست نشده | بخش `500` |\n| `HTTP\u002F2 502` | TARGET_DOMAIN غلطه | بخش `502` |\n| `ERR_TIMED_OUT` | شبکه به Vercel نمی‌رسه | بخش timeout |\n\n---\n\n### `404 Not Found` (همه چیز 404 می‌ده)\nشاید:\n1. **Rewrite rule مشکل داره.** `vercel.json` رو چک کن:\n   ```json\n   \"rewrites\": [\n     { \"source\": \"\u002F(.*)\", \"destination\": \"\u002Fapi\u002Findex\" }\n   ]\n   ```\n   ⚠️ `destination` باید **بدون `.js`** باشه.\n\n2. **فایل `api\u002Findex.js` deploy نشده.** چک کن:\n   ```bash\n   vercel ls\n   ```\n   و در داشبورد → Deployments → Source ببین فایل آپلود شده.\n\n3. **Redeploy کن:**\n   ```bash\n   vercel --prod\n   ```\n\n---\n\n### `502 Bad Gateway: Tunnel Failed`\nVercel به سرور پشتی نمی‌رسه. چک کن:\n- `TARGET_DOMAIN` دقیقاً درسته (`https:\u002F\u002F...:port`)\n- Xray در سرور بالاست: `systemctl status xray`\n- پورت در فایروال بازه: `ufw status`\n- از روی VPS تست کن: `curl -I https:\u002F\u002Fxray.yourdomain.com:2096`\n\n---\n\n### `500 Misconfigured: TARGET_DOMAIN is not set`\nEnv var ست نشده یا redeploy نشده. بزن:\n```bash\nvercel env ls\nvercel --prod\n```\n\nاگه env var وجود داشت ولی هنوز خطا داد، حذف کن و دوباره اضافه کن:\n```bash\nvercel env rm TARGET_DOMAIN\nvercel env add TARGET_DOMAIN\nvercel --prod\n```\n\n---\n\n### `401 Unauthorized` با HTML login\nVercel Authentication روشنه. در داشبورد → پروژه → **Settings** → **Deployment Protection** → **Vercel Authentication** رو **Disabled** کن → **Save**.\n\nاگه گزینه رو ندیدی، مستقیم برو:\n```\nhttps:\u002F\u002Fvercel.com\u002FACCOUNT\u002FPROJECT\u002Fsettings\u002Fdeployment-protection\n```\n\n---\n\n### `ERR_TIMED_OUT` (سایت اصلاً باز نمی‌شه)\nشبکه‌ی محلی به Vercel نمی‌رسه. تست کن:\n\n```bash\nnslookup YOUR-PROJECT.vercel.app\n```\n\nاگه DNS جواب می‌ده ولی صفحه باز نمی‌شه:\n1. **با VPN امتحان کن** — اگه با VPN کار کرد، ISP محلی فیلتر کرده.\n2. **با دیتای موبایل امتحان کن** — اگه فقط رو Wi-Fi مشکل داره، router یا ISP اون شبکه فیلتر کرده.\n3. **یه Custom Domain به Vercel وصل کن** (Settings → Domains) و در کلاینت همون رو استفاده کن.\n\n---\n\n### `Warning: Provided memory setting in vercel.json is ignored on Active CPU billing`\nاین یه warning هست، نه خطا. اکانتت روی **Active CPU billing** هست — Vercel خودش memory رو مدیریت می‌کنه و تنظیم `memory: 128` در `vercel.json` نادیده گرفته می‌شه.\n\nاین warning **بی‌ضرر** هست. می‌تونی:\n- **نادیده بگیری** — کار می‌کنه\n- یا تنظیم `memory` رو از `vercel.json` حذف کنی تا warning نیاد\n\n---\n\n### `Warning: Node.js functions are compiled from ESM to CommonJS`\nاین warning می‌گه `import` syntax داری ولی `package.json` `\"type\": \"module\"` نداره. اضافه کن:\n```json\n{\n  \"type\": \"module\",\n  ...\n}\n```\n\n---\n\n### کلاینت وصل می‌شه ولی ترافیک رد نمی‌شه\n- Mux رو خاموش کن\n- Core رو روی `Xray-core` بذار\n- Routing → Bypass Iran رو فعال کن\n- Path در کلاینت دقیقاً برابر path در سرور Xray باشه\n\n---\n\n### TLS handshake error در کلاینت\n- SNI رو از `vercel.com` به `YOUR-PROJECT.vercel.app` عوض کن\n- ALPN رو فقط `h2` بذار\n- Fingerprint رو `chrome` بذار\n\n---\n\n### کلاینت فقط روی Wi-Fi کار می‌کنه نه دیتای موبایل\nISP موبایل ممکنه `*.vercel.app` رو bottleneck کنه. یه Custom Domain به Vercel وصل کن (Settings → Domains).\n\n---\n\n### `Configuration OK` ولی Xray کرش می‌کنه\nلاگ خطا رو ببین:\n```bash\ntail -50 \u002Fvar\u002Flog\u002Fxray\u002Ferror.log\n```\nمعمولاً مشکل دسترسی فایل cert\u002Fkey. با این درست کن:\n```bash\nchown -R nobody:nogroup \u002Fetc\u002Fxray \u002Fvar\u002Flog\u002Fxray\n```\n\n---\n\n### دیدن لاگ‌های Vercel برای دیباگ زنده\n```bash\nvercel logs --follow\n```\nبعد از باز شدن، یه request از کلاینت بزن — هر خطا یا output در لاگ ظاهر می‌شه.\n\n---\n\n## سوالات متداول\n\n### آیا می‌تونم با Cloudflare به‌جای Vercel این کار رو بکنم؟\nبله، ولی با کد متفاوت (Cloudflare Workers). برای WebSocket، Cloudflare Workers بهتره. برای XHTTP، Vercel به‌خاطر streaming WebStreams پایدارتره.\n\n### اگه `*.vercel.app` در ایران فیلتر بشه؟\nیه دامنه‌ی شخصی به Vercel وصل کن (Settings → Domains → Add). بعد در کلاینت `host` و `address` رو همون بذار.\n\n### چند کاربر می‌تونن همزمان وصل بشن؟\nمحدودیت سختی نیست، ولی برای هر کاربر یه UUID جدا بساز:\n```json\n\"clients\": [\n  { \"id\": \"uuid-1\", \"email\": \"user1@example.com\" },\n  { \"id\": \"uuid-2\", \"email\": \"user2@example.com\" }\n]\n```\n\n### آیا می‌تونم پورت ۲۰۹۶ رو عوض کنم؟\nبله. پورت دلخواه رو در `config.json` بذار، در ufw allow کن، و در `TARGET_DOMAIN` در Vercel همون پورت رو بذار.\n\n### چطور لاگ Vercel رو ببینم؟\n```bash\nvercel logs --follow\n```\nیا در داشبورد → پروژه → **Logs**.\n\n### بعد از تغییر کانفیگ Xray باید چی کار کنم؟\n```bash\nxray -test -config \u002Fusr\u002Flocal\u002Fetc\u002Fxray\u002Fconfig.json\nsystemctl restart xray\n```\n\n### Certificate تمدید خودکار می‌شه؟\nبله. acme.sh یه cron job می‌سازه و هر ۶۰ روز خودکار renew می‌کنه. می‌تونی manual تست کنی:\n```bash\n~\u002F.acme.sh\u002Facme.sh --renew -d xray.yourdomain.com --force --ecc\n```\n\n---\n\n## License\n\nMIT — مثل پروژه‌ی اصلی.\n\n## Disclaimer\n\nاین پروژه برای آموزش و تست شخصیه. مسئولیت استفاده با خودته. قوانین کشور و TOS Vercel رو رعایت کن.\n\n---\n\n## 📢 ارتباط با ما\n\nاگه این راهنما برات مفید بود، یا سوال\u002Fپیشنهاد داری، از طریق کانال تلگرام در ارتباط باش:\n\n\u003Cdiv align=\"center\">\n\n[![Join Telegram](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%D9%87%D9%85%D8%B1%D8%A7%D9%87%20%D9%85%D8%A7%20%D8%B4%D9%88-Avaco%20Cloud-26A5E4?style=for-the-badge&logo=telegram&logoColor=white)](https:\u002F\u002Ft.me\u002Favaco_cloud)\n\n**[https:\u002F\u002Ft.me\u002Favaco_cloud](https:\u002F\u002Ft.me\u002Favaco_cloud)**\n\n*آموزش‌های بیشتر • کانفیگ‌های آپدیت • روش‌های دور زدن سانسور • پشتیبانی*\n\n\u003C\u002Fdiv>\n\n---\n\n⭐ اگه پروژه به دردت خورد، یه **Star** بذار تا بیشتر دیده بشه.\n","SNI-XHTTP 是一个基于 Vercel 无服务器函数运行的中继服务，旨在将 Xray\u002FV2Ray 客户端的 XHTTP 流量转发到后端的 Xray 服务器。该项目利用 Vercel 的全球边缘网络和 `*.vercel.app` 域名来隐藏真实服务器 IP。核心功能包括使用 Node.js 运行时环境，并优化了内存使用，从原来的每实例约 1GB 减少到 128MB，从而显著降低了成本。此项目适用于已经拥有 Xray 服务器且希望采用 XHTTP 协议传输数据并隐藏其服务器 IP 地址的用户，特别适合轻度个人使用场景，如聊天、网页浏览、观看最高至 1080p 的视频等。对于重度流量需求（例如4K流媒体、大文件下载或多人共享）则可能需要考虑升级至 Pro 计划。",2,"2026-06-11 03:59:49","CREATED_QUERY"]