X-Panel Review: Xray Management, Limits, and Deployment Options
〔X-Panel 面板〕,Xray panel supporting multi-protocol multi-user expire day & traffic & Device restrictions (Vless & XTLS & Reality & XHTTP & Vision Seed & Switch),集成【一键配置 & 一键部署中转】生成功能。
At a glance
- What is it?
- X-Panel is a web-based Xray management panel for operators who need per-user expiry, traffic, and device restrictions. Its deployment and automation features are broad, but the README explicitly restricts it to learning, communication, and non-production use.
- Who is it for?
- X-Panel fits individual operators studying Xray panel management or accepting the project's non-production restriction. It does not fit organizations that require documented production support, an open upgrade path for every feature, or a clear server-side backup procedure.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 40 days ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
X-Panel's Xray User and Traffic Control Scope
X-Panel addresses the administrative work that follows an Xray deployment: creating users, associating them with inbounds, enforcing account rules, and managing node access from a web interface. The repository description identifies expiry periods, traffic allowances, and device restrictions as its main user-management concerns. It also names VLESS, Reality, XTLS, XHTTP, Vision Seed, and Switch as supported protocol or configuration subjects.
The intended user is an individual or small-scale operator who wants more control than a static Xray configuration provides. The README also describes paid batch licensing for fleets ranging from 5 to more than 200 VPS machines, while the basic edition remains available. That range does not prove suitability for enterprise operations. The repository gives no service-level agreement, deployment architecture, capacity targets, or support response times for those fleet sizes.
The project should not be mistaken for a general-purpose server administration console. Its documented control surface centers on Xray inbounds, users, links, certificates, routing, snapshots, and Telegram operations. Operating-system hardening, host patching, secret storage design, and centralized observability are not documented as core responsibilities. Administrators still need to secure and maintain the VPS independently.
Web UI, Xray Core, SQLite, and Telegram Data Paths
The repository layout shows a Go application rather than a static HTML-only dashboard. `main.go` is the application entry point, while `web/` contains the interface assets. `go.mod` identifies Gin for HTTP handling, GORM with the SQLite driver for database access, and `github.com/xtls/xray-core` as the core dependency. The listed module path is `x-ui`.
Based on those files, panel requests are handled by the Go application, persistent records are managed through GORM and SQLite, and the resulting Xray-related configuration is managed alongside the Xray dependency. Repository directories named `database/`, `config/`, `xray/`, and `sub/` separate these concerns. This is a code-level inference from the repository layout, not a claim about unobserved runtime behavior.
The Telegram integration is more explicit. `github.com/mymmrac/telego` is included, and the README documents a bot that can control multiple panels, switch between managed VPS instances, obtain node links, receive reports, and issue node status notifications. A local controlling bot can be connected to a primary panel, while controlled VPS instances are added through the panel's master-slave management screen with an address, credentials, and note.
Cron support through `github.com/robfig/cron/v3` aligns with the documented daily, weekly, and monthly reset and reporting features. Still, the README does not document authentication internals, database migrations, backup retention, secret encryption, or the exact failure handling used by the Telegram channel.
Docker Deployment and Persistent Host Directories
The repository does provide a Docker deployment path, although the README does not give a complete command-line installation tutorial. It directs users to `https://xeefei.blogspot.com/2025/09/x-panel.html` for detailed installation steps and says the installer presents free and Pro choices. Since no exact installation command appears in the README, none is invented here.
The checked-in `docker-compose.yml` builds the project from the repository, names the service and container, mounts local `db/` and `cert/` directories, enables `XUI_ENABLE_FAIL2BAN`, and uses host networking. The configuration is:
services:
x-panel:
build:
context: .
dockerfile: ./Dockerfile
container_name: x-panel_app
volumes:
- $PWD/db/:/etc/x-ui/
- $PWD/cert/:/root/cert/
environment:
XRAY_VMESS_AEAD_FORCED: "false"
XUI_ENABLE_FAIL2BAN: "true"
tty: true
network_mode: host
restart: unless-stoppedThis file defines the first deployment, but it does not itself execute that deployment. It also introduces an important operational constraint: `network_mode: host` means the container shares the host network namespace. Port conflicts and service exposure therefore depend on host configuration rather than Docker bridge isolation.
The build uses a Go builder image, compiles `main.go`, runs repository initialization scripts, and copies the binary into an Alpine image. The final image installs `ca-certificates`, `tzdata`, `fail2ban`, and `bash`, sets `TZ` to `Asia/Tehran`, and exposes `/etc/x-ui` as a volume. The Dockerfile and module file also differ in visible Go versions: `go.mod` declares `go 1.27`, while the builder image is `golang:1.26-alpine`. That mismatch should be checked before building.
Pro-Only Automation, Telegram Control, and Recovery
The free and Pro editions have materially different boundaries. The README says the free basic edition remains available, but its feature updates and major updates will stop, while Xray core updates may continue. The one-click configuration feature is unavailable in the free edition and reserved for Pro. New Pro functionality is also concentrated in the paid edition.
Pro adds a configuration flow for remote SOCKS5 creation, local routing, local inbound creation, and link or QR-code generation. A batch action can create 10 `VLESS + TCP + Reality + Vision` inbound combinations in one operation. This is useful for repetitive setup, but the documentation gives no rollback transaction, dry-run mode, naming collision policy, or partial-failure behavior. Automation should therefore not be treated as safe to run against a populated panel without reviewing the generated settings.
Other paid capabilities include certificate acquisition, custom certificate paths, a web SSH tool, DNS checks, route and IP quality checks, a tuning script, node and IP status notifications, scheduled Telegram reports, multi-panel control, and data snapshots. The README describes remote emergency restoration from a snapshot created while the panel was healthy. It does not document snapshot format, retention, encryption, storage location, or whether restoration protects the database, certificates, Xray state, and panel configuration together.
Version upgrades are described through the same installation workflow, with an option to move from the free edition to Pro. The free edition does not have a documented path for obtaining later paid features. This split makes the edition boundary a central upgrade consideration, not a minor packaging detail.
Administration Security and Pro-Edition Licensing Constraints
The README contains a direct warning against logging into the panel over plain HTTP. It presents SSH port forwarding or a certificate-backed HTTPS setup as the two safer administration routes. With SSH forwarding, the local terminal must remain open, and the forwarding rule must be recreated whenever panel access is needed. With HTTPS, the documented address form is `https://你的域名:端口/路径`.
The security advice is sensible because panel login credentials and management paths are sensitive. However, the README does not document panel session lifetime, CSRF handling, password hashing, rate limiting, backup encryption, or Telegram token protection. The presence of `XUI_ENABLE_FAIL2BAN` in the Docker configuration confirms an enabled feature name, not its exact jail coverage. The Dockerfile disables the default Alpine SSH and SSHD fail2ban jails, so operators should not assume that setting protects the panel's web login.
Licensing also differs by edition. The repository license is `GPL-3.0`, while Pro is sold with activation codes described as machine-bound and continuously valid. Bulk codes can bind multiple VPS instances. These are separate topics: the repository license does not by itself document the commercial terms or redistribution rights of the paid build. Anyone considering Pro must review those terms separately, without treating this review as legal advice.
X-Panel Compared with Direct Xray Configuration Management
The real alternative is direct management of Xray through manually maintained configuration files and a service manager such as the repository's `x-ui.service` and `x-ui.sh`. That approach has a different operating model. It depends on configuration syntax, file placement, process control, and an administrator's ability to validate each inbound and user record. It does not inherently provide the web controls, Telegram menus, reset schedules, or link generation described for X-Panel.
X-Panel is more appropriate when the operator values centralized user administration and repeatable inbound operations. Direct configuration is more appropriate when minimal application code, explicit configuration ownership, and independence from the panel's database are the priority. The repository does not provide enough information to claim that X-Panel is safer, faster, or more reliable than direct configuration. It only documents different interfaces and automation features.
The tradeoff is meaningful for hosted services. A web panel adds a privileged control plane around Xray, while Telegram adds another administrative channel. The README's own declaration says the project is for personal learning and communication and must not be used in production. That boundary excludes organizations expecting production support, incident commitments, or a fully documented service contract.
X-Panel Release Cadence and Version Checking
The repository is not archived, and its last push was on 2026-09-12. Releases shown in the repository include `v26.9.13` on 2026-09-12, `v26.6.18` on 2026-06-18, and `v26.4.25` on 2026-04-24. This is a visible release and commit history, but it does not establish a support commitment for any edition.
The README says development effort will focus on Pro, while the free edition will receive a lower update frequency and may only synchronize underlying updates such as Xray core versions. That statement makes release frequency an edition-specific concern. Operators of the free edition should check release notes for each update rather than assume that the newest repository release carries the newest panel features.
The last push date is the most concrete maintenance fact available. The README's production restriction and edition split still govern the decision even with recent repository activity.
Editorial conclusion
X-Panel fits individual operators studying Xray panel management or accepting the project's non-production restriction. It does not fit organizations that require documented production support, an open upgrade path for every feature, or a clear server-side backup procedure. Before adoption, verify the exact edition and server-binding rules, inspect the external installation guide, choose HTTPS or SSH port forwarding for administration, and confirm that Docker host networking matches the intended host. On the current project boundary, production use is explicitly excluded by the README.
Frequently asked questions
Can X-Panel be installed with Docker?
Yes. The repository includes a `Dockerfile` and `docker-compose.yml` that build X-Panel, mount `db/` and `cert/`, and use host networking. The README does not provide the exact Docker start command.
What is the difference between the free and Pro editions of X-Panel?
The README says the free basic edition remains available but will receive fewer feature and major updates. Pro includes one-click configuration and the newer paid features, while the free edition may continue receiving underlying updates such as Xray core versions.
Does X-Panel support restoring a panel backup?
The Pro feature list includes data snapshots and remote emergency restoration. The README does not document snapshot format, retention, encryption, or which files are included.
Can X-Panel manage multiple VPS machines through Telegram?
Yes, according to the Pro feature list, a Telegram bot can manage multiple panels and switch between controlled VPS instances. The setup requires adding controlled VPS instances and configuring the local controlling bot with a token.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/xeefei-x-panel)