OpenSurge for QNAP rolling test image - IPv4 same-LAN transparent proxy gateway for QNAP
689
这是测试版(rolling test image),不是稳定版。
当前构建提交:d7338b40e9f4497c97f714d04f59dd738e69c966
支持平台:linux/amd64、linux/arm64
OpenSurge for QNAP 是面向 QNAP Container Station / Docker 的单容器 IPv4 透明代理网关。它使用 QNET、TUN 和 Linux policy routing,让局域网设备按需经过 Mihomo 代理。
docker pull zykhs/opensurge-for-qnap:test
:test 是滚动更新的多架构测试标签,Docker 会按主机架构选择 amd64 或 arm64。它不适合生产环境;需要可复现部署时,请在 Docker Hub 查看并固定具体 digest。
架构标签也可单独使用:
zykhs/opensurge-for-qnap:test-amd64
zykhs/opensurge-for-qnap:test-arm64
镜像只包含 OpenSurge 程序,不包含 QNAP 的 QNET 网络、固定 IP、设备权限和持久化挂载配置。推荐从 GitHub 下载部署文件,或按下面的 Container Station 手动设置逐项配置。
先从 GitHub 仓库下载部署文件,进入 deploy/qnap 目录:
https://github.com/zyk1172/OpenSurge-for-QNAP/tree/master/deploy/qnap
复制并编辑环境文件:
cp .env.example .env
至少确认以下配置(按你的实际网络修改):
OPENSURGE_IMAGE=zykhs/opensurge-for-qnap:test
OPENSURGE_IP=192.168.2.241
OPENSURGE_SUBNET=192.168.2.0/24
OPENSURGE_GATEWAY=192.168.2.1
OPENSURGE_PARENT_INTERFACE=br0
OPENSURGE_DATA_PATH=/share/Container/opensurge
其中:
不知道 QNET 父接口时先运行:
sh ./preflight.sh --list-interfaces
sh ./preflight.sh
预检通过后启动:
docker compose up -d
打开 http://192.168.2.241:8080(请替换为你的 OPENSURGE_IP)。首次创建管理员账户所需的一次性 bootstrap token 可从容器日志中获取:
docker logs opensurge
之后在 Web 的“代理与规则源”中导入 HTTPS Mihomo 订阅或本地 YAML 配置,再启动网关。
如果不使用 Compose,在 Container Station 图形界面创建容器时,不能只填写镜像名。不同 QTS / Container Station 版本的字段名称可能略有不同,但以下值必须等价配置。
在 Container Station 的网络设置中创建 QNET 网络(如果界面允许在创建容器时直接配置,也按同样的参数填写):
环境变量至少填写:
TZ=Asia/Shanghai
OPENSURGE_ROLE=gateway
OPENSURGE_WEB_ADDR=0.0.0.0:8080
OPENSURGE_SEED_LAN_IP=192.168.2.241
OPENSURGE_SEED_LAN_CIDR=192.168.2.0/24
OPENSURGE_SEED_UPSTREAM_GATEWAY=192.168.2.1
OPENSURGE_CONTAINER_INTERFACE=eth0
其中 IP、网段、上游网关和父接口必须替换成你的真实网络值。Web UID/GID 可按 NAS 文件权限需要设置,通常为 OPENSURGE_WEB_UID=1000、OPENSURGE_WEB_GID=100。
当前产品数据面为 IPv4-only,IPv6 保持关闭。Container Station 如果提供 sysctl 设置,请逐项填写:
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.eth0.disable_ipv6=1
不要重新启用 IPv6,也不要用全局网络模式替代 QNET。
只有在确实需要让 QNAP NAS 宿主机自身也使用 OpenSurge 时才启用。Compose 用户直接使用:
docker compose -f docker-compose.yml -f docker-compose.host-takeover.yml up -d
如果在 Container Station 手动配置,还要额外增加:
然后在 Web 中开启“让 NAS 使用 OpenSurge”。启用前必须确认持久化配置中的 upstream_gateway 是有效且非空的上游路由 IPv4;不能留空,否则会出现 “QNAP fallback gateway is invalid” 错误。
Host Takeover 不使用 privileged: true,不挂载 Docker Socket,也不修改 QTS 默认网关;异常时 OpenSurge 会尝试回退到 QTS 原路径。
不要一开始就修改全家的 DHCP。先选一台手机、电脑或电视,将它的网络设置改为:
IPv4 网关 = OpenSurge IP
DNS = OpenSurge IP
例如:
IPv4 网关 = 192.168.2.241
DNS = 192.168.2.241
确认 DNS、DIRECT、PROXY、TCP、视频和下载等实际场景正常后,再逐步扩大使用范围。
保留同一个 /data 持久化目录,只更新镜像:
docker compose pull
docker compose up -d
不管是升级还是重建,都不要删除 /share/Container/opensurge,其中保存账户、配置、订阅和恢复状态。
docker ps --filter name=opensurge
docker logs --tail 200 opensurge
docker inspect --format '{{json .State.Health}}' opensurge
docker exec opensurge ip -br addr
docker exec opensurge ip route
docker exec opensurge ip rule
这是 OpenSurge for QNAP 的测试镜像,不代表稳定版或生产可用性。
Content type
Image
Digest
sha256:db910b238…
Size
70.6 MB
Last updated
20 days ago
docker pull zykhs/opensurge-for-qnap