实测环境:Maxtang BYT50 / Intel Celeron J1900 / ImmortalWrt 24.10.6 (x86/64) / KSpeeder iStore 版 V0.8.1
最后更新:2026-11-08
如果你在 ImmortalWrt 上通过 iStore 装了 KSpeeder,但发现内置镜像源不够用、想加自己的源,却发现网上教程教的都是 Docker 部署版的路径,跟 iStore 版完全对不上——这篇就是写给你的。iStore 版的配置文件位置、生效方式,以及自建源的格式,都和 GitHub 项目里的 Docker 版本不一样。
这篇教程覆盖三件事:iStore 版自建源怎么写、改完怎么让它生效,以及 ImmortalWrt 上 Docker 加速配置到底该改哪个文件。
iStore 版和 Docker 版,配置文件根本不是一个地方
这是最容易踩的坑。GitHub 项目 kspeeder/docker_kspeeder 里写的配置路径是 /kspeeder-config/nodes.yaml,推荐用 KS_USER_NODES_CONFIG 环境变量指定。
但 iStore 安装的 KSpeeder V0.8.1,配置目录在 /Configs/iStoreEnhance,自建源文件是 kspeeder.yml,格式也不是 nodes.yaml 那套。
如果你照着 GitHub 的教程去改 nodes.yaml,改完发现毫无效果,原因就在这里。
第一步:找到并编辑 iStore 版的自建源文件
SSH 登录软路由,编辑:
| |
内容格式如下(把你信得过的镜像源填进去):
| |
这个格式是 iStore 版专用的,和 Docker 版的 nodes.yaml(使用 docker:、domainfold: 等块结构)完全不同。不要在 iStore 版里套用 nodes.yaml 的写法。社区讨论也确认了 iStoreOS 下的 KSpeeder 需要在页面里修改服务器列表后再关闭、启动才能生效。
第二步:改完必须手动“关一次再开一次”
iStore 版的配置重载不依赖 docker restart 命令,而是通过 LuCI 界面操作。
操作路径:LuCI → iStore → KSpeeder → Global settings
- 取消勾选【启用】,点一次保存/应用。
- 重新进入该页面,勾选【启用】,再点一次保存/应用。
这个“关→开”的动作会触发 KSpeeder 重新读取 kspeeder.yml。只改文件不重启服务,新源不会生效。
第三步:验证自建源是否被加载
访问管理面板:
| |
在面板里查看镜像服务器列表,确认你刚才写入 kspeeder.yml 的地址是否出现。
如果没出现,检查两件事:
- 文件路径是否正确:
/Configs/iStoreEnhance/kspeeder.yml。 - 是否严格执行了“关→开”步骤。
科学上网环境下的关键设置:把加速域名加入直连
如果你软路由上开着代理/科学上网软件,有一个必须做的配置:把 registry.linkease.net 和 registry.linkease.net:5443 加入直连规则,不能走代理。
原因很简单:registry.linkease.net 在你的局域网里应该解析到软路由本机(或部署 KSpeeder 的设备),走代理会把流量绕到外部,导致加速失效甚至拉取超时。
在你的代理软件(OpenClash / PassWall / SSR+ 等)的规则里,添加直连域名:
| |
端口 5443 如果规则支持按端口区分,一并放行。核心原则就一条:这个域名必须直连,不走任何代理节点。
ImmortalWrt 上配 Docker 加速:别改 daemon.json,改 /etc/config/dockerd
这是 ImmortalWrt 和其他 Linux 发行版最大的不同。很多教程教你编辑 /etc/docker/daemon.json,但在 ImmortalWrt 上,这个文件改了大概率不生效——有用户明确反馈“/etc/docker/daemon.json 我放了文件,重启了 docker 不生效”。
ImmortalWrt 的 Docker 包使用 UCI 配置体系,正确的入口是 /etc/config/dockerd。OpenWrt 官方软件源里的这个文件模板本身就包含 list registry_mirrors 的示例。
正确的配置方式
SSH 登录软路由,编辑:
| |
在 config globals 'globals' 段落中添加:
| |
保存后重启 Docker:
| |
验证:
| |
看到 https://registry.linkease.net:5443 就说明生效了。
关于 /tmp/dockerd/daemon.json
你在 /tmp/dockerd/daemon.json 里看到的 registry-mirrors 配置,是 ImmortalWrt 的 Dockerd 启动脚本根据 UCI 配置运行时生成的。直接编辑 /tmp 下的这个文件,Docker 重启后会丢失或被覆盖。不要改它。
局域网其他设备怎么用这个 KSpeeder
如果你的 NAS 或另一台 Linux 设备也想走软路由的 KSpeeder,需要两步。
1. 让其他设备能解析加速域名
在其他设备上把 registry.linkease.net 指向软路由 IP。Linux 设备编辑 /etc/hosts:
| |
添加一行(把 IP 换成你的软路由实际地址):
| |
2. 配置该设备的 Docker
注意:这一步取决于那台设备是什么系统。
- 如果是 Ubuntu、Debian 等标准 Linux 发行版,通常使用
/etc/docker/daemon.json。 - 如果是群晖等 NAS,根据其 Docker 管理界面或系统配置方式设置镜像加速。
- 如果也是 OpenWrt / ImmortalWrt,同样使用
/etc/config/dockerd,不要照搬标准 Linux 的配置方式。
标准 Linux(systemd)配置示例:
编辑 /etc/docker/daemon.json:
| |
重启 Docker:
| |
OpenWrt / ImmortalWrt 配置示例:
编辑 /etc/config/dockerd,在 config globals 'globals' 段落中添加:
| |
重启 Docker:
| |
验证:
| |
J1900 上的缓存注意事项
iStore 版 KSpeeder 的缓存路径在软件设置里显示为 //Configs/iStoreEnhance。J1900 软路由的系统盘通常不大,缓存积累多了可能占满存储。
建议:在 iStore KSpeeder 的 Global settings 里,把 Cache Path 改到大容量存储上(比如挂载的 U 盘或 SSD 分区),不要留在系统盘。改完同样执行“关→开”让设置生效。
避坑速查
| 问题 | 原因与解法 |
|---|---|
改了 kspeeder.yml 但新源没出现 | 没做“关→开”操作,或者文件路径写错(应为 /Configs/iStoreEnhance/kspeeder.yml) |
照着 GitHub 教程改 nodes.yaml 无效 | iStore 版用的是 kspeeder.yml + mirrors: 格式,不是 Docker 版的 nodes.yaml |
改了 /etc/docker/daemon.json 加速不生效 | ImmortalWrt 要用 /etc/config/dockerd 里的 list registry_mirrors,不是 daemon.json |
| 开着代理时加速时好时坏 | registry.linkease.net 和 :5443 没加入直连,流量走了代理 |
| 软路由存储被缓存占满 | 在 Global settings 里把 Cache Path 改到大容量存储,然后关→开重载 |
一句话总结:iStore 版 KSpeeder 的自建源在 /Configs/iStoreEnhance/kspeeder.yml,格式是 mirrors: 列表,改完必须在 LuCI 里关一次再开一次才生效。ImmortalWrt 本机配 Docker 加速要改 /etc/config/dockerd,加 list registry_mirrors;标准 Linux 才使用 systemctl。开着科学上网的话,记得把 registry.linkease.net 加入直连。