快连如何在群晖NAS Docker里设置开机自启?
群晖Docker部署kuailian,设置开机自启全流程:脚本、依赖、回退方案一次讲透

问题定义:为什么“开机自启”在群晖Docker里总失败
关键词“kuailian 群晖 Docker 开机自启”背后,真正卡住用户的是两条隐藏约束:DSM 系统并不认 Docker Desktop 常用的 restart: always 语义,而快连官方镜像又把配置默认落在 /etc/kuailian——该路径在容器重建时可能被 DSM 的只读层覆盖。于是出现“NAS 重启后容器虽显示运行,却丢失订阅,日志反复报 config not found”的怪象。下文用“问题→约束→解法”的工程师视角,给出在 DSM 7.2 与 6.2 均可复现的完整路径,并附带回退按钮,确保你十分钟后就能关机重启验证。
前置检查:版本、权限与网络模式
1. 系统与套件边界
截至公开版本,DSM 7.2 自带 Docker 已升至 20.10.23,而 6.2 仍停留在 18.09;两者对 --restart policy 的识别差异,会让容器“看似已启动实则未生效”。先进入控制面板→信息中心确认大版本号,再决定后文采用“任务计划”还是“docker-compose”方案,可避免走冤枉路。
2. 权限最小化原则
kuailian 需要 NET_ADMIN 与 SYS_MODULE 才能创建虚拟网卡。DSM 7 之后默认启用“权限委派”,务必在Docker→权限→项目里给容器账号打勾,而非直接赋予 root。经验性观察:这样能把潜在提权风险缩小到仅影响网络栈,而不会波及宿主机文件系统。
3. 网络模式取舍
Bridge 模式对家用宽带最友好,但端口转发需手动维护;Host 模式性能略好,却与 DSM 自带防火墙规则冲突。下文默认 bridge + 容器端口 1080→宿主机 1080 映射;若你已在路由器做 QoS,请保持映射一致,防止重启后 IP 变动导致策略失效。
最短可达路径:三分钟创建可自启容器
- 在套件中心安装或更新 Docker 套件至最新版。
- 打开File Station,于
/volume1/docker/kuailian新建 config、log、subscribe 三个文件夹。 - 进入注册表,搜索
kuailian/docker,下载latest标签镜像(约 78 MB)。 - 双击镜像→启动,在高级设置里按表 1 填写:
| 页签 | 字段 | 值 |
|---|---|---|
| 卷 | docker/kuailian/config | /etc/kuailian |
| 端口 | 本地 1080 | 容器 1080 |
| 环境 | TZ | Asia/Shanghai |
| 权限 | 执行容器使用高权限 | 打勾 |
5. 切到摘要,容器名写成 kuailianprivacy tool,点击完成后不要立即启动,接下来用任务计划补全“真·自启”。
关键一步:用任务计划实现“真·自启”
DSM 重启时,Docker 套件只会把容器“拉起来”,却不会重新执行 docker run 参数,导致权限与环境变量丢失。官方论坛经验性观察:在“任务计划”里补一条开机脚本,可把成功率从 60% 提到 98%。
1. 创建开机脚本
sleep 30 # 等 Docker daemon 完全初始化
docker start kuailianprivacy tool || docker run -d --name kuailianprivacy tool
--restart unless-stopped --net bridge -p 1080:1080
-v /volume1/docker/kuailian/config:/etc/kuailian
-e TZ=Asia/Shanghai --cap-add NET_ADMIN --cap-add SYS_MODULE
kuailian/docker:latest
2. 写入 DSM 任务计划
打开控制面板→任务计划→新增→触发任务→开机,用户账号选 root,脚本内容粘入上方代码,把“已启用”打勾。保存后手动“运行一次”,日志出现 daemon start success 即表示容器被正确拉起。
compose 方案:适合需要 Git 版本管理的进阶玩家
把同样参数写成 docker-compose.yml,放在同一目录,可实现“配置文件即基础设施”。
services:
kuailianprivacy tool:
image: kuailian/docker:latest
container_name: kuailianprivacy tool
cap_add:
- NET_ADMIN
- SYS_MODULE
ports:
- "1080:1080"
volumes:
- ./config:/etc/kuailian
- ./log:/var/log/kuailian
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
SSH 登录 NAS,进入目录后执行 docker-compose up -d。DSM 重启后,只要 Docker daemon 正常,compose 会负责把 kuailianprivacy tool 拉起来,无需额外任务计划。经验性观察:DSM 7.2 对 compose 的兼容性优于 6.2,但 6.2 也能用,只是需要手动安装 compose 插件。
订阅更新自动化:让容器每次启动都拉最新节点
kuailian 的订阅地址 24 h 刷新一次,若容器重启时仍用旧本地文件,会落入“已连接但节点全超时”的陷阱。官方镜像在 entrypoint 里预留了 SUBSCRIBE_URL 环境变量,只要把它写进任务计划或 compose,容器启动时会先下载订阅,再启动守护进程。
- SUBSCRIBE_URL=https://api.kuailian.tech/subscribe?token=YOUR_TOKEN
注意:TOKEN 属于敏感参数,建议用 .env 文件保存,并在 compose 里引用 ${KL_TOKEN},避免明文入仓库。
验证与回退:四条命令确认成功
- 重启 NAS,等待 2 分钟,SSH 执行
docker ps | grep kuailian,状态应为 Up。 - 查看日志
docker logs kuailianprivacy tool --tail 20,若出现subscribe updated, 76 nodes loaded表示订阅刷新成功。 - 在局域网电脑配置 SOCKS5 代理指向 NAS_IP:1080,访问
https://ifconfig.me,返回 IP 与快连节点一致即隧道生效。 - 若需回退,直接停用任务计划或执行
docker-compose down,再把备份的 config 文件夹整个覆盖即可恢复到上一次节点快照。
常见故障与排查表
| 现象 | 最可能原因 | 验证动作 | 处置 |
|---|---|---|---|
| 容器启动后秒退 | 权限不足 | docker logs 看是否有 Operation not permitted | 补加 NET_ADMIN, SYS_MODULE |
| 重启 NAS 后容器消失 | DSM 6 旧版 Docker 不识别 restart 策略 | 任务计划是否被禁用 | 手动启用任务计划或升级 DSM |
| 订阅节点为 0 | TOKEN 失效 | 浏览器直接访问订阅地址 | 在官网重新生成 TOKEN 并更新环境变量 |
| 国内网站打不开 | 分流规则未生效 | 关闭代理后是否正常 | 在客户端把“绕过局域网与中国大陆”打勾 |
适用/不适用场景清单
- 适合:需要 24 h 无人值守下载 PT、同步海外网盘、给 Apple TV 提供 SOCKS5 出口的家庭 NAS。
- 不适合:公司合规要求所有流量必须走审计网关,或 NAS 本身已做域控加入 AD,容器提权可能触发安全告警。
- 谨慎:双拨聚合宽带,重启后网关顺序随机,可能导致容器拿不到默认路由,需要额外写脚本判断
ethX。
最佳实践 5 条速查表
- 永远把 config 与 log 外挂到宿主机,DSM 升级不会丢。
- TOKEN、证书、MAC 地址等敏感信息统一放
.env,并加.gitignore。 - 每次 DSM 大版本升级前,先用导出功能备份任务计划与 compose 文件。
- 若节点延迟>300 ms 持续 10 分钟,点客户端“反馈错误线路”,官方模型 24 h 内剔除。
- Vision Pro 2 等 MR 设备如需走 NAS 代理,需把 SOCKS5 端口同时映射 UDP 1080,否则语音包会掉线。
FAQ:kuailian 群晖 Docker 自启常见疑问
Q1: DSM 7.2 还需要任务计划吗?
A: 截至当前的最新版本,DSM 7.2 的 Docker 套件已支持 restart: unless-stopped,但经验性观察显示 NAS 异常断电后仍有 5% 概率丢失策略,建议保留任务计划做双保险。
Q2: 容器日志出现 “can’t find tun” 怎么办?
A: 说明宿主机缺少 TUN 内核模块。SSH 执行 lsmod | grep tun,若为空,先 insmod tun,再在任务计划里把该命令放到 docker run 之前即可。
Q3: 订阅链接里的流量会随容器重启重复消耗吗?
A: 不会。官方订阅接口按账号维度计费,与下载次数无关;但频繁重启可能触发短期限速,建议把订阅缓存时间设为 3600 s 以上。
Q4: 可以同时跑两个 kuailianprivacy tool 容器做负载吗?
A: 技术上可行,需改容器名与端口映射,如 1081:1080;但官方账号默认限制 5 个并发节点,超过会返回 403,需要企业 API 才能扩容。
Q5: 升级镜像后节点配置会消失吗?
A: 只要 config 目录外挂就不会;但新版本若更改文件格式,容器首次启动会自动迁移,日志会提示 config migrate to v2,属正常行为。
收尾:下一步该做什么?
完成上述步骤后,你已经拥有了一台“断电来电无需人工”的群晖 kuailian 隧道。接下来可以:
- 把 NAS 的 Download Station 代理指向本地 1080,实现 PT 下载自动走海外高带宽节点;
- 在路由器把 Apple TV 的 IP 通过策略路由转发到 NAS 1080,解锁区域流媒体;
- 用快连企业 API 把节点可用率推送到飞书,做可视化大盘。
记住,任何自动化的前提是可回退:保持 config 目录的 Git 快照,每次 DSM 大版本升级前先在测试机验证,你就能把“开机自启”从黑盒变成白盒,真正让 NAS 成为 24 h 边缘节点。未来若 DSM 进一步开放 systemd 或 Docker Compose Plugin 原生支持,可再评估是否移除任务计划,实现更纯粹的声明式部署。