[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) | [Türkçe](/README.tr_TR.md)

3x-ui

Build GO Version License

**این یک فورک شخصی از [3X-UI](https://github.com/MHSanaei/3x-ui) است** — پنل کنترل وب پیشرفته و متن‌باز برای [Xray-core](https://github.com/XTLS/Xray-core) — با یک افزوده‌ی اصلی: **پشتیبانی نیتیو از AmneziaWG**، به‌عنوان یک پروتکل کاملاً درجه‌یک در کنار VLESS، VMess، Trojan و بقیه. هر چیز دیگری که 3X-UI از قبل انجام می‌داد (اینباندهای چندپروتکلی، حسابداری ترافیک به‌ازای هر کلاینت، سابسکریپشن‌ها، چند نود، ربات تلگرام) بدون تغییر باقی مانده و دقیقاً مثل نسخه‌ی اصلی کار می‌کند. این فورک برای اجرا روی روترها و سرورهای شخصی نویسنده ساخته شده است؛ قصد جایگزینی یا رقابت با پروژه‌ی اصلی را ندارد. اگر به‌دنبال پنل همه‌منظوره هستید، به [MHSanaei/3x-ui](https://github.com/MHSanaei/3x-ui) مراجعه کنید — همه‌ی مطالب زیر فقط تفاوت‌های این فورک را مستند می‌کند. > [!IMPORTANT] > این پروژه فقط برای استفاده‌ی شخصی در نظر گرفته شده است. لطفاً از آن برای اهداف غیرقانونی یا در محیط تولید (production) استفاده نکنید. ## تفاوت این فورک: AmneziaWG [AmneziaWG](https://github.com/amnezia-vpn/amneziawg-linux-kernel-module) نسخه‌ای از WireGuard است با یک لایه‌ی مبهم‌سازی اضافه (بسته‌های زباله، پدینگ تصادفی، بازنویسی سرآیندهای جادویی) که برای شکست دادن اثرانگشت‌گیری پروتکل مبتنی بر DPI طراحی شده — همان تونل، اما تونلی که روی سیم شبیه تونل به نظر نمی‌رسد. - **نیتیو، نه Docker.** AmneziaWG به‌عنوان یک اینترفیس واقعی کرنل روی هاست اجرا می‌شود، با `awg-quick`/`awg` بالا و پایین می‌آید — همان رویکرد ماژول کرنل DKMS که یک اینترفیس نیتیو `wg0` دارد. هیچ کانتینر سایدکار ممتازی لازم نیست. - **یک پروتکل درجه‌یک.** یک اینباند AmneziaWG در همان جدول `Inbound` بقیه‌ی موارد زندگی می‌کند، پس bulk-operations، مودال QR/دانلود کانفیگ و لینک‌های سابسکریپشن را رایگان دریافت می‌کند — چیز جدیدی برای یادگیری نیست. - **مبهم‌سازی کامل AmneziaWG 2.0** — ‏Jc/Jmin/Jmax (بسته‌های زباله)، S1–S4 (پدینگ بسته)، H1–H4 (سرآیندهای جادویی) و بسته‌ی امضای I1، همه به‌ازای هر اینباند با یک دکمه‌ی تصادفی‌سازی یک‌کلیکی قابل ویرایش‌اند، به‌علاوه‌ی یک حالت سازگار با 1.x برای کلاینت‌های قدیمی‌تر. - **‏IPv6 نیتیو**، با پراکسی NDP به‌ازای هر کلاینت تا هر پیر یک آدرس IPv6 مستقیماً در دسترس داشته باشد — بدون NAT66. - **پروبرت پورت به‌ازای هر کلاینت** — DNAT کردن پورت‌ها/محدوده‌های مشخص مستقیماً به آدرس تونل یک پیر. - **مسیریابی ترافیک یک کلاینت از طریق Xray** — هر اینباند AmneziaWG به‌طور خودکار پل loopback مخصوص به خودش را در Xray دریافت می‌کند (بدون هیچ سوئیچی)؛ مسیریابی ترافیک هر کلاینت به هر outbound پیکربندی‌شده در Xray از طریق صفحه‌ی «مسیریابی» موجود در پنل انجام می‌شود، دقیقاً مثل مسیریابی هر پروتکل دیگر. - **‏`install.sh` ماژول کرنل را برایتان نصب می‌کند** روی Ubuntu/Debian/Armbian (`ppa:amnezia/ppa`)، با یک fallback برای سایر توزیع‌ها. یک کار که نمی‌تواند برایتان انجام دهد: **غیرفعال کردن Secure Boot** روی VPS/VM‌تان از قبل — یک ماژول ساخته‌شده با DKMS امضا نشده است و کرنل تا زمانی که Secure Boot فعال باشد از بارگذاری آن خودداری می‌کند. - تطبیق (reconcile) دقیقاً مثل نحوه‌ی مدیریت سایدکار `mtg` توسط [`internal/mtproto`](internal/mtproto) انجام می‌شود: یک جاب پس‌زمینه اینترفیس در حال اجرا را با آنچه در پایگاه‌داده ذخیره شده هماهنگ نگه می‌دارد، و تغییرات پیر را از طریق `awg syncconf` به‌جای ری‌استارت کامل اینترفیس، در جایی که ممکن باشد، اعمال می‌کند. ## ویژگی‌ها - **اینباندهای چندپروتکلی** — VLESS، VMess، Trojan، Shadowsocks، WireGuard، **AmneziaWG**، Hysteria2، HTTP، SOCKS (Mixed)، Dokodemo-door / Tunnel و TUN. - **ترنسپورت‌ها و امنیت مدرن** — TCP (Raw)، mKCP، WebSocket، gRPC، HTTPUpgrade و XHTTP، ایمن‌شده با TLS، XTLS و REALITY. - **فال‌بک (Fallback)** — ارائه‌ی چند پروتکل روی یک پورت واحد (مثلاً VLESS و Trojan روی پورت 443) با استفاده از قابلیت fallback در Xray. - **مدیریت به‌ازای هر کلاینت** — سهمیه‌ی ترافیک، تاریخ انقضا، محدودیت IP، وضعیت آنلاینِ زنده و لینک‌های اشتراک‌گذاری، کدهای QR و سابسکریپشن‌ها با یک کلیک. - **آمار ترافیک** — به‌ازای هر اینباند، هر کلاینت و هر اوتباند، همراه با کنترل بازنشانی (reset). - **پشتیبانی از چند نود** — مدیریت و مقیاس‌دهی روی چندین سرور از یک پنل واحد. - **اوتباند و مسیریابی** — WARP، NordVPN، قوانین مسیریابی سفارشی، متعادل‌کننده‌های بار (load balancer) و زنجیره‌کردن پراکسی اوتباند. - **سرور سابسکریپشن داخلی** با چندین فرمت خروجی و [قالب‌های صفحه‌ی سفارشی](docs/custom-subscription-templates.md). - **ربات تلگرام** برای نظارت و مدیریت از راه دور. - **‏RESTful API** همراه با مستندات Swagger درون‌پنل. - **ذخیره‌سازی منعطف** — SQLite (پیش‌فرض) یا PostgreSQL. - **‏۱۳ زبان رابط کاربری** با تم‌های تیره و روشن. - **یکپارچگی با Fail2ban** برای اعمال محدودیت IP به‌ازای هر کلاینت. ## اسکرین‌شات‌ها
برای باز شدن کلیک کنید Overview Inbounds Add client Configs
## شروع سریع ```bash curl -fsSL https://raw.githubusercontent.com/Kuzz007/3x-ui/main/install.sh | bash ``` برای نصب یک نسخه‌ی مشخص، تگ آن را اضافه کنید (مثلاً `v3.5.0-awg.1`): ```bash curl -fsSL https://raw.githubusercontent.com/Kuzz007/3x-ui/main/install.sh | bash -s v3.5.0-awg.1 ``` برای نصب بیلد غلتانِ **dev** (آخرین پیش‌انتشار بر اساس هر commit از `main`، نه یک نسخه‌ی پایدار)، مقدار `dev` را پاس بدهید: ```bash curl -fsSL https://raw.githubusercontent.com/Kuzz007/3x-ui/main/install.sh | bash -s dev ``` انتشارهای پایدار خودِ این فورک با تگ `<نسخه‌ی پایه‌ی آپستریم>-awg.N` مشخص می‌شوند (مثلاً `v3.5.0-awg.1`، ساخته‌شده روی چیزی که آپستریم آن را `v3.5.0` می‌نامد) — هرگز یک `vX.Y.Z` ساده نیست — تا هرگز با یک انتشار واقعی از MHSanaei/3x-ui با همان شماره اشتباه گرفته نشود. در حین نصب، یک نام کاربری، رمز عبور و مسیر دسترسی تصادفی تولید می‌شود. پس از نصب، دستور `x-ui` را اجرا کنید تا منوی مدیریت باز شود؛ در آنجا می‌توانید سرویس را شروع/متوقف کنید، اطلاعات ورود خود را ببینید یا بازنشانی کنید، گواهی‌های SSL را مدیریت کنید و کارهای دیگری انجام دهید. برای مستندات کامل پنل فراتر از آنچه در این README آمده، به [ویکی پروژه‌ی اصلی](https://github.com/MHSanaei/3x-ui/wiki) مراجعه کنید — هیچ‌کدام مختص این فورک نیست، پس همچنان کاربرد دارد. ### نصب بدون نظارت نصب‌کننده به‌صورت **غیرتعاملی** نیز برای cloud-init اجرا می‌شود. ‏`XUI_NONINTERACTIVE=1` را تنظیم کنید (یا بدون TTY از طریق pipe اجرا کنید) تا نصب به‌صورت سرتاسری و بدون هیچ پرسشی انجام شود، اطلاعات ورود تصادفی تولید کرده و آن‌ها را در `/etc/x-ui/install-result.env` می‌نویسد. برای موارد زیر به [`deploy/`](deploy/) مراجعه کنید: - [user-data مربوط به Cloud-init](deploy/cloud-init/) — نصب بدون نظارت روی هر ابری (Hetzner/AWS/DO/Vultr/GCP/Azure/Oracle) - [یادداشت‌های Hetzner Cloud](deploy/marketplace/hetzner/) — استقرار مبتنی بر cloud-init روی Hetzner ## پلتفرم‌های پشتیبانی‌شده **سیستم‌عامل‌ها:** Ubuntu، Debian، Armbian، Fedora، CentOS، RHEL، AlmaLinux، Rocky Linux، Oracle Linux، Amazon Linux، Virtuozzo، Arch، Manjaro، Parch، openSUSE (Tumbleweed / Leap) و Alpine. (پروژه‌ی اصلی یک نسخه‌ی Windows نیز منتشر می‌کند؛ CI این فورک این کار را نمی‌کند — همه‌چیز اینجا سرورها/روترهای لینوکسی را هدف قرار می‌دهد، و AmneziaWG در هر صورت به یک ماژول کرنل لینوکس نیاز دارد.) **معماری‌ها:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`. ‏AmneziaWG به‌طور خاص به یک کرنل واقعی لینوکس با ماژول DKMS مربوط به AmneziaWG نیاز دارد — روی Windows بالا نخواهد آمد، و `install_amneziawg` امروز فقط نصب ماژول کرنل را روی Ubuntu/Debian/Armbian خودکار می‌کند (به بخش [تفاوت این فورک](#تفاوت-این-فورک-amneziawg) مراجعه کنید). ## گزینه‌های پایگاه‌داده ‏3X-UI از دو بک‌اند پشتیبانی می‌کند که در حین نصب انتخاب می‌شوند: - **SQLite** (پیش‌فرض) — یک فایل واحد در مسیر `/etc/x-ui/x-ui.db`. بدون نیاز به تنظیمات، ایده‌آل برای استقرارهای کوچک و متوسط. - **PostgreSQL** — برای تعداد کلاینت بالا یا راه‌اندازی‌های چندنودی توصیه می‌شود. نصب‌کننده می‌تواند PostgreSQL را به‌صورت محلی برایتان نصب کند، یا یک DSN به یک سرور موجود را بپذیرد. در زمان اجرا، بک‌اند از طریق متغیرهای محیطی انتخاب می‌شود (نصب‌کننده این موارد را برای شما در `/etc/default/x-ui` می‌نویسد): ``` XUI_DB_TYPE=postgres XUI_DB_DSN=postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable ``` ### انتقال یک نصب موجود SQLite به PostgreSQL ```bash x-ui migrate-db --dsn "postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable" # سپس XUI_DB_TYPE و XUI_DB_DSN را در /etc/default/x-ui تنظیم کرده و ری‌استارت کنید: systemctl restart x-ui ``` فایل اصلی SQLite دست‌نخورده باقی می‌ماند؛ پس از اطمینان از صحت بک‌اند جدید، آن را به‌صورت دستی حذف کنید. ### Docker دستور پیش‌فرض `docker compose up -d` همچنان از SQLite استفاده می‌کند. برای اجرا با سرویس PostgreSQL همراه، دو خط متغیر محیطی `XUI_DB_*` را در `docker-compose.yml` از حالت کامنت خارج کنید و با پروفایل زیر اجرا کنید: ```bash docker compose --profile postgres up -d ``` > [!NOTE] > اینباندهای AmneziaWG به `awg-quick`/`awg` و ماژول کرنل AmneziaWG روی **هاست** نیاز دارند — این دقیقاً همان هدف طراحی بدون Docker است که در بخش [تفاوت این فورک](#تفاوت-این-فورک-amneziawg) توضیح داده شده. اجرای خودِ پنل در Docker همچنان برای هر پروتکل دیگر کار می‌کند، اما یک اینباند AmneziaWG که از یک پنل کانتینری ساخته شده، جایی برای بالا آوردن اینترفیسش ندارد مگر آن‌که کانتینر دسترسی شبکه/کرنل در سطح هاست داشته باشد، که هدف اصلی را زیر سؤال می‌برد. اگر قصد استفاده از AmneziaWG را دارید، به‌صورت نیتیو روی هاست اجرا کنید. این ایمیج، Fail2ban را (که به‌صورت پیش‌فرض فعال است) برای اعمال **محدودیت‌های IP** به‌ازای هر کلاینت همراه دارد. ‏Fail2ban متخلفان را با `iptables` مسدود می‌کند که به مجوز `NET_ADMIN` نیاز دارد. فایل `docker-compose.yml` این مجوز را از قبل از طریق `cap_add` می‌دهد؛ اگر به‌جای آن کانتینر را با `docker run` اجرا می‌کنید، خودتان مجوزها را اضافه کنید، در غیر این صورت مسدودسازی‌ها فقط ثبت می‌شوند اما هرگز اعمال نمی‌شوند: ```bash docker run -d --cap-add=NET_ADMIN --cap-add=NET_RAW ... ghcr.io/mhsanaei/3x-ui ``` ## متغیرهای محیطی | متغیر | توضیحات | پیش‌فرض | | --- | --- | --- | | `XUI_DB_TYPE` | بک‌اند پایگاه‌داده: `sqlite` یا `postgres` | `sqlite` | | `XUI_DB_DSN` | رشته‌ی اتصال PostgreSQL (وقتی `XUI_DB_TYPE=postgres`) | — | | `XUI_DB_FOLDER` | پوشه‌ی فایل پایگاه‌داده‌ی SQLite | `/etc/x-ui` | | `XUI_DB_MAX_OPEN_CONNS` | حداکثر اتصالات باز (استخر PostgreSQL) | — | | `XUI_DB_MAX_IDLE_CONNS` | حداکثر اتصالات بی‌کار (استخر PostgreSQL) | — | | `XUI_INIT_WEB_BASE_PATH` | مسیر URI اولیه برای پنل وب | `/` | | `XUI_ENABLE_FAIL2BAN` | فعال‌سازی اعمال محدودیت IP مبتنی بر Fail2ban | `true` | | `XUI_LOG_LEVEL` | سطح گزارش‌گیری (`debug`، `info`، `warning`، `error`) | `info` | | `XUI_DEBUG` | فعال‌سازی حالت دیباگ | `false` | | `XUI_TUNNEL_HEALTH_MONITOR` | فعال‌سازی پایشگر سلامت تونل (یک URL را پروب می‌کند و پس از خطاهای مکرر، xray را ری‌استارت می‌کند؛ یک ری‌استارت همه‌ی کلاینت‌ها را قطع می‌کند) | `false` | | `XUI_TUNNEL_HEALTH_PROXY` | پراکسی‌ای که پروب از طریق آن ارسال می‌شود؛ آن را به یک اینباند محلی xray اشاره دهید تا پروب خودِ تونل را آزمایش کند (مثلاً `socks5://127.0.0.1:1080`). خالی بودن یعنی پروب فقط اتصال به هاست را بررسی می‌کند | — | | `XUI_TUNNEL_HEALTH_URL` | URL ای که برای سلامت تونل پروب می‌شود | `https://www.cloudflare.com/cdn-cgi/trace` | | `XUI_TUNNEL_HEALTH_INTERVAL` | فاصله‌ی زمانی بین پروب‌ها | `30s` | | `XUI_TUNNEL_HEALTH_TIMEOUT` | مهلت زمانی هر پروب | `10s` | | `XUI_TUNNEL_HEALTH_FAILURES` | تعداد خطاهای متوالی پیش از آن‌که یک ری‌استارت فعال شود | `3` | | `XUI_TUNNEL_HEALTH_COOLDOWN` | حداقل تأخیر بین ری‌استارت‌های متوالی | `5m` | ## زبان‌های پشتیبانی‌شده رابط کاربری پنل به ۱۳ زبان در دسترس است: English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil) ## یادداشت‌های توسعه‌دهنده این یک فورک شخصی است و به‌دنبال مشارکت‌کننده‌ی بیرونی نیست، اما [CONTRIBUTING.md](/CONTRIBUTING.md) همچنان دستورالعمل‌های دقیق و مفیدی برای راه‌اندازی محیط توسعه‌ی محلی (نسخه‌های Go/Node، کامپایلر C مورد نیاز CGo، دستورات build/lint/test) دارد، اگر خودتان روی این کدبیس کار می‌کنید. ## قدردانی این فورک به‌طور کامل بر پایه‌ی [MHSanaei/3x-ui](https://github.com/MHSanaei/3x-ui) ساخته شده — تمام پنل، پشتیبانی چندپروتکلی و معماری زیرین کار خودشان است؛ **پشتیبانی AmneziaWG تنها چیزی است که اینجا اضافه شده.** اگر پروژه‌ی اصلی را مفید یافتید، لینک‌های حمایتی نویسنده‌ی اصلی همچنان مکان درستی برای آن است: Buy Me A Coffee
Crypto donation button by NOWPayments پیاده‌سازی نیتیو AmneziaWG در این فورک برگرفته از/الهام‌گرفته از موارد زیر است: - [MHSanaei/3x-ui#6086](https://github.com/MHSanaei/3x-ui/pull/6086) — پول‌ریکوئست اصلی AmneziaWG علیه پروژه‌ی اصلی (رویکرد Docker-sidecar)؛ این فورک ساختار schema/UI فرانت‌اند آن را دوباره استفاده می‌کند اما بک‌اند را با یک مدیر نیتیو و بدون Docker جایگزین می‌کند. - [coinman-dev/3ax-ui](https://github.com/coinman-dev/3ax-ui) — یک فورک مستقل که از قبل AmneziaWG نیتیو را در محیط تولید اجرا می‌کند؛ مدیریت فرآیند `awg-quick`، تولید کانفیگ و تولیدکننده‌ی پارامتر مبهم‌سازی AmneziaWG 2.0 این فورک از پکیج `awg/` آن برگرفته شده است. ## تشکر ویژه از - [alireza0](https://github.com/alireza0/) - [Iran v2ray rules](https://github.com/chocolate4u/Iran-v2ray-rules) (مجوز: **GPL-3.0**): _قوانین مسیریابی بهبود یافته v2ray/xray و v2ray/xray-clients با دامنه‌های ایرانی داخلی و تمرکز بر امنیت و مسدود کردن تبلیغات._ - [Russia v2ray rules](https://github.com/runetfreedom/russia-v2ray-rules-dat) (مجوز: **GPL-3.0**): _این مخزن شامل قوانین مسیریابی V2Ray به‌روزرسانی شده خودکار بر اساس داده‌های دامنه‌ها و آدرس‌های مسدود شده در روسیه است._ ## ابزارهای جامعه ابزارها و یکپارچه‌سازی‌هایی که توسط جامعه پیرامون 3x-ui ساخته شده‌اند. - [terraform-provider-3x-ui](https://github.com/batonogov/terraform-provider-threexui) (مجوز: **MIT**): _مدیریت اینباندها، کلاینت‌ها، تنظیمات پنل و پیکربندی Xray به‌صورت کد با Terraform / OpenTofu._