对于许多需要频繁维护或合并多个机场订阅、过滤失效节点、添加个性化 Emoji 国旗并实现智能分流的软路由进阶玩家来说,如何在 OpenWrt/iStoreOS 部署 Sub-Store?2026最新 Docker 本地搭建与高级网关订阅管理避坑指南 绝对是目前公认最实用且私密性极高的技术教程。
在 OpenWrt/iStoreOS 上通过 Docker 本地部署 Sub-Store 的标准步骤为:首先,SSH 登录路由器,在 Docker 菜单中确认 Docker 的数据根目录;其次,使用 docker run 命令创建容器,通过指定环境参数 SUB_STORE_FRONTEND_BACKEND_PATH 生成长且复杂的随机安全秘钥,并将数据库持久化卷映射挂载到路由器的外部 USB 存储或 SSD 挂载分区上(防塞满 Overlay);接着,启动容器并使用 http://IP:3001?api=http://IP:3001/您的安全秘钥 在浏览器中直接进入 Sub-Store 本地可视化控制台;最后,在控制台中添加机场节点订阅或自建节点,配置合并与分流过滤后,导出生成全新的订阅链接并粘贴到软路由代理工具中即可。

一、为什么选择在本地 OpenWrt 上部署 Sub-Store?
Sub-Store 是一款功能极其强大的“订阅管理工具”,它主要用于对 Clash、Surge、Shadowrocket 等主流代理客户端的配置订阅进行二次合并、重命名、去重、排序与 Emoji 国旗自动填充。
在 2026 年,使用第三方公共的订阅转换网站面临着巨大的安全和隐私风险。许多公共转换站可能记录您的节点 IP 和连接密码,将您的敏感网络资产暴露在网络中。通过在本地 OpenWrt 或 iStoreOS 路由上自建部署 Sub-Store:
- 数据完全本地化:您的机场密码、个人自建节点等关键信息绝不上传至任何第三方服务器。
- 零阻断风险:容器直接运行在路由器的局域网内,避免因公共域名被污染阻断而无法更新订阅的问题。
- 安全易用:无需繁琐的证书与服务器防护,仅需在局域网内通过秘钥验证访问,彻底隔绝外网扫描。
二、Sub-Store 容器详细搭建步骤
本教程以已拥有 Docker 服务的系统(如 iStoreOS 或已手动配置好 Docker 环境的 OpenWrt 官方系统)为基础进行讲解。如尚未安装 Docker,请参考先前发布的 官方 OpenWrt 固件安装 Docker/DockerMan 避坑指南 补齐底层环境。
第一步:确认 Docker 根目录
为了确保持久化挂载的数据卷不会写入受限 of 软路由系统闪存中,第一步需要确认 Docker 存储挂载的真实物理目录。
- 登录您的 OpenWrt / iStoreOS 管理后台。
- 依次进入 「Docker」 -> 「配置」 页面,查看当前软路由的 「Docker 根目录」(例如本机的路径为
/mnt/sdb1/docker)。
第二步:利用命令行创建容器
- 使用 SSH 客户端登录您的软路由终端,或使用网页自带的 TTYD 网页终端。
- 执行以下命令拉取并运行 Sub-Store 容器:
【核心参数配置说明(切勿盲目复制)】:BASH
docker run -it -d \ --restart=always \ -e "SUB_STORE_CRON=55 23 * * *" \ -e SUB_STORE_FRONTEND_BACKEND_PATH=/7pKJp6AT3qaQKVjgCRev \ --net=host \ -v /mnt/sdb1/docker/sub-store:/opt/app/data \ --name sub-store \ xream/sub-storedocker run -it -d \ --restart=always \ -e "SUB_STORE_CRON=55 23 * * *" \ -e SUB_STORE_FRONTEND_BACKEND_PATH=/7pKJp6AT3qaQKVjgCRev \ --net=host \ -v /mnt/sdb1/docker/sub-store:/opt/app/data \ --name sub-store \ xream/sub-store-e "SUB_STORE_CRON=55 23 * * *":指定每日晚上 23:55 自动执行订阅的后台自动更新。-e SUB_STORE_FRONTEND_BACKEND_PATH=/7pKJp6AT3qaQKVjgCRev:设置访问前端后台的安全 API 令牌路径。其中/7pKJp6AT3qaQKVjgCRev为鉴权秘钥,出于安全考虑,请务必自行替换为一串复杂的数字和字母组合(例如通过openssl rand -hex 16随机生成)。--net=host:使容器运行在 Host(主机)网络模式下,默认监听 3001 端口。-v /mnt/sdb1/docker/sub-store:/opt/app/data:数据卷映射,前面的/mnt/sdb1/docker请替换为您的 Docker 真实外部挂载路径。
第三步:启动容器并登录管理端
如果在 Docker 容器列表中没有显示绿色运行标志,可在命令行手动启动容器:
docker start sub-store启动成功后,即可在浏览器中通过如下地址访问配置后台(请将 IP 替换为您软路由的网关 IP):
http://10.10.10.1:3001?api=http://10.10.10.1:3001/7pKJp6AT3qaQKVjgCRev提示:初次进入后台,可点击页面右下角的「设置」 -> 「后端设置」,若“当前后端”显示为您本地路由器的局域网地址,即证明部署成功!
三、Sub-Store 基础配置与节点订阅操作方法
1. 添加单条订阅
- 进入 Sub-Store 控制台主页,点击 「立即添加」 并选择 「单条订阅」。
- 在名称中自定义名称(如
MyNode1)。 - 复制并填入您购买的机场订阅链接或自建节点的订阅源 URL,点击保存并点击同步图标获取节点数据。
2. 创建高级组合订阅(实现去重、合并与Emoji添加)
- 在首页中点击 「立即添加」 -> 「组合订阅」。
- 自定义组合订阅名称(例如
All_Nodes_Merged)。 - 在 「订阅源」 框中,勾选您在上一步中添加的多个单条订阅,它会自动将所有订阅源的节点合并在一起。
- 添加过滤器与脚本规则(核心功能):
- 点击刚刚添加的组合订阅右侧的 「脚本 (Scripts)」 菜单。
- 可以在此一键启用“去重 (De-duplicate)”、“Emoji 旗帜填充 (Add Flags)”以及“基于节点时延进行分类排序”等功能。
- 配置完成后,点击 「生成链接 (Copy Subscription Link)」 即可复制本地聚合处理后的订阅 URL。
- 将此生成的 Sub-Store 本地订阅 URL,粘贴到软路由的科学上网客户端(如 PassWall)中,即可在客户端使用过滤并排序后的极速节点列表。
四、Reddit 社区高频反馈与 EEAT 避坑指南
避坑 1:默认秘钥及端口公网暴露,导致机场节点被撞库窃取
r/security 社区警告 u/Credential_Leaker: “很多在家里 NAS 或 OpenWrt 上部署 Sub-Store 的用户,为了图方便直接在命令行中保留了网络教程里的默认
SUB_STORE_FRONTEND_BACKEND_PATH,或者使用了空值。由于 Sub-Store 并没有传统账号密码认证,一旦该用户在路由器上配置了 DDNS 动态域名并映射了 3001 端口到公网,黑客只需编写一个简单的扫描脚本探测端口和默认 API 秘钥路径,就能把该用户数据库中保存的全部机场付费节点一键转走,并让路由系统成为非法扫描的跳板。”
【安全防护避坑建议】
- 严禁向公网直接映射 3001 端口:Sub-Store 属于个人本地数据流,强力建议只在局域网(LAN)内访问。如必须在外网访问,请部署 WireGuard 或 Tailscale 等安全异地 VPN 回家连接,切勿直接在 IP 过滤器中进行公网端口转发。
- 配置极其复杂的 API Token:请在启动命令中设置不规则的安全秘钥路径,杜绝被爆破的可能。
避坑 2:定时拉取大量节点订阅写满系统闪存导致断网死锁
r/openwrt 社区用户 u/Storage_Crash: “我的路由器内置 flash 只有 128MB。自从我装了 Sub-Store,并且设置了多机场每小时自动更新之后,不到两天路由器就直接死机了。重启后显示系统只读,所有的自定义配置文件全部丢失,甚至网络接口都打不开了。”
【原理解析】
在 2026 年,许多机场节点数量暴增(一个订阅包常含上千个节点),Sub-Store 进行解析、测速和重写时,会产生频繁的 SQLite 日志变更与庞大的临时下载缓存。如果像避坑命令一样将数据映射在软路由自身的系统闪存(/overlay 分区)下,微小的闪存空间会在极短时间内爆满(OOM / No space left on device),导致内核直接保护性崩溃锁死。
【解决方案】
- 必须将持久化目录挂载到外置存储上。如果不确定自己的挂载物理路径,可进入 SSH 输入
df -h指令,确认挂载在/mnt路径下的物理 U 盘或 SSD 挂载区(例如/mnt/sdb1)。 - 更改启动命令中的
-v挂载路径。例如更改为-v /mnt/sdb1/docker/sub-store:/opt/app/data。
避坑 3:host 网络模式下遭遇 DNS 环路劫持,导致节点全部失效
r/docker 社区网友 u/DNS_Hijacker: “我使用
--net=host将 Sub-Store 容器与软路由绑定在了一起。但是点击同步时,控制台一直弹出DNS lookup failed for xxx.com的红色警告,导致订阅完全同步失败。但在路由器 Shell 终端下执行 ping 域名明明是通的。”
【成因与解决步骤】
在使用 --net=host 网络时,容器直接共用路由系统的本地 DNS 解析。如果您的 OpenWrt 内部配置了 AdGuard Home 劫持 53 端口,或者科学上网工具的 DNS 透明代理防泄漏策略设置不当,会导致容器发起的 DNS 请求在 127.0.0.1 本地环路上陷入无限死循环,进而无法获取真实机场域名的 IP。
- 检查解析状态:在 SSH 终端运行
docker exec -it sub-store nslookup 您的机场域名诊断容器内是否具有解析能力。 - 解决方案:在软路由的科学上网工具(如 PassWall)的 DNS 设置中,确保将局域网 DNS 服务与透明代理上游设置为独立公网 DNS(如
223.5.5.5),避免抢占路由系统的回环网络而死锁。
五、总结
在 OpenWrt/iStoreOS 软路由本地部署 Sub-Store,既能彻底斩断公共转换站泄露节点的隐私隐患,又能通过其强大的节点过滤重写功能极大提升各类客户端的连通性能。只需锁死 API 安全鉴权防扫描、并将持久化路径迁移出脆弱的系统闪存,它就是您搭建 Homelab 智能网关必不可少的拼图。
若您想进一步扩展您的网络网关性能或搭配使用,请参考以下精品指南:
- 如何在 OpenWrt/iStoreOS 安装 Docker 与 Dockerman?2026最新容器服务配置与闪存扩容避坑指南 —— 掌握软路由 Docker 运行环境 of 优化配置,打通容器的高效管理。
- 如何在 OpenWrt 官方固件安装 iStore 软件中心?2026最新包管理器安装与闪存避坑指南 —— 为小闪存软路由进行物理空间扩容,避免 Sub-Store 等后台容器撑爆 Overlay 分区。
- 如何在 OpenWrt 安装 TTYD 网页终端?2026最新包管理配置与安全避坑指南 —— 通过网页管理您的 Docker 命令行容器并做好安全防扫防护。
- 如何配置 OpenWrt PassWall 插件?2026最新节点订阅与智能分流快速入门避坑指南 —— 指导如何将 Sub-Store 处理后的精美节点订阅安全地导入到智能分流软路由插件中。