Files
3x-ui/README.zh_CN.md
T
Kuzz007 ab39f14b18 docs: update all 7 READMEs for the embedded AmneziaWG architecture
Replace the kernel-module/DKMS/awg-quick description (What's different,
Supported Platforms, Acknowledgment) with the embedded amneziawg-go +
gVisor architecture, and note the temporarily-unsupported per-client
IPv6 identity and port-forwarding gap until their fast-follow releases.
2026-08-02 20:34:57 +03:00

212 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) | [Türkçe](/README.tr_TR.md)
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./media/3x-ui-dark.png">
<img alt="3x-ui" src="./media/3x-ui-light.png">
</picture>
</p>
<p align="center">
<a href="https://github.com/Kuzz007/3x-ui/actions"><img src="https://img.shields.io/github/actions/workflow/status/Kuzz007/3x-ui/release.yml.svg" alt="Build"></a>
<a href="#"><img src="https://img.shields.io/github/go-mod/go-version/Kuzz007/3x-ui.svg" alt="GO Version"></a>
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html"><img src="https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true" alt="License"></a>
</p>
**这是 [3X-UI](https://github.com/MHSanaei/3x-ui) 的个人分支(fork**——一个先进的开源 Web 控制面板,用于管理 [Xray-core](https://github.com/XTLS/Xray-core)——增加了一项主要功能:**原生 AmneziaWG 支持**,作为与 VLESS、VMess、Trojan 等并列的一等协议。3X-UI 原本具备的一切(多协议入站、按客户端流量统计、订阅、多节点、Telegram 机器人)均保持不变,运行方式与原项目完全一致。
这个分支是为作者自己的路由器和个人服务器构建的;它并不打算替代或与原项目竞争。如果您需要一个通用面板,请前往 [MHSanaei/3x-ui](https://github.com/MHSanaei/3x-ui)——以下内容仅记录本分支的差异之处。
> [!IMPORTANT]
> 本项目仅供个人使用。请勿将其用于非法目的,也请勿在生产环境中使用。
## 本分支的不同之处:AmneziaWG
[AmneziaWG](https://github.com/amnezia-vpn/amneziawg-linux-kernel-module) 是 WireGuard 的一个变体,增加了一层混淆(垃圾数据包、随机填充、重写魔术头部),旨在击败基于 DPI 的协议指纹识别——同样的隧道,但在线路上不再表现得像一条隧道。
- **内置实现,而非内核模块。** AmneziaWG 完全在面板进程内部运行([amneziawg-go](https://github.com/amnezia-vpn/amneziawg-go) 基于用户态网络协议栈实现)——无需编译 DKMS 模块,不与 Secure Boot 冲突,无需特权 sidecar 容器,宿主机上完全不需要安装任何东西。
- **一等协议。** AmneziaWG 入站与其他协议共享同一张 `Inbound` 表,因此可以免费获得批量操作、二维码/配置下载弹窗以及订阅链接——无需学习任何新东西。
- **完整的 AmneziaWG 2.0 混淆功能**——Jc/Jmin/Jmax(垃圾数据包)、S1–S4(数据包填充)、H1–H4(魔术头部)以及 I1 签名数据包,均可按入站单独编辑,并提供一键随机化按钮,同时为旧版客户端提供 1.x 兼容模式。
- **每个客户端的流量已经在通过 Xray。** 无需 TPROXY,也无需另行启用网桥:每个 AmneziaWG 入站都会通过本地回环直接转发到其专属的 Xray SOCKS5 入站,因此按客户端的流量统计、在线状态、sniffing,以及面板中已有的"路由"页面规则,都会像其他任何协议一样自动生效——无需额外配置。
- **真正的 `vpn://` 分享链接** — 每个客户端的复制链接/二维码以及订阅端点会生成官方 AmneziaVPN 应用真正期望的 `vpn://` 格式(纯文本 `.conf` 的 base64url 编码),而不是该应用无法导入的自造 URI 格式。
- **本次迁移之后暂不支持**:每个客户端独立的公网 IPv6 地址,以及按客户端的端口转发,二者都依赖于旧内核模块在宿主机层面的 iptables 规则,而内置架构目前还没有与之等效的实现。两者均已计划在后续版本中推出;已保存的相关设置不会丢失,只是在此之前处于未生效状态。
## 本分支的其他更改
除 AmneziaWG 之外,本分支的其他小改进会在添加时记录于此:
- **路由规则自动补全** — Xray 路由规则编辑器中的 Domain/IP 字段现在会根据 Xray bin 文件夹中实际安装的 `.dat` 文件实时提示 geosite/geoip 分类(例如输入 "you" 会提示 `geosite:youtube`),包括通过 Geodata 自动更新功能添加的自定义文件(例如 `geosite_roscom.dat`)。自由文本输入方式与之前完全相同。
- **AmneziaWG 与 MTProto 的实时速度** — 此前 AmneziaWG 和 MTProto`mtg`)入站/客户端的 Speed 列会显示"--",即使累计流量统计是正确的——因为两者都不在 Xray-core 自身的运行时内运行,因此对其统计 API 不可见。现在两者都会像其他协议一样广播实时速度。
- **`bin/` 中的自定义文件在更新后得以保留** — 此前重新安装/更新会在解压新版本之前完全清空整个 `bin/` 文件夹,悄悄删除任何手动放置在那里的文件(最常见的是通过 `ext:<file>:<code>` 被路由规则引用的自定义 geoip/geosite 文件),并导致下次启动时所有入站全部失效。现在安装程序会先备份 `bin/`,仅恢复新版本未提供的文件。
## 功能特性
- **多协议入站** — VLESS、VMess、Trojan、Shadowsocks、WireGuard、**AmneziaWG**、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、自定义路由规则、负载均衡器和出站代理链。
- **内置订阅服务器**,支持多种输出格式和[自定义页面模板](docs/custom-subscription-templates.md)。
- **Telegram 机器人**,用于远程监控和管理。
- **RESTful API**,带有面板内置的 Swagger 文档。
- **灵活的存储** — SQLite(默认)或 PostgreSQL。
- **13 种界面语言**,支持深色和浅色主题。
- **Fail2ban 集成**,用于强制执行按客户端的 IP 限制。
## 截图
<details>
<summary>点击展开</summary>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./media/01-overview-dark.png">
<img alt="Overview" src="./media/01-overview-light.png">
</picture>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./media/02-add-inbound-dark.png">
<img alt="Inbounds" src="./media/02-add-inbound-light.png">
</picture>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./media/03-add-client-dark.png">
<img alt="Add client" src="./media/03-add-client-light.png">
</picture>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./media/05-add-nodes-dark.png">
<img alt="Configs" src="./media/05-add-nodes-light.png">
</picture>
</details>
## 快速开始
```bash
curl -fsSL https://raw.githubusercontent.com/Kuzz007/3x-ui/main/install.sh | bash
```
若要安装特定版本,请在命令后附加对应的标签(例如 `v3.5.0-awg.1`):
```bash
curl -fsSL https://raw.githubusercontent.com/Kuzz007/3x-ui/main/install.sh | bash -s v3.5.0-awg.1
```
若要安装滚动更新的 **dev** 版本(来自 `main` 的最新逐次提交预发布版本,而非稳定版本),请传入 `dev`
```bash
curl -fsSL https://raw.githubusercontent.com/Kuzz007/3x-ui/main/install.sh | bash -s dev
```
本分支自己的稳定版本使用 `<上游基础版本>-awg.N` 的标签格式(例如 `v3.5.0-awg.1`,构建于上游所称的 `v3.5.0` 之上)——绝不会是单纯的 `vX.Y.Z`——这样就不会与 MHSanaei/3x-ui 官方相同编号的正式版本混淆。
安装过程中会生成随机的用户名、密码和访问路径。安装完成后,运行 `x-ui` 打开管理菜单,您可以在其中启动/停止服务、查看或重置登录凭据、管理 SSL 证书等。
有关本 README 未涵盖的完整面板文档,请参阅[原项目 Wiki](https://github.com/MHSanaei/3x-ui/wiki)——其中没有任何内容专属于本分支,因此完全适用。
### 无人值守安装
安装程序也可以**非交互式**运行,适用于 cloud-init。
设置 `XUI_NONINTERACTIVE=1`(或在无 TTY 的情况下通过管道传入),它就会全程
零提示地完成端到端安装,生成随机凭据并写入
`/etc/x-ui/install-result.env`。请参阅 [`deploy/`](deploy/)
- [Cloud-init user-data](deploy/cloud-init/) — 在任意云平台上无人值守安装(Hetzner/AWS/DO/Vultr/GCP/Azure/Oracle
- [Hetzner Cloud 说明](deploy/marketplace/hetzner/) — 在 Hetzner 上基于 cloud-init 的部署
## 支持的平台
**操作系统:** Ubuntu、Debian、Armbian、Fedora、CentOS、RHEL、AlmaLinux、Rocky Linux、Oracle Linux、Amazon Linux、Virtuozzo、Arch、Manjaro、Parch、openSUSE (Tumbleweed / Leap) 和 Alpine。(原项目也发布 Windows 版本;本分支的 CI 不这样做——这里的一切都面向运行 Linux 的服务器/路由器。)
**架构:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`
AmneziaWG 直接内置于面板二进制文件本身(参见[本分支的不同之处](#本分支的不同之处amneziawg)一节)——无需内核模块,无需单独的安装步骤,也无需针对特定发行版的设置。
## 数据库选项
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 文件保持不变;在确认新后端正常工作后,请手动删除它。
## 环境变量
| 变量 | 说明 | 默认值 |
| --- | --- | --- |
| `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_INIT_WEB_BASE_PATH` | Web 面板的初始 URI 路径 | `/` |
| `XUI_ENABLE_FAIL2BAN` | 启用基于 Fail2ban 的 IP 限制 | `true` |
| `XUI_LOG_LEVEL` | 日志级别(`debug``info``warning``error` | `info` |
| `XUI_DEBUG` | 启用调试模式 | `false` |
| `XUI_TUNNEL_HEALTH_MONITOR` | 启用隧道健康监控(探测某个 URL,在连续多次失败后重启 xray;重启会断开所有客户端) | `false` |
| `XUI_TUNNEL_HEALTH_PROXY` | 探测请求所经过的代理;将其指向本地 xray 入站,使探测能够测试隧道(例如 `socks5://127.0.0.1:1080`)。留空表示探测仅检查主机连通性 | — |
| `XUI_TUNNEL_HEALTH_URL` | 用于检测隧道健康状况的探测 URL | `https://www.cloudflare.com/cdn-cgi/trace` |
| `XUI_TUNNEL_HEALTH_INTERVAL` | 两次探测之间的间隔 | `30s` |
| `XUI_TUNNEL_HEALTH_TIMEOUT` | 单次探测的超时时间 | `10s` |
| `XUI_TUNNEL_HEALTH_FAILURES` | 触发重启前的连续失败次数 | `3` |
| `XUI_TUNNEL_HEALTH_COOLDOWN` | 两次连续重启之间的最小间隔 | `5m` |
## 支持的语言
面板界面提供 13 种语言:
English · فارسی · العربية · 中文(简体) · 中文(繁體) · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil)
## 开发者说明
这是一个个人分支,不寻求外部贡献者,但如果您自己也在这份代码基础上进行开发,[CONTRIBUTING.md](/CONTRIBUTING.md) 仍然包含了搭建本地开发环境(Go/Node 版本、CGo 所需的 C 编译器、build/lint/test 命令)的详细且有用的说明。
## 致谢
本分支完全构建于 [MHSanaei/3x-ui](https://github.com/MHSanaei/3x-ui) 之上——整个面板、多协议支持以及底层架构都是他们的成果;**AmneziaWG 支持是这里唯一新增的内容。** 如果您觉得原项目有用,原作者的赞助链接依然是表达支持的正确去处:
<a href="https://www.buymeacoffee.com/MHSanaei" target="_blank">
<img src="./media/default-yellow.png" alt="Buy Me A Coffee" style="height: 70px !important;width: 277px !important;" >
</a>
</br>
<a href="https://nowpayments.io/donation/hsanaei" target="_blank" rel="noreferrer noopener">
<img src="./media/donation-button-black.svg" alt="Crypto donation button by NOWPayments">
</a>
本分支中 AmneziaWG 的实现参考/借鉴自:
- [amnezia-vpn/amneziawg-go](https://github.com/amnezia-vpn/amneziawg-go) — 本分支直接内嵌到面板进程中的用户态 AmneziaWG 实现,基于 [gVisor](https://gvisor.dev/) 网络协议栈,取代了下方原先基于内核模块的后端。
- [MHSanaei/3x-ui#6086](https://github.com/MHSanaei/3x-ui/pull/6086) — 针对原项目提出的原始 AmneziaWG PRDocker sidecar 方案);本分支重用了其 schema/前端结构。
- [coinman-dev/3ax-ui](https://github.com/coinman-dev/3ax-ui) — 一个独立的分支,已经在生产环境中运行原生 AmneziaWG;本分支在此次重写之前基于内核模块的 (`awg-quick`) 管理器以及 AmneziaWG 2.0 混淆参数生成器均源自其 `awg/` 包。
## 特别感谢
- [alireza0](https://github.com/alireza0/)
- [Iran v2ray rules](https://github.com/chocolate4u/Iran-v2ray-rules) (许可证: **GPL-3.0**): _增强的 v2ray/xray 和 v2ray/xray-clients 路由规则,内置伊朗域名,专注于安全性和广告拦截。_
- [Russia v2ray rules](https://github.com/runetfreedom/russia-v2ray-rules-dat) (许可证: **GPL-3.0**): _此仓库包含基于俄罗斯被阻止域名和地址数据自动更新的 V2Ray 路由规则。_
## 社区工具
社区围绕 3x-ui 构建的工具和集成。
- [terraform-provider-3x-ui](https://github.com/batonogov/terraform-provider-threexui) (许可证: **MIT**): _使用 Terraform / OpenTofu 通过代码管理入站、客户端、面板设置和 Xray 配置。_