@@ -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)