系统组件
仓库
| 组件 | 仓库 | 镜像 |
|---|---|---|
| 面板(API + Web 界面) | xray-panel/backend | ghcr.io/xray-panel/backend |
| 节点 | xray-panel/node | ghcr.io/xray-panel/node |
| 订阅页面 | xray-panel/subscription-page | ghcr.io/xray-panel/subscription-page |
| 部署 | xray-panel/deploy | compose 文件和 nginx 配置 |
面板前端会打包进后端镜像(容器内的 frontend-dist),
因此不需要为界面单独运行一个容器。
面板
- HTTP API 和 Web 界面位于
APP_PORT(默认 3000,仅通过反向代理对外)。 - PostgreSQL —— 主要存储。容器
xpanel-db。 - Valkey(兼容 Redis)—— 队列、缓存、pub/sub。容器
xpanel-redis。 - Prometheus 指标位于
METRICS_PORT(默认 3001),由METRICS_USER/METRICS_PASS的 basic auth 保护。
面板是唯一存储个人数据的组件。
节点
节点没有数据库,不会主动连接面板。面板通过 NODE_PORT(默认 2222)
以 mutual TLS 和 JWT 访问它。由此得到一个重要结论:NODE_PORT 必须
能从面板服务器访问,而不是从管理员的浏览器访问。
节点存储什么、访问什么:
- 不会把用户数据写入磁盘 —— 只有 Xray 日志写入
/var/log/xray(限制 10 MB,不归档); - 内存中保存客户端 UUID 集合,用于检测配置变更;
- 没有到面板的出站连接 —— 只有入站;
- 唯一携带用户数据的出站请求是 torrent-blocker webhook, 且仅在插件中启用时才会发出。
订阅页面
独立容器,通过 API 令牌从面板读取数据,向最终用户展示美化后的连接列表。
运行在 APP_PORT(默认 3010),对外使用带 HTTPS 的独立子域名。
变量名 REMNAWAVE_PANEL_URL 和 REMNAWAVE_API_TOKEN 为兼容性而保留:
这样订阅页面也能与旧版面板配合使用。
端口
| 端口 | 组件 | 访问 |
|---|---|---|
| 3000 | 面板 | 仅 127.0.0.1,通过 nginx 对外 |
| 3001 | 面板指标 | 仅 127.0.0.1 |
| 3010 | 订阅页面 | 仅 127.0.0.1,通过 nginx 对外 |
| 2222 | 节点 | 可从面板服务器访问 |
| 任意 | Xray 代理 | 对客户端开放 |
许可证与署名
XLADA 以 AGPL-3.0-only 发布,是 Remnawave 的衍生作品。AGPL 第 13 条要求服务用户能够获取源代码:请确保你的用户可以访问 组织仓库的链接。