|
@@ -0,0 +1,527 @@
|
|
|
+[English](/README.md) | [فارسی](/README.fa_IR.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md)
|
|
|
+
|
|
|
+<p align="center">
|
|
|
+ <picture>
|
|
|
+ <source media="(prefers-color-scheme: dark)" srcset="./media/3x-ui-dark.png">
|
|
|
+ <img alt="3x-ui" src="./media/3x-ui-light.png">
|
|
|
+ </picture>
|
|
|
+</p>
|
|
|
+
|
|
|
+**یک پنل وب پیشرفته • ساخته شده بر پایه Xray Core**
|
|
|
+
|
|
|
+[](https://github.com/MHSanaei/3x-ui/releases)
|
|
|
+[](#)
|
|
|
+[](#)
|
|
|
+[](#)
|
|
|
+[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
|
|
+
|
|
|
+> **سلب مسئولیت:** این پروژه صرفاً برای اهداف آموزشی و تحقیقاتی است. استفاده از آن برای مقاصد غیرقانونی یا در محیطهای عملیاتی ممنوع است.
|
|
|
+
|
|
|
+**اگر این پروژه برای شما مفید بوده، میتوانید با دادن یک**:star2: از آن حمایت کنید.
|
|
|
+
|
|
|
+<p align="left">
|
|
|
+ <a href="https://buymeacoffee.com/mhsanaei" target="_blank">
|
|
|
+ <img src="./media/buymeacoffe.png" alt="Image">
|
|
|
+ </a>
|
|
|
+</p>
|
|
|
+
|
|
|
+- USDT (TRC20): `TXncxkvhkDWGts487Pjqq1qT9JmwRUz8CC`
|
|
|
+- MATIC (polygon): `0x41C9548675D044c6Bfb425786C765bc37427256A`
|
|
|
+- LTC (Litecoin): `ltc1q2ach7x6d2zq0n4l0t4zl7d7xe2s6fs7a3vspwv`
|
|
|
+
|
|
|
+## نصب و ارتقا
|
|
|
+
|
|
|
+```
|
|
|
+bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
|
|
|
+```
|
|
|
+
|
|
|
+## نصب نسخههای قدیمی (توصیه نمیشود)
|
|
|
+
|
|
|
+برای نصب نسخه خاصی از دستور زیر استفاده کنید. مثال برای نسخه `v1.7.9`:
|
|
|
+
|
|
|
+```
|
|
|
+VERSION=v1.7.9 && bash <(curl -Ls "https://raw.githubusercontent.com/mhsanaei/3x-ui/$VERSION/install.sh") $VERSION
|
|
|
+```
|
|
|
+
|
|
|
+## گواهی SSL
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات گواهی SSL</summary>
|
|
|
+
|
|
|
+### ACME
|
|
|
+
|
|
|
+برای مدیریت گواهیهای SSL با استفاده از ACME:
|
|
|
+
|
|
|
+1. اطمینان حاصل کنید دامنه شما به درستی به سرور متصل است.
|
|
|
+2. دستور `x-ui` را در ترمینال اجرا کرده و گزینه `مدیریت گواهی SSL` را انتخاب کنید.
|
|
|
+3. گزینههای زیر نمایش داده میشوند:
|
|
|
+
|
|
|
+ - **دریافت SSL:** دریافت گواهی SSL
|
|
|
+ - **لغو:** لغو گواهیهای موجود
|
|
|
+ - **تمدید اجباری:** تمدید اجباری گواهیها
|
|
|
+ - **نمایش دامنههای موجود:** نمایش تمام دامنههای دارای گواهی
|
|
|
+ - **تنظیم مسیر گواهی برای پنل:** تنظیم مسیر گواهی برای دامنه شما
|
|
|
+
|
|
|
+### Certbot
|
|
|
+
|
|
|
+نصب و استفاده از Certbot:
|
|
|
+
|
|
|
+```sh
|
|
|
+apt-get install certbot -y
|
|
|
+certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
|
|
|
+certbot renew --dry-run
|
|
|
+```
|
|
|
+
|
|
|
+### Cloudflare
|
|
|
+
|
|
|
+اسکریپت داخلی برای دریافت گواهی SSL از Cloudflare. نیازمند:
|
|
|
+
|
|
|
+- ایمیل ثبتشده در Cloudflare
|
|
|
+- کلید API جهانی Cloudflare
|
|
|
+- دامنه باید از طریق Cloudflare به سرور متصل باشد
|
|
|
+
|
|
|
+**دریافت کلید API جهانی Cloudflare:**
|
|
|
+
|
|
|
+1. دستور `x-ui` را اجرا و گزینه `گواهی SSL کلادفلر` را انتخاب کنید.
|
|
|
+2. به لینک [Cloudflare API Tokens](https://dash.cloudflare.com/profile/api-tokens) مراجعه کنید.
|
|
|
+3. روی "View Global API Key" کلیک کنید:
|
|
|
+ 
|
|
|
+4. پس از احراز هویت، کلید API نمایش داده میشود:
|
|
|
+ 
|
|
|
+
|
|
|
+در هنگام استفاده، نام دامنه، ایمیل و کلید API را وارد کنید:
|
|
|
+ 
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## نصب دستی و ارتقا
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات نصب دستی</summary>
|
|
|
+
|
|
|
+#### استفاده
|
|
|
+
|
|
|
+1. دریافت آخرین نسخه از سرور:
|
|
|
+
|
|
|
+```sh
|
|
|
+ARCH=$(uname -m)
|
|
|
+case "${ARCH}" in
|
|
|
+ x86_64 | x64 | amd64) XUI_ARCH="amd64" ;;
|
|
|
+ i*86 | x86) XUI_ARCH="386" ;;
|
|
|
+ armv8* | armv8 | arm64 | aarch64) XUI_ARCH="arm64" ;;
|
|
|
+ armv7* | armv7) XUI_ARCH="armv7" ;;
|
|
|
+ armv6* | armv6) XUI_ARCH="armv6" ;;
|
|
|
+ armv5* | armv5) XUI_ARCH="armv5" ;;
|
|
|
+ s390x) echo 's390x' ;;
|
|
|
+ *) XUI_ARCH="amd64" ;;
|
|
|
+esac
|
|
|
+
|
|
|
+wget https://github.com/MHSanaei/3x-ui/releases/latest/download/x-ui-linux-${XUI_ARCH}.tar.gz
|
|
|
+```
|
|
|
+
|
|
|
+2. نصب یا ارتقا:
|
|
|
+
|
|
|
+```sh
|
|
|
+ARCH=$(uname -m)
|
|
|
+case "${ARCH}" in
|
|
|
+ x86_64 | x64 | amd64) XUI_ARCH="amd64" ;;
|
|
|
+ i*86 | x86) XUI_ARCH="386" ;;
|
|
|
+ armv8* | armv8 | arm64 | aarch64) XUI_ARCH="arm64" ;;
|
|
|
+ armv7* | armv7) XUI_ARCH="armv7" ;;
|
|
|
+ armv6* | armv6) XUI_ARCH="armv6" ;;
|
|
|
+ armv5* | armv5) XUI_ARCH="armv5" ;;
|
|
|
+ s390x) echo 's390x' ;;
|
|
|
+ *) XUI_ARCH="amd64" ;;
|
|
|
+esac
|
|
|
+
|
|
|
+cd /root/
|
|
|
+rm -rf x-ui/ /usr/local/x-ui/ /usr/bin/x-ui
|
|
|
+tar zxvf x-ui-linux-${XUI_ARCH}.tar.gz
|
|
|
+chmod +x x-ui/x-ui x-ui/bin/xray-linux-* x-ui/x-ui.sh
|
|
|
+cp x-ui/x-ui.sh /usr/bin/x-ui
|
|
|
+cp -f x-ui/x-ui.service /etc/systemd/system/
|
|
|
+mv x-ui/ /usr/local/
|
|
|
+systemctl daemon-reload
|
|
|
+systemctl enable x-ui
|
|
|
+systemctl restart x-ui
|
|
|
+```
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## نصب با Docker
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات Docker</summary>
|
|
|
+
|
|
|
+#### استفاده
|
|
|
+
|
|
|
+1. **نصب Docker:**
|
|
|
+
|
|
|
+ ```sh
|
|
|
+ bash <(curl -sSL https://get.docker.com)
|
|
|
+ ```
|
|
|
+
|
|
|
+2. **کلون پروژه:**
|
|
|
+
|
|
|
+ ```sh
|
|
|
+ git clone https://github.com/MHSanaei/3x-ui.git
|
|
|
+ cd 3x-ui
|
|
|
+ ```
|
|
|
+
|
|
|
+3. **راهاندازی سرویس:**
|
|
|
+
|
|
|
+ ```sh
|
|
|
+ docker compose up -d
|
|
|
+ ```
|
|
|
+
|
|
|
+ یا
|
|
|
+
|
|
|
+ ```sh
|
|
|
+ docker run -itd \
|
|
|
+ -e XRAY_VMESS_AEAD_FORCED=false \
|
|
|
+ -v $PWD/db/:/etc/x-ui/ \
|
|
|
+ -v $PWD/cert/:/root/cert/ \
|
|
|
+ --network=host \
|
|
|
+ --restart=unless-stopped \
|
|
|
+ --name 3x-ui \
|
|
|
+ ghcr.io/mhsanaei/3x-ui:latest
|
|
|
+ ```
|
|
|
+
|
|
|
+4. **بهروزرسانی:**
|
|
|
+
|
|
|
+ ```sh
|
|
|
+ cd 3x-ui
|
|
|
+ docker compose down
|
|
|
+ docker compose pull 3x-ui
|
|
|
+ docker compose up -d
|
|
|
+ ```
|
|
|
+
|
|
|
+5. **حذف:**
|
|
|
+
|
|
|
+ ```sh
|
|
|
+ docker stop 3x-ui
|
|
|
+ docker rm 3x-ui
|
|
|
+ cd --
|
|
|
+ rm -r 3x-ui
|
|
|
+ ```
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## تنظیمات Nginx
|
|
|
+<details>
|
|
|
+ <summary>پیکربندی Reverse Proxy</summary>
|
|
|
+
|
|
|
+#### Nginx Reverse Proxy
|
|
|
+```nginx
|
|
|
+location / {
|
|
|
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
+ proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
+ proxy_set_header Host $http_host;
|
|
|
+ proxy_set_header X-Real-IP $remote_addr;
|
|
|
+ proxy_set_header Range $http_range;
|
|
|
+ proxy_set_header If-Range $http_if_range;
|
|
|
+ proxy_redirect off;
|
|
|
+ proxy_pass http://127.0.0.1:2053;
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### مسیر فرعی در Nginx
|
|
|
+- اطمینان حاصل کنید "URI Path" در تنظیمات پنل یکسان باشد.
|
|
|
+- `url` در تنظیمات پنل باید با `/` پایان یابد.
|
|
|
+
|
|
|
+```nginx
|
|
|
+location /sub {
|
|
|
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
+ proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
+ proxy_set_header Host $http_host;
|
|
|
+ proxy_set_header X-Real-IP $remote_addr;
|
|
|
+ proxy_set_header Range $http_range;
|
|
|
+ proxy_set_header If-Range $http_if_range;
|
|
|
+ proxy_redirect off;
|
|
|
+ proxy_pass http://127.0.0.1:2053;
|
|
|
+}
|
|
|
+```
|
|
|
+</details>
|
|
|
+
|
|
|
+## سیستمعاملهای توصیه شده
|
|
|
+
|
|
|
+- Ubuntu 20.04+
|
|
|
+- Debian 11+
|
|
|
+- CentOS 8+
|
|
|
+- OpenEuler 22.03+
|
|
|
+- Fedora 36+
|
|
|
+- Arch Linux
|
|
|
+- Parch Linux
|
|
|
+- Manjaro
|
|
|
+- Armbian
|
|
|
+- AlmaLinux 8.0+
|
|
|
+- Rocky Linux 8+
|
|
|
+- Oracle Linux 8+
|
|
|
+- OpenSUSE Tubleweed
|
|
|
+- Amazon Linux 2023
|
|
|
+- Windows x64
|
|
|
+
|
|
|
+## معماریها و دستگاههای پشتیبانی شده
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات معماریها و دستگاهها</summary>
|
|
|
+
|
|
|
+- **amd64**: معماری استاندارد برای کامپیوترهای شخصی و سرورها
|
|
|
+- **x86 / i386**: سیستمهای دسکتاپ و لپتاپ
|
|
|
+- **armv8 / arm64 / aarch64**: دستگاههای موبایل و embedded مانند Raspberry Pi 4
|
|
|
+- **armv7 / arm / arm32**: دستگاههای قدیمی مانند Orange Pi Zero
|
|
|
+- **armv6 / arm / arm32**: دستگاههای بسیار قدیمی مانند Raspberry Pi 1
|
|
|
+- **armv5 / arm / arm32**: سیستمهای embedded قدیمی
|
|
|
+- **s390x**: کامپیوترهای IBM mainframe
|
|
|
+</details>
|
|
|
+
|
|
|
+## زبانهای پشتیبانی شده
|
|
|
+
|
|
|
+- انگلیسی
|
|
|
+- فارسی
|
|
|
+- چینی سنتی
|
|
|
+- چینی سادهشده
|
|
|
+- ژاپنی
|
|
|
+- روسی
|
|
|
+- ویتنامی
|
|
|
+- اسپانیایی
|
|
|
+- اندونزیایی
|
|
|
+- اوکراینی
|
|
|
+- ترکی
|
|
|
+- پرتغالی (برزیل)
|
|
|
+
|
|
|
+## ویژگیها
|
|
|
+
|
|
|
+- مانیتورینگ وضعیت سیستم
|
|
|
+- جستجو در بین inboundها و کلاینتها
|
|
|
+- تم تاریک/روشن
|
|
|
+- پشتیبانی از چند کاربر و پروتکل
|
|
|
+- پروتکلهای VMESS، VLESS، Trojan، Shadowsocks، Dokodemo-door، Socks، HTTP، WireGuard
|
|
|
+- پشتیبانی از XTLS شامل RPRX-Direct، Vision، REALITY
|
|
|
+- آمار ترافیک، محدودیت ترافیک، محدودیت زمانی
|
|
|
+- تنظیمات سفارشی Xray
|
|
|
+- پشتیبانی از HTTPS برای پنل
|
|
|
+- دریافت خودکار گواهی SSL
|
|
|
+- مسیرهای API اصلاح شده
|
|
|
+- پشتیبانی از تغییر تنظیمات از طریق پنل
|
|
|
+- امکان export/import دیتابیس
|
|
|
+
|
|
|
+## تنظیمات پیشفرض پنل
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات تنظیمات پیشفرض</summary>
|
|
|
+
|
|
|
+### نام کاربری، رمز عبور، پورت و مسیر وب
|
|
|
+
|
|
|
+در صورت عدم تغییر، این موارد به صورت تصادفی ایجاد میشوند (به جز Docker).
|
|
|
+
|
|
|
+**تنظیمات پیشفرض Docker:**
|
|
|
+- **نام کاربری:** admin
|
|
|
+- **رمز عبور:** admin
|
|
|
+- **پورت:** 2053
|
|
|
+
|
|
|
+### مدیریت دیتابیس:
|
|
|
+
|
|
|
+ امکان Backup و Restore دیتابیس از طریق پنل.
|
|
|
+
|
|
|
+- **مسیر دیتابیس:**
|
|
|
+ - `/etc/x-ui/x-ui.db`
|
|
|
+
|
|
|
+### مسیر پایه وب
|
|
|
+
|
|
|
+1. **بازنشانی مسیر:**
|
|
|
+ - اجرای دستور `x-ui`
|
|
|
+ - انتخاب گزینه `Reset Web Base Path`
|
|
|
+
|
|
|
+2. **ساخت یا تنظیم مسیر:**
|
|
|
+ - مسیر به صورت تصادفی ساخته شده یا قابل تنظیم است
|
|
|
+
|
|
|
+3. **مشاهده تنظیمات فعلی:**
|
|
|
+ - استفاده از دستور `x-ui settings` یا `View Current Settings` در `x-ui`
|
|
|
+
|
|
|
+**توصیه امنیتی:**
|
|
|
+- استفاده از مسیرهای طولانی و تصادفی برای افزایش امنیت
|
|
|
+
|
|
|
+**مثال:**
|
|
|
+- `http://ip:port/*webbasepath*/panel`
|
|
|
+- `http://domain:port/*webbasepath*/panel`
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## پیکربندی WARP
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات WARP</summary>
|
|
|
+
|
|
|
+#### استفاده
|
|
|
+
|
|
|
+**برای نسخههای `v2.1.0` و جدیدتر:**
|
|
|
+
|
|
|
+WARP به صورت داخلی پشتیبانی میشود. تنها نیاز به فعالسازی در پنل است.
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## محدودیت IP
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات محدودیت IP</summary>
|
|
|
+
|
|
|
+#### استفاده
|
|
|
+
|
|
|
+**توجه:** محدودیت IP در صورت استفاده از IP Tunnel کار نمیکند.
|
|
|
+
|
|
|
+- **تا نسخه `v1.6.1`:**
|
|
|
+ - محدودیت IP به صورت داخلی در پنل وجود دارد
|
|
|
+
|
|
|
+**برای نسخههای `v1.7.0` و جدیدتر:**
|
|
|
+
|
|
|
+برای فعالسازی نیاز به نصب `fail2ban` است:
|
|
|
+
|
|
|
+1. اجرای دستور `x-ui` و انتخاب `مدیریت محدودیت IP`
|
|
|
+2. گزینههای موجود:
|
|
|
+
|
|
|
+ - **تغییر مدت زمان Ban**
|
|
|
+ - **حذف تمام Banها**
|
|
|
+ - **مشاهده لاگها**
|
|
|
+ - **وضعیت Fail2ban**
|
|
|
+ - **راهاندازی مجدد Fail2ban**
|
|
|
+ - **حذف Fail2ban**
|
|
|
+
|
|
|
+3. تنظیم مسیر `Access log` در پنل به `./access.log` و ذخیره و راهاندازی مجدد Xray
|
|
|
+
|
|
|
+- **قبل از نسخه `v2.1.3`:**
|
|
|
+ - تنظیم دستی `access.log` در تنظیمات Xray:
|
|
|
+
|
|
|
+ ```sh
|
|
|
+ "log": {
|
|
|
+ "access": "./access.log",
|
|
|
+ "dnsLog": false,
|
|
|
+ "loglevel": "warning"
|
|
|
+ },
|
|
|
+ ```
|
|
|
+
|
|
|
+- **از نسخه `v2.1.3`:**
|
|
|
+ - امکان تنظیم `access.log` از طریق پنل
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## ربات تلگرام
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات ربات تلگرام</summary>
|
|
|
+
|
|
|
+#### استفاده
|
|
|
+
|
|
|
+ربات تلگرام برای اطلاعرسانی ترافیک، ورود به پنل، Backup دیتابیس و ... استفاده میشود. نیازمند تنظیم:
|
|
|
+
|
|
|
+- توکن تلگرام
|
|
|
+- Chat ID ادمینها
|
|
|
+- زمان اطلاعرسانی (Cron syntax)
|
|
|
+- اطلاعرسانی انقضا
|
|
|
+- اطلاعرسانی ترافیک
|
|
|
+- Backup دیتابیس
|
|
|
+- اطلاعرسانی مصرف CPU
|
|
|
+
|
|
|
+**سینتکس نمونه:**
|
|
|
+
|
|
|
+- `30 \* \* \* \* \*` - اطلاع در ثانیه 30 هر دقیقه
|
|
|
+- `@hourly` - هر ساعت
|
|
|
+- `@daily` - هر روز
|
|
|
+
|
|
|
+### ویژگیهای ربات
|
|
|
+
|
|
|
+- گزارش دورهای
|
|
|
+- اطلاع ورود به پنل
|
|
|
+- اطلاع مصرف CPU
|
|
|
+- اطلاع پیشاز موعد انقضا و ترافیک
|
|
|
+- گزارش ترافیک کلاینتها
|
|
|
+- منوی مبتنی بر دستور
|
|
|
+- جستجوی کلاینت بر اساس ایمیل
|
|
|
+- بررسی inboundها
|
|
|
+- بررسی وضعیت سرور
|
|
|
+- دریافت Backup
|
|
|
+- چندزبانه
|
|
|
+
|
|
|
+### راهاندازی ربات
|
|
|
+
|
|
|
+- شروع [Botfather](https://t.me/BotFather) در تلگرام:
|
|
|
+ 
|
|
|
+
|
|
|
+- ساخت ربات جدید با دستور /newbot:
|
|
|
+ 
|
|
|
+
|
|
|
+- شروع ربات ساخته شده:
|
|
|
+ 
|
|
|
+
|
|
|
+- تنظیمات پنل:
|
|
|
+
|
|
|
+
|
|
|
+وارد کردن توکن و Chat ID (دریافت از [این ربات](https://t.me/useridinfobot)):
|
|
|
+
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## مسیرهای API
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات API</summary>
|
|
|
+
|
|
|
+#### استفاده
|
|
|
+
|
|
|
+- [مستندات API](https://www.postman.com/hsanaei/3x-ui/collection/q1l5l0u/3x-ui)
|
|
|
+- `/login` با `POST` داده کاربر: `{username: '', password: ''}`
|
|
|
+
|
|
|
+| Method | مسیر | عملکرد |
|
|
|
+| :----: | ---------------------------------- | ------------------------------------------- |
|
|
|
+| `GET` | `"/list"` | دریافت تمام inboundها |
|
|
|
+| `GET` | `"/get/:id"` | دریافت inbound بر اساس id |
|
|
|
+| `POST` | `"/add"` | افزودن inbound |
|
|
|
+| `POST` | `"/del/:id"` | حذف inbound |
|
|
|
+
|
|
|
+- [<img src="https://run.pstmn.io/button.svg" alt="Run In Postman" style="width: 128px; height: 32px;">](https://app.getpostman.com/run-collection/5146551-dda3cab3-0e33-485f-96f9-d4262f437ac5?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D5146551-dda3cab3-0e33-485f-96f9-d4262f437ac5%26entityType%3Dcollection%26workspaceId%3Dd64f609f-485a-4951-9b8f-876b3f917124)
|
|
|
+</details>
|
|
|
+
|
|
|
+## متغیرهای محیطی
|
|
|
+
|
|
|
+<details>
|
|
|
+ <summary>جزئیات متغیرها</summary>
|
|
|
+
|
|
|
+#### استفاده
|
|
|
+
|
|
|
+| متغیر | نوع | پیشفرض |
|
|
|
+| ------------- | :--------------------------------------------: | :------------ |
|
|
|
+| XUI_LOG_LEVEL | `"debug"` \| `"info"` \| `"warn"` \| `"error"` | `"info"` |
|
|
|
+| XUI_DEBUG | `boolean` | `false` |
|
|
|
+| XUI_BIN_FOLDER| `string` | `"bin"` |
|
|
|
+
|
|
|
+مثال:
|
|
|
+
|
|
|
+```sh
|
|
|
+XUI_BIN_FOLDER="bin" XUI_DB_FOLDER="/etc/x-ui" go build main.go
|
|
|
+```
|
|
|
+
|
|
|
+</details>
|
|
|
+
|
|
|
+## پیشنمایش
|
|
|
+
|
|
|
+<picture>
|
|
|
+ <source media="(prefers-color-scheme: dark)" srcset="./media/01-overview-dark.png">
|
|
|
+ <img alt="3x-ui" src="./media/01-overview-light.png">
|
|
|
+</picture>
|
|
|
+<picture>
|
|
|
+ <source media="(prefers-color-scheme: dark)" srcset="./media/02-inbounds-dark.png">
|
|
|
+ <img alt="3x-ui" src="./media/02-inbounds-light.png">
|
|
|
+</picture>
|
|
|
+
|
|
|
+## قدردانی ویژه از
|
|
|
+
|
|
|
+- [alireza0](https://github.com/alireza0/)
|
|
|
+
|
|
|
+## تشکر و قدردانی
|
|
|
+
|
|
|
+- [Iran v2ray rules](https://github.com/chocolate4u/Iran-v2ray-rules) (مجوز: **GPL-3.0**)
|
|
|
+- [Russia v2ray rules](https://github.com/runetfreedom/russia-v2ray-rules-dat) (مجوز: **GPL-3.0**)
|
|
|
+
|
|
|
+## Stargazers over Time
|
|
|
+
|
|
|
+[](https://starchart.cc/MHSanaei/3x-ui)
|