فارسی | انگلیسی | چینی | اسپانیایی | روسی
یک پنل وب پیشرفته • ساخته شده بر روی هسته Xray این پروژه یک فورک از پنل 3x-ui است.
سلب مسئولیت: این پروژه فقط برای یادگیری و ارتباطات شخصی است، لطفاً از آن برای مقاصد غیرقانونی استفاده نکنید، لطفاً از آن در محیط عملیاتی (production) استفاده نکنید.
اگر این پروژه برای شما مفید بود، ممکن است بخواهید به آن یک ستاره بدهید🌟
USDT(TON): UQDnwbvFLTm1cUWeUn3FFAKgC35wTno9-zOa_ib6STUVSgYf
< (curl -Ls https://raw.githubusercontent.com/AghayeCoder/tx-ui/master/install.sh)برای جزئیات گواهی SSL کلیک کنید
برای مدیریت گواهیهای SSL با استفاده از ACME:
-
اطمینان حاصل کنید که دامنه شما به درستی به سرور متصل شده است.
-
دستور
x-uiرا در ترمینال اجرا کنید، سپسمدیریت گواهی SSLرا انتخاب کنید. -
گزینههای زیر به شما نمایش داده میشود:
- دریافت SSL: دریافت گواهیهای SSL.
- لغو: لغو گواهیهای SSL موجود.
- تمدید اجباری: تمدید اجباری گواهیهای SSL.
- نمایش دامنههای موجود: نمایش تمام گواهیهای دامنه موجود در سرور.
- تنظیم مسیرهای گواهی برای پنل: مشخص کردن گواهی دامنه شما برای استفاده توسط پنل.
برای نصب و استفاده از Certbot:
apt-get install certbot -y
certbot certonly --standalone --agree-tos --register-unsafely-without-email -d yourdomain.com
certbot renew --dry-runاسکریپت مدیریت شامل یک برنامه داخلی برای درخواست گواهی SSL از Cloudflare است. برای استفاده از این اسکریپت جهت درخواست گواهی، به موارد زیر نیاز دارید:
- ایمیل ثبتشده در Cloudflare
- کلید API سراسری (Global API Key) Cloudflare
- نام دامنه باید از طریق Cloudflare به سرور فعلی متصل شده باشد
چگونه کلید API سراسری Cloudflare را دریافت کنیم:
- دستور
x-uiرا در ترمینال اجرا کنید، سپسگواهی SSL کلودفلررا انتخاب کنید. - از این لینک بازدید کنید: توکنهای API کلودفلر.
- روی "View Global API Key" کلیک کنید (تصویر زیر را ببینید):
- ممکن است نیاز به احراز هویت مجدد حساب خود داشته باشید. پس از آن، کلید API نمایش داده خواهد شد (تصویر زیر را ببینید):

هنگام استفاده، فقط نام دامنه، ایمیل، و کلید API خود را وارد کنید. نمودار به شرح زیر است:

برای جزئیات نصب دستی کلیک کنید
- برای دانلود آخرین نسخه بسته فشرده به طور مستقیم روی سرور خود، دستور زیر را اجرا کنید:
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/AghayeCoder/tx-ui/releases/latest/download/x-ui-linux-${XUI_ARCH}.tar.gz- پس از دانلود بسته فشرده، دستورات زیر را برای نصب یا ارتقا x-ui اجرا کنید:
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/
systemctl daemon-reload
systemctl enable x-ui
systemctl restart x-uiبرای جزئیات Docker کلیک کنید
-
نصب Docker:
bash <(curl -sSL https://get.docker.com) -
کلون کردن ریپازیتوری پروژه:
git clone https://github.com/AghayeCoder/tx-ui.git cd tx-ui -
شروع سرویس:
docker compose up -d
فلگ --pull always را اضافه کنید تا داکر در صورت کشیده شدن یک ایمیج جدیدتر، کانتینر را به طور خودکار بازسازی کند.
برای اطلاعات بیشتر به https://docs.docker.com/reference/cli/docker/container/run/#pull مراجعه کنید.
یا
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 tx-ui \
ghcr.io/aghayecoder/tx-ui:latest-
بهروزرسانی به آخرین نسخه:
cd tx-ui docker compose down docker compose pull tx-ui docker compose up -d -
حذف tx-ui از Docker:
docker stop tx-ui docker rm tx-ui cd -- rm -r tx-ui
برای تنظیمات پراکسی معکوس کلیک کنید
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;
}- اطمینان حاصل کنید که "مسیر URI" در تنظیمات پنل
/subیکسان باشد. urlدر تنظیمات پنل باید با/خاتمه یابد.
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;
}- Ubuntu 22.04+
- Debian 12+
- CentOS 8+
- OpenEuler 22.03+
- Fedora 36+
- Arch Linux
- Parch Linux
- Manjaro
- Armbian
- AlmaLinux 9.5+
- Rocky Linux 9.5+
- Oracle Linux 8+
- OpenSUSE Tubleweed
- Amazon Linux 2023
- Windows x64
برای جزئیات معماریها و دستگاههای پشتیبانی شده کلیک کنید
پلتفرم ما با طیف متنوعی از معماریها و دستگاهها سازگاری دارد و انعطافپذیری را در محیطهای مختلف محاسباتی تضمین میکند. معماریهای کلیدی که ما پشتیبانی میکنیم به شرح زیر است:
-
amd64: این معماری رایج، استاندارد کامپیوترهای شخصی و سرورها است و اکثر سیستمعاملهای مدرن را به راحتی پشتیبانی میکند.
-
x86 / i386: این معماری که به طور گسترده در کامپیوترهای رومیزی و لپتاپها استفاده میشود، از پشتیبانی وسیع سیستمعاملها و برنامههای کاربردی متعددی از جمله، اما نه محدود به، سیستمهای ویندوز، macOS و لینوکس برخوردار است.
-
armv8 / arm64 / aarch64: این معماری که برای دستگاههای موبایل و توکار (embedded) امروزی مانند گوشیهای هوشمند و تبلتها طراحی شده است، در دستگاههایی مانند Raspberry Pi 4، Raspberry Pi 3، Raspberry Pi Zero 2/Zero 2 W، Orange Pi 3 LTS و غیره به کار رفته است.
-
armv7 / arm / arm32: این معماری که برای دستگاههای موبایل و توکار قدیمیتر استفاده میشود، همچنان به طور گسترده در دستگاههایی مانند Orange Pi Zero LTS، Orange Pi PC Plus، Raspberry Pi 2 و غیره کاربرد دارد.
-
armv6 / arm / arm32: این معماری که برای دستگاههای توکار بسیار قدیمی طراحی شده، با وجود رواج کمتر، هنوز هم در حال استفاده است. دستگاههایی مانند Raspberry Pi 1، Raspberry Pi Zero/Zero W از این معماری استفاده میکنند.
-
armv5 / arm / arm32: یک معماری قدیمیتر که عمدتاً با سیستمهای توکار اولیه مرتبط است، امروزه کمتر رایج است اما ممکن است هنوز در دستگاههای قدیمی مانند نسخههای اولیه Raspberry Pi و برخی گوشیهای هوشمند قدیمیتر یافت شود.
-
s390x: این معماری معمولاً در کامپیوترهای مینفریم IBM استفاده میشود و عملکرد و قابلیت اطمینان بالایی را برای بارهای کاری سازمانی ارائه میدهد.
- عربی
- انگلیسی
- فارسی
- چینی سنتی
- چینی سادهشده
- ژاپنی
- روسی
- ویتنامی
- اسپانیایی
- اندونزیایی
- اوکراینی
- ترکی
- پرتغالی (برزیل)
- نصب پنل با Force HTTPs
- نظارت بر وضعیت سیستم
- جستجو در میان تمام ورودیها و کلاینتها
- تم تاریک/روشن
- پشتیبانی از چند کاربر و چند پروتکل
- پشتیبانی از پروتکلها، از جمله VMESS، VLESS، Trojan، Shadowsocks، Dokodemo-door، Socks، HTTP، wireguard
- پشتیبانی از پروتکلهای بومی XTLS، از جمله RPRX-Direct، Vision، REALITY
- آمار ترافیک، محدودیت ترافیک، محدودیت زمان انقضا
- قالبهای قابل تنظیم پیکربندی Xray
- پشتیبانی از دسترسی به پنل با HTTPS (دامنه و گواهی SSL توسط خودتان ارائه میشود)
- پشتیبانی از درخواست گواهی SSL با یک کلیک و تمدید خودکار
- برای موارد پیکربندی پیشرفتهتر، لطفاً به پنل مراجعه کنید
- رفع مسیرهای API (تنظیمات کاربر با API ایجاد خواهد شد)
- پشتیبانی از تغییر تنظیمات بر اساس موارد مختلف ارائه شده در پنل
- پشتیبانی از صادرات/واردات پایگاه داده از پنل
- بهروزرسان داخلی برنامه
برای جزئیات تنظیمات پیشفرض کلیک کنید
اگر این تنظیمات را تغییر ندهید، به صورت تصادفی ایجاد خواهند شد (این مورد برای Docker صدق نمیکند).
تنظیمات پیشفرض برای Docker:
- نام کاربری: admin
- رمز عبور: admin
- پورت: 2053
شما میتوانید به راحتی پشتیبانگیری و بازیابی پایگاه داده را مستقیماً از پنل انجام دهید.
- مسیر پایگاه داده:
- /etc/x-ui/x-ui.db
-
بازنشانی مسیر پایه وب:
- ترمینال خود را باز کنید.
- دستور
x-uiرا اجرا کنید. - گزینه
بازنشانی مسیر پایه وبرا انتخاب کنید.
-
ایجاد یا سفارشیسازی مسیر:
- مسیر به صورت تصادفی ایجاد میشود، یا میتوانید یک مسیر سفارشی وارد کنید.
-
مشاهده تنظیمات فعلی:
- برای مشاهده تنظیمات فعلی خود، از دستور
x-ui settingsدر ترمینال یامشاهده تنظیمات فعلیدرx-uiاستفاده کنید.
- برای مشاهده تنظیمات فعلی خود، از دستور
- برای امنیت بیشتر، از یک کلمه طولانی و تصادفی در ساختار URL خود استفاده کنید.
مثالها:
http://ip:port/*webbasepath*/panelhttp://domain:port/*webbasepath*/panel
برای جزئیات محدودیت IP کلیک کنید
توجه: محدودیت IP هنگام استفاده از تونل IP به درستی کار نخواهد کرد.
برای فعال کردن قابلیت محدودیت IP، باید fail2ban و فایلهای مورد نیاز آن را با دنبال کردن این مراحل نصب کنید:
-
دستور
x-uiرا در ترمینال اجرا کنید، سپسمدیریت محدودیت IPرا انتخاب کنید. -
گزینههای زیر را مشاهده خواهید کرد:
- تغییر مدت زمان مسدودیت: تنظیم مدت زمان مسدودیتها.
- رفع مسدودیت همه: لغو تمام مسدودیتهای فعلی.
- بررسی لاگها: بازبینی لاگها.
- وضعیت Fail2ban: بررسی وضعیت
fail2ban. - راهاندازی مجدد Fail2ban: راهاندازی مجدد سرویس
fail2ban. - حذف Fail2ban: حذف Fail2ban به همراه تنظیمات.
-
یک مسیر برای لاگ دسترسی در پنل با تنظیم
Xray Configs/log/Access logبه./access.logاضافه کنید، سپس ذخیره کرده و xray را مجدداً راهاندازی کنید.
برای جزئیات ربات تلگرام کلیک کنید
پنل وب از طریق ربات تلگرام از گزارش ترافیک روزانه، ورود به پنل، پشتیبانگیری از پایگاه داده، وضعیت سیستم، اطلاعات کاربر و سایر اعلانها و عملکردها پشتیبانی میکند. برای استفاده از ربات، باید پارامترهای مربوط به ربات را در پنل تنظیم کنید، از جمله:
- توکن تلگرام
- شناسه چت ادمین(ها)
- زمان اعلان (با سینتکس cron)
- اعلان تاریخ انقضا
- اعلان سقف ترافیک
- پشتیبانگیری از پایگاه داده
- اعلان بار CPU
سینتکس مرجع:
30 * * * * *- اعلان در ثانیه ۳۰ هر دقیقه0 */10 * * * *- اعلان در ثانیه اول هر ۱۰ دقیقه@hourly- اعلان ساعتی@daily- اعلان روزانه (ساعت ۰۰:۰۰ بامداد)@weekly- اعلان هفتگی@every 8h- اعلان هر ۸ ساعت
- گزارش دورهای
- اعلان ورود
- اعلان آستانه CPU
- آستانه برای زمان انقضا و ترافیک برای گزارش پیشاپیش
- پشتیبانی از منوی گزارش کلاینت در صورتی که نام کاربری تلگرام کلاینت به تنظیمات کاربر اضافه شده باشد
- پشتیبانی از گزارش ترافیک تلگرام با جستجوی UUID (VMESS/VLESS) یا رمز عبور (TROJAN) - به صورت ناشناس
- ربات مبتنی بر منو
- جستجوی کلاینت با ایمیل (فقط ادمین)
- بررسی تمام ورودیها
- بررسی وضعیت سرور
- بررسی کاربران منقضی شده
- دریافت پشتیبان بر اساس درخواست و در گزارشهای دورهای
- ربات چند زبانه
-
Botfather را در حساب تلگرام خود شروع کنید:

-
یک ربات جدید با استفاده از دستور /newbot ایجاد کنید: از شما ۲ سوال پرسیده میشود، یک نام و یک نام کاربری برای ربات شما. توجه داشته باشید که نام کاربری باید با کلمه "bot" خاتمه یابد.

-
رباتی را که تازه ایجاد کردهاید، شروع کنید. میتوانید لینک ربات خود را اینجا پیدا کنید.

-
وارد پنل خود شوید و تنظیمات ربات تلگرام را مانند زیر پیکربندی کنید:

توکن ربات خود را در فیلد ورودی شماره ۳ وارد کنید. شناسه کاربری را در فیلد ورودی شماره ۴ وارد کنید. حسابهای تلگرامی با این شناسه، ادمین ربات خواهند بود. (میتوانید بیش از یک شناسه وارد کنید، فقط آنها را با , جدا کنید)
- چگونه شناسه کاربری تلگرام را دریافت کنیم؟ از این ربات استفاده کنید، ربات را شروع کنید و
شناسه کاربری تلگرام را به شما خواهد داد.

برای جزئیات مسیرهای API کلیک کنید
- مستندات API
/loginبا دادههای کاربرPOST:{username: '', password: ''}برای ورود/panel/api/inboundsپایه برای اقدامات زیر:
| متد | مسیر | عمل |
|---|---|---|
GET |
"/list" |
دریافت تمام ورودیها |
GET |
"/get/:id" |
دریافت ورودی با inbound.id |
GET |
"/getClientTraffics/:email" |
دریافت ترافیکهای کلاینت با ایمیل |
GET |
"/getClientTrafficsById/:id" |
دریافت ترافیک کلاینت با شناسه |
GET |
"/createbackup" |
ربات تلگرام پشتیبان را برای ادمینها ارسال میکند |
POST |
"/add" |
افزودن ورودی |
POST |
"/del/:id" |
حذف ورودی |
POST |
"/update/:id" |
بهروزرسانی ورودی |
POST |
"/clientIps/:email" |
آدرس IP کلاینت |
POST |
"/clearClientIps/:email" |
پاک کردن آدرس IP کلاینت |
POST |
"/addClient" |
افزودن کلاینت به ورودی |
POST |
"/:id/delClient/:clientId" |
حذف کلاینت با clientId* |
POST |
"/updateClient/:clientId" |
بهروزرسانی کلاینت با clientId* |
POST |
"/updateClientTraffic/:email" |
بهروزرسانی ترافیک کلاینت با ایمیل، مقادیر به بایت هستند |
POST |
"/:id/resetClientTraffic/:email" |
بازنشانی ترافیک کلاینت |
POST |
"/resetAllTraffics" |
بازنشانی ترافیک تمام ورودیها |
POST |
"/resetAllClientTraffics/:id" |
بازنشانی ترافیک تمام کلاینتها در یک ورودی |
POST |
"/delDepletedClients/:id" |
حذف کلاینتهای منقضی شده ورودی (-1: همه) |
POST |
"/onlines" |
دریافت کاربران آنلاین (لیست ایمیلها) |
POST |
"/depleted" |
دریافت کاربران منقضی شده (لیست ایمیلها) |
POST |
"/disabled" |
دریافت کاربران غیرفعال (لیست ایمیلها) |
-
فیلد
clientIdباید با موارد زیر پر شود: -
client.idبرای VMESS و VLESS -
client.passwordبرای TROJAN -
client.emailبرای Shadowsocks ./panel/api/serverپایه برای اقدامات زیر:
| متد | مسیر | عمل |
|---|---|---|
GET |
"/status" |
دریافت وضعیت سرور |
GET |
"/restartXrayService" |
راهاندازی مجدد هسته xray |
برای جزئیات متغیرهای محیطی کلیک کنید
| متغیر | نوع | پیشفرض |
|---|---|---|
| XUI_LOG_LEVEL | "debug" | "info" | "warn" | "error" | "info" |
| XUI_DEBUG | boolean |
false |
| XUI_BIN_FOLDER | string |
"bin" |
| XUI_DB_FOLDER | string |
"/etc/x-ui" |
| XUI_LOG_FOLDER | string |
"/var/log" |
مثال:
XUI_BIN_FOLDER="bin" XUI_DB_FOLDER="/etc/x-ui" go build main.goمیتوانید از این ریپازیتوری برای ایجاد یک رابط کاربری اشتراک برای پنل خود استفاده کنید TX-UI Theming Hub
- از @Incognito-Coder برای مشارکت او در این پروژه
- تشکر ویژه از تمام مشارکتکنندگان
- Iran v2ray rules (مجوز: GPL-3.0): قوانین مسیریابی پیشرفته v2ray/xray و v2ray/xray-clients با دامنههای ایرانی داخلی و تمرکز بر امنیت و مسدود کردن تبلیغات.
- Russia v2ray rules (مجوز: GPL-3.0): این ریپازیتوری شامل قوانین مسیریابی V2Ray است که به طور خودکار بر اساس دادههای دامنهها و آدرسهای مسدود شده در روسیه بهروز میشود.