<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/3x-ui-dark.png">
    <img alt="3x-ui" src="https://github.com/MHSanaei/3x-ui/raw/main/media/3x-ui-light.png">
  </picture>
</p>

## What's that?

**3X-UI** — an advanced, open-source web-based 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.

> [!IMPORTANT]
> This project is intended for personal use only. Please do not use it for illegal purposes or in a production environment.

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.

## Features

* System status monitoring
* Search within all inbounds and clients
* Multi-user and multi-protocol support
* Supported protocols: `VLESS`, `VMess`, `Trojan`, `Shadowsocks`, `WireGuard`, `Hysteria2`, `HTTP`, `SOCKS` (Mixed), `Dokodemo-door` / `Tunnel`, and `TUN`
* Modern transports — TCP (Raw), mKCP, WebSocket, gRPC, HTTPUpgrade, and XHTTP
* XTLS-native security: `Vision` and `REALITY` (alongside TLS and XTLS)
* Fallbacks — serve multiple protocols on a single port (e.g. VLESS and Trojan on 443)
* Per-client management — traffic quotas, expiry dates, IP limits, live online status
* One-click share links, QR codes, and a built-in subscription server with multiple output formats
* 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
* Customizable Xray configuration templates
* HTTPS panel access (self-provided domain + SSL certificate)
* One-click SSL certificate issuance and automatic renewal
* Export / import the database from the panel
* Out-of-the-box geofile (geosite / geoip) updates
* RESTful API with in-panel Swagger documentation
* Flexible storage — SQLite (default) or PostgreSQL
* Telegram bot for remote monitoring and management
* Fail2ban integration for enforcing per-client IP limits

## Supported OS

> [!TIP]
> If you don't have your OS here, you can use Docker

At the moment we support the major operating systems below, on which the panel has been tested:

| System
| -
| Ubuntu
| Debian
| Fedora
| CentOS
| RHEL
| AlmaLinux
| Rocky Linux
| Oracle Linux
| Amazon Linux
| Virtuozzo Linux
| Arch Linux
| Manjaro
| Parch Linux
| Armbian
| openSUSE (Tumbleweed / Leap)
| Alpine Linux
| Windows

## Supported architectures

Our platform is compatible with a diverse range of architectures and devices, ensuring flexibility across various computing environments:

* `amd64` (recommended): The standard architecture for personal computers and servers, supported seamlessly by most modern operating systems.

* `386` / `x86` / `i386`: Widely used in older desktop and laptop computers, with broad support across Windows and Linux systems.

* `arm64` / `armv8` / `aarch64`: Tailored for contemporary mobile and embedded devices such as the Raspberry Pi 4, Raspberry Pi 3, Raspberry Pi Zero 2 / Zero 2 W, Orange Pi 3 LTS, and more.

* `armv7` / `arm` / `arm32`: The architecture for older mobile and embedded devices, still widely used in boards like the Orange Pi Zero LTS, Orange Pi PC Plus, and Raspberry Pi 2.

* `armv6` / `arm` / `arm32`: Geared towards very old embedded devices such as the Raspberry Pi 1 and Raspberry Pi Zero / Zero W.

* `armv5` / `arm` / `arm32`: An older architecture primarily associated with early embedded systems; less common today but still found in legacy devices.

* `s390x`: Commonly used in IBM mainframe computers, offering high performance and reliability for enterprise workloads.

## Supported languages

We currently support the following languages:

| Flag | Language |
| - | - |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/us.svg) | English |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/ir.svg) | Persian (فارسی) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/sa.svg) | Arabic (العربية) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/cn.svg) | Simplified Chinese (简体中文) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/tw.svg) | Traditional Chinese (繁體中文) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/es.svg) | Spanish (Español) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/ru.svg) | Russian (Русский) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/ua.svg) | Ukrainian (Українська) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/tr.svg) | Turkish (Türkçe) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/vn.svg) | Vietnamese (Tiếng Việt) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/jp.svg) | Japanese (日本語) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/id.svg) | Indonesian (Bahasa Indonesia) |
| ![Flag](https://cdn.jsdelivr.net/gh/hampusborgos/country-flags@main/svg/br.svg) | Português (Brazil) |

## Screenshots

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/01-overview-dark.png">
  <img alt="Overview" src="https://github.com/MHSanaei/3x-ui/raw/main/media/01-overview-light.png">
</picture>

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/02-inbounds-dark.png">
  <img alt="Inbounds" src="https://github.com/MHSanaei/3x-ui/raw/main/media/02-inbounds-light.png">
</picture>

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/03-client-dark.png">
  <img alt="Client" src="https://github.com/MHSanaei/3x-ui/raw/main/media/03-client-light.png">
</picture>

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/04-group-dark.png">
  <img alt="Group" src="https://github.com/MHSanaei/3x-ui/raw/main/media/04-group-light.png">
</picture>

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/05-nodes-dark.png">
  <img alt="Nodes" src="https://github.com/MHSanaei/3x-ui/raw/main/media/05-nodes-light.png">
</picture>

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/06-settings-dark.png">
  <img alt="Settings" src="https://github.com/MHSanaei/3x-ui/raw/main/media/06-settings-light.png">
</picture>

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/07-configs-dark.png">
  <img alt="Configs" src="https://github.com/MHSanaei/3x-ui/raw/main/media/07-configs-light.png">
</picture>

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://github.com/MHSanaei/3x-ui/raw/main/media/08-api-docs-dark.png">
  <img alt="API docs" src="https://github.com/MHSanaei/3x-ui/raw/main/media/08-api-docs-light.png">
</picture>
