chuan 913770e7c1
Docker Build / docker-build (push) Failing after 1s
ci: 增加workflow
913770e7c1 · 2026-05-27 10:07:16 +08:00
10 Commits
2026-05-27 10:07:16 +08:00
2026-05-27 09:57:34 +08:00
2026-05-27 10:07:16 +08:00
2026-05-27 00:57:55 +08:00
2026-05-27 09:50:38 +08:00
2026-05-27 09:50:38 +08:00
2026-05-27 09:55:37 +08:00
2026-05-27 00:57:55 +08:00

pyxray 使用手册

pyxray 是一个轻量级 Xray 控制面板。它负责下载 Xray 运行资源、导入代理节点、生成 Xray 配置、启动/停止 Xray,并可在 Linux/Docker 环境下为宿主机提供透明代理。

当前实现重点:

能力 状态 说明
Xray 资源管理 已实现 下载/检查 xraygeoip.datgeosite.dat
节点导入 已实现 支持 vlessvmesstrojantrojan-goshadowsocks
配置生成 已实现 根据选中节点和 settings.toml 生成 config.json
Xray 运行控制 已实现 Web 内启动/停止由 pyxray 托管的 Xray 子进程。
透明代理 已实现 生成并执行 redirect / tproxy / system_proxy / tun 相关配置和脚本。
订阅 未实现 当前只支持手动导入节点链接。
登录认证 未实现 默认不要直接暴露到不可信网络。

运行机制

flowchart LR
  UI[Web UI] --> API[Flask/Gunicorn API]
  API --> Nodes[nodes.toml]
  API --> Settings[settings.toml]
  API --> Assets[download.toml + xray assets]
  API --> Gen[config.json + transparent scripts]
  Gen --> Xray[Xray process]
  API --> Runtime[TransparentRuntime]
  Runtime --> HostNet[iptables/nft/ip rule/resolv.conf]
  Xray --> Proxy[Selected outbound node]

默认数据目录:

文件/目录 作用
data/nodes.toml 保存节点列表和当前选中节点。
data/settings.toml 保存配置页设置。
data/download.toml 保存下载页设置。
data/config.json 生成给 Xray 使用的配置。
data/xray/ 保存 xraygeoip.datgeosite.dat
data/transparent/ 保存透明代理脚本、nftables 配置和 tinytun.yaml
data/xray.log 保存 Xray 输出和 pyxray 运行日志。

Docker 部署

构建镜像:

sh scripts/build.sh

启动服务:

docker compose up -d --build

访问:

http://<host-ip>:8080

当前 compose.yaml 使用:

配置 作用
network_mode: host 让容器直接使用宿主机网络,透明代理规则作用于宿主机网络栈。
privileged: true 允许执行 iptablesnftip rule、写 /proc/sys/net/...
./data:/config 持久化 pyxray 数据和 Xray 资源。
/etc/resolv.conf:/etc/resolv.conf 允许 DNS 劫持脚本修改宿主机 DNS。
/lib/modules:/lib/modules:ro 读取宿主机内核模块信息。

Web 使用流程

  1. 打开 Web 控制台。
  2. 在“下载”页检查或下载 Xray 资源。
  3. 在“节点”页导入节点链接。
  4. 选择一个当前节点。
  5. 在“配置”页调整入站、路由、DNS、透明代理。
  6. 保存设置。
  7. 点击“启动 Xray”。
  8. 在“日志”页确认 Xray 和透明代理脚本执行结果。

透明代理建议

场景 建议
只代理本机 TCP 流量 transparent.mode = proxytransparent.type = redirect
国内直连、国外代理 transparent.mode = whitelisttransparent.type = redirect
需要 UDP/TProxy 使用 transparent.type = tproxy,确认宿主机内核和防火墙支持。
只想给应用显式设置代理 使用 system_proxy 或普通 rule HTTP/SOCKS 入站。
Docker 容器流量也要透明代理 开启 docker_transparent 并确认 docker_transparent_cidrs 覆盖实际 Docker 网段。

注意事项

项目 说明
端口冲突 启动 Xray 前会检查生成配置里的入站端口是否可用。
透明代理权限 Docker 透明代理部署需要 network_mode: hostprivileged: true
DNS 劫持 redirect + local_dns_listen 会改写 /etc/resolv.conf
多 worker 不要把 Gunicorn 改成多 worker;当前内存任务表和 Xray 子进程状态不能跨进程共享。
Web 暴露 当前没有认证,建议只在可信局域网使用。
自动订阅 当前不支持订阅更新,节点需要手动导入。

阅读和修改代码

路径 职责
pyxray/cli.py CLI 入口,默认启动 Web。
pyxray/web/server.py Flask app 装配。
pyxray/web/*.py Web API:节点、下载、配置生成、服务控制。
pyxray/web/templates/ Web UI 模板。
pyxray/web/static/ 前端交互逻辑和样式。
pyxray/libs/nodes/ 节点链接解析、标准化、持久化。
pyxray/libs/xray_config/ Xray JSON、透明代理脚本、TinyTun 配置生成。
pyxray/libs/xray_runtime.py Xray 子进程生命周期和日志转发。
pyxray/libs/xray_transparent_runtime.py 透明代理脚本执行、回滚和本地 CIDR watcher。
tests/ 单元测试和 Web API 测试。

详细结构和调用时序见 docs/infra.md

配置文档

配置总览见 docs/config.md

按分类阅读:

分类 文档
核心 docs/config/core.md
入站 docs/config/inbounds.md
路由 docs/config/routing.md
DNS docs/config/dns.md
透明代理 docs/config/transparent.md
出站和自动更新 docs/config/outbounds-auto-update.md
Xray 资源下载 docs/config/assets.md
S
Description
一个轻量xray启动管理
Readme 21 MiB
Languages
Python 85.6%
JavaScript 6.4%
HTML 6.4%
CSS 0.9%
Dockerfile 0.5%
Other 0.2%