mrkeyoor.com_
Sat 08 Aug 21:02 UTC
Self-Hostedevaluationupdated 08 Aug 2026

3x-ui

3X-UI is a web control panel for installing, configuring, and monitoring Xray-core proxy servers. It replaces hand-edited JSON with screens for protocols, clients, traffic quotas, expiry dates, subscription links, routing, and multiple nodes.

Verdict

3X-UI is an unusually capable personal Xray panel, and its active development, broad protocol coverage, and client controls explain its popularity. It is also a privileged, internet-adjacent control plane whose own README rejects production use. Choose it for a carefully isolated personal deployment, pin releases, test every exported client format, and prefer direct Xray configuration when reducing attack surface matters more than convenience.

Setup3/5Quick installer, demanding network, TLS, and protocol decisions
Docs4/5Strong README and wiki across installs, databases, and protocols
Community5/5Large adoption with current releases, pushes, issues, and reviews
Maturity3/5Feature-rich, but explicitly personal-only with active hardening

Who it’s for

  • Experienced self-hosters managing a personal Xray server and several users or devices.
  • Operators who need per-client traffic, expiration, IP limits, QR codes, and subscription output.
  • People running several personal nodes who want one panel and can test multi-node behavior carefully.
  • Administrators who understand TLS, firewalling, routing, backups, and the security cost of a network control panel.

Who it’s NOT for

  • Production or commercial services: the README explicitly says the project is for personal use only and says not to use it in a production environment.
  • Beginners expecting the panel to make proxy design safe automatically: it exposes many protocols, transports, TLS modes, routes, and subscription formats whose combinations still require Xray knowledge.
  • Operators who cannot grant network privileges: Docker IP-limit enforcement needs Fail2ban plus NET_ADMIN, and the example also grants NET_RAW.
  • Teams requiring standards-perfect client exports: an open report shows Shadowsocks plus Xray-native TLS producing links that common SIP002 clients import without the required TLS settings.
  • Multi-node operators who need encrypted secrets at rest today: an open proposal states that outbound node bearer tokens are currently stored as plaintext in the panel database.
  • Anyone needing client migrations to preserve accounting automatically: a current question notes that UI export and import do not carry traffic usage between panels.

Setup reality

The one-line installer is fast, but it downloads a script and changes a server, so inspect it and pin a release before running it with administrative privileges. It generates a random user, password, and web path, then leaves the important work to you: configure a domain and certificate, restrict the panel port, choose and test protocols, preserve /etc/x-ui, schedule verified backups, and protect subscription URLs. Docker adds NET_ADMIN and NET_RAW when Fail2ban enforces IP limits. SQLite is convenient for one box; PostgreSQL and node management add database, certificate, token, and synchronization work that the quick start cannot remove.

A control plane for a complicated proxy core

Xray-core is powerful because it combines many proxy protocols, transports, security layers, and routing options. The same range makes its JSON configuration intimidating. 3X-UI puts a web interface around that core and adds the operational pieces needed when more than one client uses it: traffic accounting, quotas, expiration dates, IP limits, share links, QR codes, subscription feeds, and online status.

Protocol coverage is broad. The README lists VLESS, VMess, Trojan, Shadowsocks, WireGuard, Hysteria2, HTTP, mixed SOCKS, tunnel, TUN, and other inbound types. Transports include raw TCP, WebSocket, gRPC, HTTPUpgrade, XHTTP, and mKCP, with TLS, XTLS, and REALITY options. Routing can use custom outbounds and proxy chains. A Telegram bot, REST API, Swagger page, and multi-node management extend the panel beyond a visual configuration editor.

That breadth is genuinely useful for an experienced operator. A person can create a client, cap traffic, set an expiry, and provide a subscription without manually keeping several configuration fragments consistent. It is also the central caution: the panel makes settings reachable, not automatically correct. Incompatible combinations, weak exposure, or a bad route can still break connectivity or privacy.

The quick start is only the server bootstrap

The headline install is one shell command that downloads and runs install.sh. It supports many Linux distributions and architectures, generates a random username, password, and panel path, and exposes a command-line menu for service state, credentials, certificates, and other maintenance. An unattended route writes generated results to /etc/x-ui/install-result.env, making cloud-init practical.

Convenience should not replace inspection. This is an administrative script changing a network-facing server, so download it, read it, and pass a specific stable tag rather than blindly executing the rolling main branch. The dev-latest option is explicitly a per-commit prerelease and does not belong on a server you rely on. Retrieve the generated credentials through a secure channel, move secrets out of casual shell history, and restrict the panel itself by firewall or private network.

A usable deployment still needs a domain, valid certificates, intentional open ports, DNS, and client testing. Subscription URLs are credentials and should be treated that way. Back up the database, configuration, certificates, and any added assets, then verify restoration before an upgrade. Version 3.6.0 improved online SQLite snapshots, but a snapshot is useful only if it is copied away from the server and can be restored.

Docker needs meaningful privileges

The container route is not an unprivileged web app. The image bundles Fail2ban for enforcing per-client IP limits through iptables. Docker therefore needs NET_ADMIN, while the provided invocation also adds NET_RAW. Without the capability, bans can be logged without being applied. That failure mode is easy to miss if the dashboard appears healthy. Test enforcement from a separate client rather than assuming a log entry changed the host firewall.

Those privileges raise the consequence of a panel compromise. Use a dedicated host or tightly constrained virtual machine, keep the administration route off public indexes, enable strong TLS, and apply updates deliberately. Version 3.6.0 tightened important surfaces: the OpenAPI description now requires an authenticated session, node API tokens are write-only through the API, production source maps were removed, and stock freedom routes gained a private-range block. The fact that these changes were needed is also a reminder that this is security-sensitive software.

Multi-node secrets need particular care. An open pull request says the bearer token used by the panel to control each node is currently stored in plaintext, so a copied database or backup can expose every node credential. Another open fix describes partial validation of certificate bundles during mTLS certificate rotation and notes that an invalid bundle can fall back to bearer-token authentication. These proposals may improve the design, but they are not released guarantees. Protect database copies, rotate tokens after suspected exposure, and test certificate rotation on a disposable node.

Client portability has sharp edges

3X-UI generates raw links plus subscription formats for different clients, but not every Xray feature maps to a portable standard. One open report demonstrates Shadowsocks with Xray-native TLS producing an ss:// URL whose nonstandard TLS query values are ignored by v2rayNG and even discarded by 3X-UI's own importer. The client then attempts plain Shadowsocks against a TLS endpoint and fails. The practical lesson is to test each protocol and target app, not just confirm that a link was generated.

Multi-node aggregation is also moving. A current report says subscription ID uniqueness prevents combining separately synchronized node clients under one subscription, even though the subscription service can read multiple matches. Client export and import has a related limit: a user asking how to move panels reports that traffic usage is not included. Treat the database backup as the route for faithful recovery and UI export as configuration portability until proven otherwise.

The latest release absorbed an Xray-core breaking change to XMC masks, repaired legacy database values, and included dozens of subscription, client, routing, and lifecycle fixes. Pin both the panel and client apps and stage changes with real connection tests.

Excellent activity, with an explicit ceiling

Version 3.6.0 arrived July 30, 2026, and the repository was pushed August 6. Pull requests were actively updated August 8. GitHub's open count of 122 includes issues and pull requests, and the newest queue contains security hardening, migration integrity, database consistency, performance, and protocol work. Community activity is a clear strength. English is the default README, with translated READMEs and a panel offered in 13 languages.

The decisive limitation comes directly from the maintainers: 3X-UI is intended for personal use only, with an explicit request not to use it in production. Take that boundary seriously. The panel is a strong convenience layer for a knowledgeable individual, not a vendor-backed control plane with a production assurance promise. For that personal scope, it is easy to understand the appeal. For a commercial service, regulated environment, or deployment where compromise affects many customers, choose a system whose stated support model matches the job.

Alternatives

ProjectWhat it isPick it when
Xray-coreThe underlying proxy platform without a bundled administration panel or client database.pick this instead when you want the smallest trusted surface and are comfortable managing configuration directly.
Hiddify ManagerA multi-user anti-filtering panel with guided deployment and broad protocol support.pick this instead when end-user onboarding and a more packaged anti-censorship setup are the priority.
MarzbanAn Xray-powered multi-user panel focused on user, traffic, subscription, and node management.pick this instead when its API and user-management model fit better and you want a narrower protocol panel to compare.

What people are saying

  1. [github-trending] MHSanaei/3x-ui

Sources

  1. 3X-UI README
  2. 3X-UI v3.6.0 release
  3. Open issue: Shadowsocks TLS share-link compatibility
  4. Open proposal: encrypt node API tokens at rest
  5. Open fix: validate complete node mTLS certificate bundles
  6. Open question: preserve traffic usage during client migration