diff --git a/README.ar_EG.md b/README.ar_EG.md index 45858626..d031e392 100644 --- a/README.ar_EG.md +++ b/README.ar_EG.md @@ -7,29 +7,143 @@

-[![Release](https://img.shields.io/github/v/release/mhsanaei/3x-ui.svg)](https://github.com/MHSanaei/3x-ui/releases) -[![Build](https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg)](https://github.com/MHSanaei/3x-ui/actions) -[![GO Version](https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg)](#) -[![Downloads](https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg)](https://github.com/MHSanaei/3x-ui/releases/latest) -[![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) -[![Go Reference](https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg)](https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3) -[![Go Report Card](https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3)](https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3) +

+ Release + Build + GO Version + Downloads + License + Go Reference + Go Report Card +

-**3X-UI** — لوحة تحكم متقدمة مفتوحة المصدر تعتمد على الويب مصممة لإدارة خادم Xray-core. توفر واجهة سهلة الاستخدام لتكوين ومراقبة بروتوكولات VPN والوكيل المختلفة. +**3X-UI** هي لوحة تحكم ويب متقدمة ومفتوحة المصدر لإدارة خوادم [Xray-core](https://github.com/XTLS/Xray-core). توفّر واجهة نظيفة ومتعددة اللغات لنشر وتكوين ومراقبة مجموعة واسعة من بروتوكولات الوكيل وVPN — من خادم VPS واحد إلى عمليات النشر متعددة العقد. + +تم بناء 3X-UI كنسخة محسّنة (fork) من مشروع X-UI الأصلي، وتضيف دعمًا أوسع للبروتوكولات، واستقرارًا محسّنًا، ومحاسبة للترافيك لكل عميل، والعديد من ميزات تحسين تجربة الاستخدام. > [!IMPORTANT] -> هذا المشروع مخصص للاستخدام الشخصي والاتصال فقط، يرجى عدم استخدامه لأغراض غير قانونية، يرجى عدم استخدامه في بيئة الإنتاج. +> هذا المشروع مخصص للاستخدام الشخصي فقط. يرجى عدم استخدامه لأغراض غير قانونية أو في بيئة إنتاجية. -كمشروع محسن من مشروع X-UI الأصلي، يوفر 3X-UI استقرارًا محسنًا ودعمًا أوسع للبروتوكولات وميزات إضافية. +## الميزات + +- **اتصالات واردة متعددة البروتوكولات** — VLESS، VMess، Trojan، Shadowsocks، WireGuard، 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 واشتراكات بنقرة واحدة. +- **إحصائيات الترافيك** — لكل اتصال وارد، ولكل عميل، ولكل اتصال صادر، مع عناصر تحكم لإعادة التعيين. +- **دعم العقد المتعددة** — إدارة وتوسيع عبر عدة خوادم من لوحة واحدة. +- **الاتصالات الصادرة والتوجيه** — WARP، NordVPN، قواعد توجيه مخصصة، موازنات تحميل، وتسلسل الوكلاء الصادرة. +- **خادم اشتراك مدمج** بصيغ إخراج متعددة. +- **روبوت تيليجرام** للمراقبة والإدارة عن بُعد. +- **واجهة RESTful API** مع توثيق Swagger داخل اللوحة. +- **تخزين مرن** — SQLite (افتراضي) أو PostgreSQL. +- **13 لغة لواجهة المستخدم** مع سمات داكنة وفاتحة. +- **تكامل مع Fail2ban** لفرض حدود IP لكل عميل. + +## لقطات الشاشة + +
+انقر للتوسيع + + + + Overview + + + + + Inbounds + + + + + Add client + + + + + Configs + + +
## البدء السريع -``` +```bash bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) ``` +أثناء التثبيت، يتم إنشاء اسم مستخدم وكلمة مرور ومسار وصول عشوائية. بعد التثبيت، شغّل `x-ui` لفتح قائمة الإدارة، حيث يمكنك بدء/إيقاف الخدمة، وعرض أو إعادة تعيين بيانات تسجيل الدخول، وإدارة شهادات SSL، والمزيد. + للحصول على الوثائق الكاملة، يرجى زيارة [ويكي المشروع](https://github.com/MHSanaei/3x-ui/wiki). +## المنصات المدعومة + +**أنظمة التشغيل:** Ubuntu، Debian، Armbian، Fedora، CentOS، RHEL، AlmaLinux، Rocky Linux، Oracle Linux، Amazon Linux، Virtuozzo، Arch، Manjaro، Parch، openSUSE (Tumbleweed / Leap)، Alpine و Windows. + +**المعماريات:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`. + +## خيارات قاعدة البيانات + +يدعم 3X-UI خلفيتين (backends) يتم اختيارهما أثناء التثبيت: + +- **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 +``` + +تتضمن الصورة 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_ENABLE_FAIL2BAN` | تفعيل فرض حدود IP المعتمد على Fail2ban | `true` | +| `XUI_LOG_LEVEL` | مستوى السجل (`debug`، `info`، `warning`، `error`) | `info` | +| `XUI_DEBUG` | تفعيل وضع التصحيح | `false` | + +## اللغات المدعومة + +تتوفر واجهة اللوحة بـ 13 لغة: + +English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil) + +## المساهمة + +المساهمات مرحب بها. يرجى قراءة [دليل المساهمة](/CONTRIBUTING.md) قبل فتح مشكلة (issue) أو طلب سحب (pull request). + ## شكر خاص إلى - [alireza0](https://github.com/alireza0/) diff --git a/README.es_ES.md b/README.es_ES.md index 84d012a5..161c388d 100644 --- a/README.es_ES.md +++ b/README.es_ES.md @@ -7,28 +7,142 @@

-[![Release](https://img.shields.io/github/v/release/mhsanaei/3x-ui.svg)](https://github.com/MHSanaei/3x-ui/releases) -[![Build](https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg)](https://github.com/MHSanaei/3x-ui/actions) -[![GO Version](https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg)](#) -[![Downloads](https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg)](https://github.com/MHSanaei/3x-ui/releases/latest) -[![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) -[![Go Reference](https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg)](https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3) -[![Go Report Card](https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3)](https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3) +

+ Release + Build + GO Version + Downloads + License + Go Reference + Go Report Card +

-**3X-UI** — panel de control avanzado basado en web de código abierto diseñado para gestionar el servidor Xray-core. Ofrece una interfaz fácil de usar para configurar y monitorear varios protocolos VPN y proxy. +**3X-UI** es un panel de control web avanzado y de código abierto para gestionar servidores [Xray-core](https://github.com/XTLS/Xray-core). Ofrece una interfaz limpia y multilingüe para desplegar, configurar y monitorear una amplia gama de protocolos de proxy y VPN — desde un único VPS hasta despliegues multinodo. + +Construido como un fork mejorado del proyecto X-UI original, 3X-UI añade un soporte de protocolos más amplio, mayor estabilidad, contabilidad de tráfico por cliente y muchas funciones que mejoran la experiencia de uso. > [!IMPORTANT] -> Este proyecto es solo para uso personal y comunicación, por favor no lo use para fines ilegales, por favor no lo use en un entorno de producción. +> Este proyecto está destinado únicamente al uso personal. Por favor, no lo uses para fines ilegales ni en un entorno de producción. -Como una versión mejorada del proyecto X-UI original, 3X-UI proporciona mayor estabilidad, soporte más amplio de protocolos y características adicionales. +## Características + +- **Entradas multiprotocolo** — VLESS, VMess, Trojan, Shadowsocks, WireGuard, Hysteria2, HTTP, SOCKS (Mixed), Dokodemo-door / Tunnel y TUN. +- **Transportes y seguridad modernos** — TCP (Raw), mKCP, WebSocket, gRPC, HTTPUpgrade y XHTTP, protegidos con TLS, XTLS y REALITY. +- **Fallbacks** — sirve varios protocolos en un solo puerto (p. ej. VLESS y Trojan en el 443) usando la función de fallback de Xray. +- **Gestión por cliente** — cuotas de tráfico, fechas de caducidad, límites de IP, estado en línea en tiempo real y enlaces de compartición, códigos QR y suscripciones con un solo clic. +- **Estadísticas de tráfico** — por entrada, por cliente y por salida, con controles de reinicio. +- **Soporte multinodo** — gestiona y escala a través de varios servidores desde un único panel. +- **Salida y enrutamiento** — WARP, NordVPN, reglas de enrutamiento personalizadas, balanceadores de carga y encadenamiento de proxy de salida. +- **Servidor de suscripción integrado** con múltiples formatos de salida. +- **Bot de Telegram** para monitorización y gestión remotas. +- **API RESTful** con documentación Swagger dentro del panel. +- **Almacenamiento flexible** — SQLite (predeterminado) o PostgreSQL. +- **13 idiomas de interfaz** con temas oscuro y claro. +- **Integración con Fail2ban** para aplicar límites de IP por cliente. + +## Capturas de pantalla + +
+Haz clic para expandir + + + + Overview + + + + + Inbounds + + + + + Add client + + + + + Configs + + +
## Inicio Rápido -``` +```bash bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) ``` -Para documentación completa, visita la [Wiki del proyecto](https://github.com/MHSanaei/3x-ui/wiki). +Durante la instalación se generan un nombre de usuario, una contraseña y una ruta de acceso aleatorios. Tras la instalación, ejecuta `x-ui` para abrir el menú de gestión, donde puedes iniciar/detener el servicio, ver o restablecer tus credenciales de acceso, gestionar certificados SSL y mucho más. + +Para la documentación completa, visita la [Wiki del proyecto](https://github.com/MHSanaei/3x-ui/wiki). + +## Plataformas Compatibles + +**Sistemas operativos:** Ubuntu, Debian, Armbian, Fedora, CentOS, RHEL, AlmaLinux, Rocky Linux, Oracle Linux, Amazon Linux, Virtuozzo, Arch, Manjaro, Parch, openSUSE (Tumbleweed / Leap), Alpine y Windows. + +**Arquitecturas:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`. + +## Opciones de Base de Datos + +3X-UI admite dos backends, que se eligen durante la instalación: + +- **SQLite** (predeterminado) — un único archivo en `/etc/x-ui/x-ui.db`. Sin configuración, ideal para despliegues pequeños y medianos. +- **PostgreSQL** — recomendado para un gran número de clientes o configuraciones multinodo. El instalador puede instalar PostgreSQL localmente por ti, o aceptar un DSN a un servidor existente. + +En tiempo de ejecución, el backend se selecciona mediante variables de entorno (el instalador las escribe por ti en `/etc/default/x-ui`): + +``` +XUI_DB_TYPE=postgres +XUI_DB_DSN=postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable +``` + +### Migrar una instalación de SQLite existente a PostgreSQL + +```bash +x-ui migrate-db --dsn "postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable" +# luego define XUI_DB_TYPE y XUI_DB_DSN en /etc/default/x-ui y reinicia: +systemctl restart x-ui +``` + +El archivo SQLite de origen permanece intacto; elimínalo manualmente una vez que hayas verificado el nuevo backend. + +### Docker + +El comando predeterminado `docker compose up -d` sigue usando SQLite. Para ejecutarlo con el servicio PostgreSQL incluido, descomenta las dos líneas de variables de entorno `XUI_DB_*` en `docker-compose.yml` e inícialo con el perfil: + +```bash +docker compose --profile postgres up -d +``` + +La imagen incluye Fail2ban (habilitado de forma predeterminada) para aplicar **límites de IP** por cliente. Fail2ban banea a los infractores con `iptables`, lo que requiere la capacidad `NET_ADMIN`. `docker-compose.yml` ya la concede mediante `cap_add`; si en su lugar inicias el contenedor con `docker run`, añade tú mismo las capacidades, de lo contrario los baneos se registran pero nunca se aplican: + +```bash +docker run -d --cap-add=NET_ADMIN --cap-add=NET_RAW ... ghcr.io/mhsanaei/3x-ui +``` + +## Variables de Entorno + +| Variable | Descripción | Predeterminado | +| --- | --- | --- | +| `XUI_DB_TYPE` | Backend de base de datos: `sqlite` o `postgres` | `sqlite` | +| `XUI_DB_DSN` | Cadena de conexión de PostgreSQL (cuando `XUI_DB_TYPE=postgres`) | — | +| `XUI_DB_FOLDER` | Directorio del archivo de base de datos SQLite | `/etc/x-ui` | +| `XUI_DB_MAX_OPEN_CONNS` | Máximo de conexiones abiertas (pool de PostgreSQL) | — | +| `XUI_DB_MAX_IDLE_CONNS` | Máximo de conexiones inactivas (pool de PostgreSQL) | — | +| `XUI_ENABLE_FAIL2BAN` | Habilitar la aplicación de límites de IP basada en Fail2ban | `true` | +| `XUI_LOG_LEVEL` | Nivel de registro (`debug`, `info`, `warning`, `error`) | `info` | +| `XUI_DEBUG` | Habilitar el modo de depuración | `false` | + +## Idiomas Compatibles + +La interfaz del panel está disponible en 13 idiomas: + +English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil) + +## Contribuir + +Las contribuciones son bienvenidas. Por favor, lee la [Guía de contribución](/CONTRIBUTING.md) antes de abrir una incidencia (issue) o una solicitud de incorporación (pull request). ## Un Agradecimiento Especial a diff --git a/README.fa_IR.md b/README.fa_IR.md index a6f4956b..73e2d3d9 100644 --- a/README.fa_IR.md +++ b/README.fa_IR.md @@ -7,29 +7,143 @@

-[![Release](https://img.shields.io/github/v/release/mhsanaei/3x-ui.svg)](https://github.com/MHSanaei/3x-ui/releases) -[![Build](https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg)](https://github.com/MHSanaei/3x-ui/actions) -[![GO Version](https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg)](#) -[![Downloads](https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg)](https://github.com/MHSanaei/3x-ui/releases/latest) -[![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) -[![Go Reference](https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg)](https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3) -[![Go Report Card](https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3)](https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3) +

+ Release + Build + GO Version + Downloads + License + Go Reference + Go Report Card +

-**3X-UI** — یک پنل کنترل پیشرفته مبتنی بر وب با کد باز که برای مدیریت سرور Xray-core طراحی شده است. این پنل یک رابط کاربری آسان برای پیکربندی و نظارت بر پروتکل‌های مختلف VPN و پراکسی ارائه می‌دهد. +**3X-UI** یک پنل کنترل وب پیشرفته و متن‌باز برای مدیریت سرورهای [Xray-core](https://github.com/XTLS/Xray-core) است. این پنل یک رابط کاربری تمیز و چندزبانه برای استقرار، پیکربندی و نظارت بر طیف گسترده‌ای از پروتکل‌های پراکسی و VPN ارائه می‌دهد — از یک VPS تکی تا استقرارهای چندنودی. + +‏3X-UI که به‌عنوان یک فورک بهبودیافته از پروژه‌ی اصلی X-UI ساخته شده است، پشتیبانی گسترده‌تر از پروتکل‌ها، پایداری بهتر، حسابداری ترافیک به‌ازای هر کلاینت و بسیاری از ویژگی‌های رفاهی را اضافه می‌کند. > [!IMPORTANT] -> این پروژه فقط برای استفاده شخصی و ارتباطات است، لطفاً از آن برای اهداف غیرقانونی استفاده نکنید، لطفاً از آن در محیط تولید استفاده نکنید. +> این پروژه فقط برای استفاده‌ی شخصی در نظر گرفته شده است. لطفاً از آن برای اهداف غیرقانونی یا در محیط تولید (production) استفاده نکنید. -به عنوان یک نسخه بهبود یافته از پروژه اصلی X-UI، 3X-UI پایداری بهتر، پشتیبانی گسترده‌تر از پروتکل‌ها و ویژگی‌های اضافی را ارائه می‌دهد. +## ویژگی‌ها + +- **اینباندهای چندپروتکلی** — VLESS، VMess، Trojan، Shadowsocks، WireGuard، 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) و زنجیره‌کردن پراکسی اوتباند. +- **سرور سابسکریپشن داخلی** با چندین فرمت خروجی. +- **ربات تلگرام** برای نظارت و مدیریت از راه دور. +- **‏RESTful API** همراه با مستندات Swagger درون‌پنل. +- **ذخیره‌سازی منعطف** — SQLite (پیش‌فرض) یا PostgreSQL. +- **‏۱۳ زبان رابط کاربری** با تم‌های تیره و روشن. +- **یکپارچگی با Fail2ban** برای اعمال محدودیت IP به‌ازای هر کلاینت. + +## اسکرین‌شات‌ها + +
+برای باز شدن کلیک کنید + + + + Overview + + + + + Inbounds + + + + + Add client + + + + + Configs + + +
## شروع سریع -``` +```bash bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) ``` +در حین نصب، یک نام کاربری، رمز عبور و مسیر دسترسی تصادفی تولید می‌شود. پس از نصب، دستور `x-ui` را اجرا کنید تا منوی مدیریت باز شود؛ در آنجا می‌توانید سرویس را شروع/متوقف کنید، اطلاعات ورود خود را ببینید یا بازنشانی کنید، گواهی‌های SSL را مدیریت کنید و کارهای دیگری انجام دهید. + برای مستندات کامل، لطفاً به [ویکی پروژه](https://github.com/MHSanaei/3x-ui/wiki) مراجعه کنید. +## پلتفرم‌های پشتیبانی‌شده + +**سیستم‌عامل‌ها:** Ubuntu، Debian، Armbian، Fedora، CentOS، RHEL، AlmaLinux، Rocky Linux، Oracle Linux، Amazon Linux، Virtuozzo، Arch، Manjaro، Parch، openSUSE (Tumbleweed / Leap)، Alpine و Windows. + +**معماری‌ها:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`. + +## گزینه‌های پایگاه‌داده + +‏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 +``` + +این ایمیج، 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_ENABLE_FAIL2BAN` | فعال‌سازی اعمال محدودیت IP مبتنی بر Fail2ban | `true` | +| `XUI_LOG_LEVEL` | سطح گزارش‌گیری (`debug`، `info`، `warning`، `error`) | `info` | +| `XUI_DEBUG` | فعال‌سازی حالت دیباگ | `false` | + +## زبان‌های پشتیبانی‌شده + +رابط کاربری پنل به ۱۳ زبان در دسترس است: + +English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil) + +## مشارکت + +از مشارکت‌ها استقبال می‌شود. لطفاً پیش از باز کردن issue یا pull request، [راهنمای مشارکت](/CONTRIBUTING.md) را مطالعه کنید. + ## تشکر ویژه از - [alireza0](https://github.com/alireza0/) diff --git a/README.md b/README.md index 7bca7983..a9f2e27e 100644 --- a/README.md +++ b/README.md @@ -7,20 +7,65 @@

-[![Release](https://img.shields.io/github/v/release/mhsanaei/3x-ui.svg)](https://github.com/MHSanaei/3x-ui/releases) -[![Build](https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg)](https://github.com/MHSanaei/3x-ui/actions) -[![GO Version](https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg)](#) -[![Downloads](https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg)](https://github.com/MHSanaei/3x-ui/releases/latest) -[![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) -[![Go Reference](https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg)](https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3) -[![Go Report Card](https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3)](https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3) +

+ Release + Build + GO Version + Downloads + License + Go Reference + Go Report Card +

-**3X-UI** — advanced, open-source web-based control panel designed for managing Xray-core server. It offers a user-friendly interface for configuring and monitoring various VPN and proxy protocols. +**3X-UI** is an advanced, open-source web control panel for managing [Xray-core](https://github.com/XTLS/Xray-core) servers. It provides a clean, multi-language interface for deploying, configuring, and monitoring a wide range of proxy and VPN protocols — from a single VPS to multi-node deployments. + +Built as an enhanced fork of the original X-UI project, 3X-UI adds broader protocol support, improved stability, per-client traffic accounting, and many quality-of-life features. > [!IMPORTANT] -> This project is only for personal usage, please do not use it for illegal purposes, and please do not use it in a production environment. +> This project is intended for personal use only. Please do not use it for illegal purposes or in a production environment. -As an enhanced fork of the original X-UI project, 3X-UI provides improved stability, broader protocol support, and additional features. +## Features + +- **Multi-protocol inbounds** — VLESS, VMess, Trojan, Shadowsocks, WireGuard, Hysteria2, HTTP, SOCKS (Mixed), Dokodemo-door / Tunnel, and TUN. +- **Modern transports & security** — TCP (Raw), mKCP, WebSocket, gRPC, HTTPUpgrade, and XHTTP, secured with TLS, XTLS, and REALITY. +- **Fallbacks** — serve multiple protocols on a single port (e.g. VLESS and Trojan on 443) using Xray's fallback support. +- **Per-client management** — traffic quotas, expiry dates, IP limits, live online status, and one-click share links, QR codes, and subscriptions. +- **Traffic statistics** — per inbound, per client, and per outbound, with reset controls. +- **Multi-node support** — manage and scale across multiple servers from a single panel. +- **Outbound & routing** — WARP, NordVPN, custom routing rules, load balancers, and outbound proxy chaining. +- **Built-in subscription server** with multiple output formats. +- **Telegram bot** for remote monitoring and management. +- **RESTful API** with in-panel Swagger documentation. +- **Flexible storage** — SQLite (default) or PostgreSQL. +- **13 UI languages** with dark and light themes. +- **Fail2ban integration** for enforcing per-client IP limits. + +## Screenshots + +
+Click to expand + + + + Overview + + + + + Inbounds + + + + + Add client + + + + + Configs + + +
## Quick Start @@ -28,16 +73,24 @@ As an enhanced fork of the original X-UI project, 3X-UI provides improved stabil bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) ``` +During installation a random username, password, and access path are generated. After installation, run `x-ui` to open the management menu, where you can start/stop the service, view or reset your login credentials, manage SSL certificates, and more. + For full documentation, please visit the [project Wiki](https://github.com/MHSanaei/3x-ui/wiki). +## Supported Platforms + +**Operating systems:** Ubuntu, Debian, Armbian, Fedora, CentOS, RHEL, AlmaLinux, Rocky Linux, Oracle Linux, Amazon Linux, Virtuozzo, Arch, Manjaro, Parch, openSUSE (Tumbleweed / Leap), Alpine, and Windows. + +**Architectures:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`. + ## Database Options 3X-UI supports two backends, chosen during the install: -- **SQLite** (default) — a single file at `/etc/x-ui/x-ui.db`. Zero setup, ideal for small/medium deployments. +- **SQLite** (default) — a single file at `/etc/x-ui/x-ui.db`. Zero setup, ideal for small and medium deployments. - **PostgreSQL** — recommended for high client counts or multi-node setups. The installer can install PostgreSQL locally for you, or accept a DSN to an existing server. -At runtime the backend is selected via env vars (the installer writes these to `/etc/default/x-ui` for you): +At runtime the backend is selected via environment variables (the installer writes these to `/etc/default/x-ui` for you): ``` XUI_DB_TYPE=postgres @@ -68,6 +121,29 @@ The image bundles Fail2ban (enabled by default) to enforce per-client **IP limit docker run -d --cap-add=NET_ADMIN --cap-add=NET_RAW ... ghcr.io/mhsanaei/3x-ui ``` +## Environment Variables + +| Variable | Description | Default | +| --- | --- | --- | +| `XUI_DB_TYPE` | Database backend: `sqlite` or `postgres` | `sqlite` | +| `XUI_DB_DSN` | PostgreSQL connection string (when `XUI_DB_TYPE=postgres`) | — | +| `XUI_DB_FOLDER` | Directory for the SQLite database file | `/etc/x-ui` | +| `XUI_DB_MAX_OPEN_CONNS` | Maximum open connections (PostgreSQL pool) | — | +| `XUI_DB_MAX_IDLE_CONNS` | Maximum idle connections (PostgreSQL pool) | — | +| `XUI_ENABLE_FAIL2BAN` | Enable Fail2ban-based IP-limit enforcement | `true` | +| `XUI_LOG_LEVEL` | Log verbosity (`debug`, `info`, `warning`, `error`) | `info` | +| `XUI_DEBUG` | Enable debug mode | `false` | + +## Supported Languages + +The panel UI is available in 13 languages: + +English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil) + +## Contributing + +Contributions are welcome. Please read the [Contributing Guide](/CONTRIBUTING.md) before opening an issue or pull request. + ## A Special Thanks to - [alireza0](https://github.com/alireza0/) diff --git a/README.ru_RU.md b/README.ru_RU.md index d303a306..2ed448ea 100644 --- a/README.ru_RU.md +++ b/README.ru_RU.md @@ -7,29 +7,143 @@

-[![Release](https://img.shields.io/github/v/release/mhsanaei/3x-ui.svg)](https://github.com/MHSanaei/3x-ui/releases) -[![Build](https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg)](https://github.com/MHSanaei/3x-ui/actions) -[![GO Version](https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg)](#) -[![Downloads](https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg)](https://github.com/MHSanaei/3x-ui/releases/latest) -[![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) -[![Go Reference](https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg)](https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3) -[![Go Report Card](https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3)](https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3) +

+ Release + Build + GO Version + Downloads + License + Go Reference + Go Report Card +

-**3X-UI** — продвинутая панель управления с открытым исходным кодом на основе веб-интерфейса, разработанная для управления сервером Xray-core. Предоставляет удобный интерфейс для настройки и мониторинга различных VPN и прокси-протоколов. +**3X-UI** — продвинутая веб-панель управления с открытым исходным кодом для управления серверами [Xray-core](https://github.com/XTLS/Xray-core). Она предоставляет аккуратный многоязычный интерфейс для развёртывания, настройки и мониторинга широкого спектра протоколов прокси и VPN — от одного VPS до развёртываний с несколькими узлами. + +Созданный как улучшенный форк оригинального проекта X-UI, 3X-UI добавляет более широкую поддержку протоколов, повышенную стабильность, учёт трафика по каждому клиенту и множество функций для удобства использования. > [!IMPORTANT] -> Этот проект предназначен только для личного использования, пожалуйста, не используйте его в незаконных целях и в производственной среде. +> Этот проект предназначен только для личного использования. Пожалуйста, не используйте его в незаконных целях или в производственной среде. -Как улучшенная версия оригинального проекта X-UI, 3X-UI обеспечивает повышенную стабильность, более широкую поддержку протоколов и дополнительные функции. +## Возможности + +- **Многопротокольные входящие подключения** — VLESS, VMess, Trojan, Shadowsocks, WireGuard, 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-коды и подписки в один клик. +- **Статистика трафика** — по каждому входящему, по каждому клиенту и по каждому исходящему, с возможностью сброса. +- **Поддержка нескольких узлов** — управление и масштабирование на несколько серверов из одной панели. +- **Исходящие подключения и маршрутизация** — WARP, NordVPN, пользовательские правила маршрутизации, балансировщики нагрузки и цепочки исходящих прокси. +- **Встроенный сервер подписок** с несколькими форматами вывода. +- **Telegram-бот** для удалённого мониторинга и управления. +- **RESTful API** с документацией Swagger внутри панели. +- **Гибкое хранилище** — SQLite (по умолчанию) или PostgreSQL. +- **13 языков интерфейса** с тёмной и светлой темами. +- **Интеграция с Fail2ban** для применения лимитов IP по каждому клиенту. + +## Скриншоты + +
+Нажмите, чтобы развернуть + + + + Overview + + + + + Inbounds + + + + + Add client + + + + + Configs + + +
## Быстрый старт -``` +```bash bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) ``` +Во время установки генерируются случайные имя пользователя, пароль и путь доступа. После установки выполните `x-ui`, чтобы открыть меню управления, где можно запускать/останавливать сервис, просматривать или сбрасывать учётные данные для входа, управлять SSL-сертификатами и многое другое. + Полную документацию смотрите в [вики проекта](https://github.com/MHSanaei/3x-ui/wiki). +## Поддерживаемые платформы + +**Операционные системы:** Ubuntu, Debian, Armbian, Fedora, CentOS, RHEL, AlmaLinux, Rocky Linux, Oracle Linux, Amazon Linux, Virtuozzo, Arch, Manjaro, Parch, openSUSE (Tumbleweed / Leap), Alpine и Windows. + +**Архитектуры:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`. + +## Варианты базы данных + +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 +``` + +Образ включает 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_ENABLE_FAIL2BAN` | Включить применение лимитов IP на основе Fail2ban | `true` | +| `XUI_LOG_LEVEL` | Уровень логирования (`debug`, `info`, `warning`, `error`) | `info` | +| `XUI_DEBUG` | Включить режим отладки | `false` | + +## Поддерживаемые языки + +Интерфейс панели доступен на 13 языках: + +English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil) + +## Участие в разработке + +Вклад приветствуется. Пожалуйста, прочитайте [руководство по участию](/CONTRIBUTING.md), прежде чем открывать issue или pull request. + ## Особая благодарность - [alireza0](https://github.com/alireza0/) diff --git a/README.zh_CN.md b/README.zh_CN.md index 731cf785..a4f057d7 100644 --- a/README.zh_CN.md +++ b/README.zh_CN.md @@ -7,29 +7,143 @@

-[![Release](https://img.shields.io/github/v/release/mhsanaei/3x-ui.svg)](https://github.com/MHSanaei/3x-ui/releases) -[![Build](https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg)](https://github.com/MHSanaei/3x-ui/actions) -[![GO Version](https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg)](#) -[![Downloads](https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg)](https://github.com/MHSanaei/3x-ui/releases/latest) -[![License](https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true)](https://www.gnu.org/licenses/gpl-3.0.en.html) -[![Go Reference](https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg)](https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3) -[![Go Report Card](https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3)](https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3) +

+ Release + Build + GO Version + Downloads + License + Go Reference + Go Report Card +

-**3X-UI** — 一个基于网页的高级开源控制面板,专为管理 Xray-core 服务器而设计。它提供了用户友好的界面,用于配置和监控各种 VPN 和代理协议。 +**3X-UI** 是一个先进的开源 Web 控制面板,用于管理 [Xray-core](https://github.com/XTLS/Xray-core) 服务器。它提供简洁、多语言的界面,用于部署、配置和监控各种代理与 VPN 协议——从单台 VPS 到多节点部署。 + +3X-UI 作为原始 X-UI 项目的增强分支(fork),增加了更广泛的协议支持、更好的稳定性、按客户端的流量统计以及许多提升使用体验的功能。 > [!IMPORTANT] -> 本项目仅用于个人使用和通信,请勿将其用于非法目的,请勿在生产环境中使用。 +> 本项目仅供个人使用。请勿将其用于非法目的,也请勿在生产环境中使用。 -作为原始 X-UI 项目的增强版本,3X-UI 提供了更好的稳定性、更广泛的协议支持和额外的功能。 +## 功能特性 + +- **多协议入站** — VLESS、VMess、Trojan、Shadowsocks、WireGuard、Hysteria2、HTTP、SOCKS (Mixed)、Dokodemo-door / Tunnel 和 TUN。 +- **现代传输与安全** — TCP (Raw)、mKCP、WebSocket、gRPC、HTTPUpgrade 和 XHTTP,并通过 TLS、XTLS 和 REALITY 加密。 +- **回落 (Fallback)** — 通过 Xray 的 fallback 功能在单个端口上提供多种协议(例如在 443 端口上同时使用 VLESS 和 Trojan)。 +- **按客户端管理** — 流量配额、到期日期、IP 限制、实时在线状态,以及一键分享链接、二维码和订阅。 +- **流量统计** — 按入站、按客户端、按出站统计,并支持重置控制。 +- **多节点支持** — 从单一面板管理并扩展到多台服务器。 +- **出站与路由** — WARP、NordVPN、自定义路由规则、负载均衡器和出站代理链。 +- **内置订阅服务器**,支持多种输出格式。 +- **Telegram 机器人**,用于远程监控和管理。 +- **RESTful API**,带有面板内置的 Swagger 文档。 +- **灵活的存储** — SQLite(默认)或 PostgreSQL。 +- **13 种界面语言**,支持深色和浅色主题。 +- **Fail2ban 集成**,用于强制执行按客户端的 IP 限制。 + +## 截图 + +
+点击展开 + + + + Overview + + + + + Inbounds + + + + + Add client + + + + + Configs + + +
## 快速开始 -``` +```bash bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) ``` +安装过程中会生成随机的用户名、密码和访问路径。安装完成后,运行 `x-ui` 打开管理菜单,您可以在其中启动/停止服务、查看或重置登录凭据、管理 SSL 证书等。 + 完整文档请参阅 [项目Wiki](https://github.com/MHSanaei/3x-ui/wiki)。 +## 支持的平台 + +**操作系统:** Ubuntu、Debian、Armbian、Fedora、CentOS、RHEL、AlmaLinux、Rocky Linux、Oracle Linux、Amazon Linux、Virtuozzo、Arch、Manjaro、Parch、openSUSE (Tumbleweed / Leap)、Alpine 和 Windows。 + +**架构:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`。 + +## 数据库选项 + +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" +# 然后在 /etc/default/x-ui 中设置 XUI_DB_TYPE 和 XUI_DB_DSN 并重启: +systemctl restart x-ui +``` + +源 SQLite 文件保持不变;在确认新后端正常工作后,请手动删除它。 + +### Docker + +默认的 `docker compose up -d` 仍使用 SQLite。若要使用捆绑的 PostgreSQL 服务运行,请取消注释 `docker-compose.yml` 中的两行 `XUI_DB_*` 环境变量,并使用该 profile 启动: + +```bash +docker compose --profile postgres up -d +``` + +该镜像捆绑了 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_ENABLE_FAIL2BAN` | 启用基于 Fail2ban 的 IP 限制 | `true` | +| `XUI_LOG_LEVEL` | 日志级别(`debug`、`info`、`warning`、`error`) | `info` | +| `XUI_DEBUG` | 启用调试模式 | `false` | + +## 支持的语言 + +面板界面提供 13 种语言: + +English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil) + +## 贡献 + +欢迎贡献。在提交 issue 或 pull request 之前,请阅读[贡献指南](/CONTRIBUTING.md)。 + ## 特别感谢 - [alireza0](https://github.com/alireza0/) diff --git a/media/01-overview-dark.png b/media/01-overview-dark.png index 879cb872..9f8b1e95 100644 Binary files a/media/01-overview-dark.png and b/media/01-overview-dark.png differ diff --git a/media/01-overview-light.png b/media/01-overview-light.png index 26e82735..8b9905f2 100644 Binary files a/media/01-overview-light.png and b/media/01-overview-light.png differ diff --git a/media/02-add-inbound-dark.png b/media/02-add-inbound-dark.png new file mode 100644 index 00000000..5daaf162 Binary files /dev/null and b/media/02-add-inbound-dark.png differ diff --git a/media/02-add-inbound-light.png b/media/02-add-inbound-light.png new file mode 100644 index 00000000..98a957c5 Binary files /dev/null and b/media/02-add-inbound-light.png differ diff --git a/media/02-inbounds-dark.png b/media/02-inbounds-dark.png index 65511695..03ffcfbd 100644 Binary files a/media/02-inbounds-dark.png and b/media/02-inbounds-dark.png differ diff --git a/media/02-inbounds-light.png b/media/02-inbounds-light.png index 41650432..43208bdc 100644 Binary files a/media/02-inbounds-light.png and b/media/02-inbounds-light.png differ diff --git a/media/03-add-client-dark.png b/media/03-add-client-dark.png new file mode 100644 index 00000000..c3fca30c Binary files /dev/null and b/media/03-add-client-dark.png differ diff --git a/media/03-add-client-light.png b/media/03-add-client-light.png new file mode 100644 index 00000000..0fd616b2 Binary files /dev/null and b/media/03-add-client-light.png differ diff --git a/media/03-add-inbound-dark.png b/media/03-add-inbound-dark.png deleted file mode 100644 index 476fa878..00000000 Binary files a/media/03-add-inbound-dark.png and /dev/null differ diff --git a/media/03-add-inbound-light.png b/media/03-add-inbound-light.png deleted file mode 100644 index 26e6e6fe..00000000 Binary files a/media/03-add-inbound-light.png and /dev/null differ diff --git a/media/03-client-dark.png b/media/03-client-dark.png new file mode 100644 index 00000000..3dcae177 Binary files /dev/null and b/media/03-client-dark.png differ diff --git a/media/03-client-light.png b/media/03-client-light.png new file mode 100644 index 00000000..7ca7efc9 Binary files /dev/null and b/media/03-client-light.png differ diff --git a/media/04-add-client-dark.png b/media/04-add-client-dark.png deleted file mode 100644 index bdcc52fa..00000000 Binary files a/media/04-add-client-dark.png and /dev/null differ diff --git a/media/04-add-client-light.png b/media/04-add-client-light.png deleted file mode 100644 index 3b5901ca..00000000 Binary files a/media/04-add-client-light.png and /dev/null differ diff --git a/media/04-group-dark.png b/media/04-group-dark.png new file mode 100644 index 00000000..fe82004a Binary files /dev/null and b/media/04-group-dark.png differ diff --git a/media/04-group-light.png b/media/04-group-light.png new file mode 100644 index 00000000..57f473d3 Binary files /dev/null and b/media/04-group-light.png differ diff --git a/media/05-add-nodes-dark.png b/media/05-add-nodes-dark.png new file mode 100644 index 00000000..1ebd83ef Binary files /dev/null and b/media/05-add-nodes-dark.png differ diff --git a/media/05-add-nodes-light.png b/media/05-add-nodes-light.png new file mode 100644 index 00000000..f5f19b9d Binary files /dev/null and b/media/05-add-nodes-light.png differ diff --git a/media/05-nodes-dark.png b/media/05-nodes-dark.png new file mode 100644 index 00000000..c7492e34 Binary files /dev/null and b/media/05-nodes-dark.png differ diff --git a/media/05-nodes-light.png b/media/05-nodes-light.png new file mode 100644 index 00000000..0542de2e Binary files /dev/null and b/media/05-nodes-light.png differ diff --git a/media/05-settings-dark.png b/media/05-settings-dark.png deleted file mode 100644 index 73f7692c..00000000 Binary files a/media/05-settings-dark.png and /dev/null differ diff --git a/media/05-settings-light.png b/media/05-settings-light.png deleted file mode 100644 index 2f27b17e..00000000 Binary files a/media/05-settings-light.png and /dev/null differ diff --git a/media/06-configs-dark.png b/media/06-configs-dark.png deleted file mode 100644 index fef433ae..00000000 Binary files a/media/06-configs-dark.png and /dev/null differ diff --git a/media/06-configs-light.png b/media/06-configs-light.png deleted file mode 100644 index f2370d46..00000000 Binary files a/media/06-configs-light.png and /dev/null differ diff --git a/media/06-settings-dark.png b/media/06-settings-dark.png new file mode 100644 index 00000000..b7f3301c Binary files /dev/null and b/media/06-settings-dark.png differ diff --git a/media/06-settings-light.png b/media/06-settings-light.png new file mode 100644 index 00000000..1445b412 Binary files /dev/null and b/media/06-settings-light.png differ diff --git a/media/07-configs-dark.png b/media/07-configs-dark.png new file mode 100644 index 00000000..a058174e Binary files /dev/null and b/media/07-configs-dark.png differ diff --git a/media/07-configs-light.png b/media/07-configs-light.png new file mode 100644 index 00000000..84c97678 Binary files /dev/null and b/media/07-configs-light.png differ diff --git a/media/08-api-docs-dark.png b/media/08-api-docs-dark.png new file mode 100644 index 00000000..6f2abba7 Binary files /dev/null and b/media/08-api-docs-dark.png differ diff --git a/media/08-api-docs-light.png b/media/08-api-docs-light.png new file mode 100644 index 00000000..ed9e4579 Binary files /dev/null and b/media/08-api-docs-light.png differ