博客/自启配置

快连Linux端如何配置订阅节点开机自启?

快连官方团队
开机自启订阅节点systemd自动化Linux
快连Linux端订阅节点开机自启, 如何设置快连订阅节点自启动, systemd 配置快连订阅节点, 快连Linux端自启失败怎么办, 快连Linux端 cron 自启方法, 无头服务器快连静默启动, 订阅节点自动更新后自启, 快连Linux端自启脚本示例

功能定位:为什么要在Linux端做“订阅节点开机自启”

把“快连Linux端如何配置订阅节点开机自启”拆成两个动作:宿主机一上电就拉取最新订阅,并在 Network-online.target 阶段自动连入最优节点,省去每次重启后 1~2 分钟的手动点开。无人值守的海外直播推流机、CI/CD Runner、远程 NAS 下载盒最常靠它续命。

快连在 v8.3.0 把 CLI 独立打包成 qlcli,首次支持 headless 订阅刷新与协议热切换,systemd 托管才成为可能;旧版仅 GUI,无法彻底后台化。若你仍停留在 2025 及更早的 deb/rpm,先升到“截至当前的最新版本”,否则后续路径会完全对不上。

功能定位:为什么要在Linux端做“订阅节点开机自启”
功能定位:为什么要在Linux端做“订阅节点开机自启”

方案对比:systemd、crontab 与 rc.local 的取舍

systemd:与网络栈生命周期同步

优点是可依赖 Network-online.target,确保拉取订阅时 DNS 已就绪;同时支持 Restart=on-failure,断网恢复后自动重试。缺点需写两次文件(service+timer 或双 service),新手嫌“啰嗦”,但换来的是可观测、可回退、可调试。

crontab@reboot:写一条就能跑

适合“单用户笔记本”;cron 不等待网络,大概率“qlcli 拉取失败→进程退出→无人值守失败”。若坚持用 cron,得在脚本里循环检测网络,直到 curl 返回 200 才继续。

rc.local:兼容性最老,也最脆弱

Ubuntu 22.04 LTS 起默认停用,RHEL 9 需手动 chmod +x 并启用 rc-local.service。除非维护存量机器,不建议新系统再用。

决策树:30 秒判断你该选哪条路

  1. 机器重启频率 ≥1 次/天且无人值守?→ systemd
  2. 仅个人开发机,偶尔重启,能手动排障?→ crontab@reboot 也能凑合
  3. 发行版为 CentOS 7 等老系统,维护周期到 2027 之后?→ 可临时 rc.local,但应规划迁移

一句话:只要系统支持 systemd,就优先 systemd;它让“快连 Linux 端如何配置订阅节点开机自启”具备可观测、可回退、可调试三大特性。

前置准备:安装 qlcli 与最小权限账号

1. 终端执行 sudo apt install qlcli(Debian/Ubuntu)或 sudo dnf install qlcli(Fedora/RHEL),安装路径通常为 /usr/bin/qlcli。2. 新建低权用户 sudo useradd -r -s /bin/false qlnode,避免用 root 跑代理进程。3. 把配置目录授权给该用户:sudo chown qlnode:qlnode /etc/quicklink -R

systemd service 模板:最小可运行单元

创建 /etc/systemd/system/ql-subscribe.service:

[Unit]
Description=QuickLink Subscribe Fetcher
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
User=qlnode
ExecStart=/usr/bin/qlcli sub-fetch --config /etc/quicklink/sub.json --output /var/lib/quicklink/nodes.json
RemainAfterExit=yes
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

再建 /etc/systemd/system/ql-connect.service:

[Unit]
Description=QuickLink Auto Connect
Wants=ql-subscribe.service
After=ql-subscribe.service

[Service]
Type=simple
User=qlnode
ExecStart=/usr/bin/qlcli connect --auto-best --config /var/lib/quicklink/nodes.json
Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable --now ql-subscribe.service
sudo systemctl enable --now ql-connect.service

路径差异:Debian vs RHEL vs Arch

  • Debian 系习惯把变量文件放 /var/lib/;RHEL 系推荐 /run/quicklink/,重启即失,适合放 PID 或临时 token。
  • Arch 社区包把 qlcli 配置示例放 /etc/quicklink/examples,需手动 cp 到 /etc/quicklink 才生效。
  • 若启用 SELinux(RHEL/Fedora 默认),需执行 setsebool -P nis_enabled 1 或自定义模块,否则 qlcli 会被拒绝出站。

回退方案:如何快速关闭自启并切回手动

1. 停止服务:sudo systemctl stop ql-connect ql-subscribe。2. 禁用:sudo systemctl disable ql-connect ql-subscribe。3. 若需临时手动连接,可直接 qlcli connect --node JP-Tokyo-01,与 systemd 互不干扰。

回退方案:如何快速关闭自启并切回手动
回退方案:如何快速关闭自启并切回手动

验证与观测:确认订阅已拉取、节点已连

①看日志:journalctl -u ql-subscribe -e 应出现 “sub-fetched 42 nodes”。②看连接:qlcli status 若返回 “Connected to SG-Singapore-11” 则成功。③看路由:ip route | grep ql0 应出现默认走虚拟网卡。④看 DNS 泄露:dig whoami.ds.akahelp.net 返回的 IP 应属于节点所在地。

故障排查:订阅拉取失败、连接无限重启

现象

journalctl 反复提示 “Error 602: Subscription expired”。

可能原因

系统时间错→TLS 证书校验失败;或账号在另一设备登录被踢。

验证

timedatectl status 看是否 NTP 同步;官网个人中心看在线设备数。

处置

①执行 sudo timedatectl set-ntp true;②重新登录获取新 token 并写回 /etc/quicklink/sub.json;③重启服务。

适用/不适用场景清单

场景是否推荐原因
海外直播推流机✅ 强烈推荐重启后无人值守,必须自动恢复出口 IP
公司 CI Runner✅ 推荐拉取 Docker Hub 被墙镜像,需确保 job 启动前网络已通
个人笔记本⚠️ 可选经常休眠唤醒,机场流量有限,可能浪费订阅流量
多用户共享服务器❌ 不推荐单一出口 IP 易被多人同时操作触发风控

最佳实践检查表(上线前对照)

  1. qlcli 版本是否 ≥8.3.0?qlcli version 确认。
  2. service 文件是否指定 User=qlnode 而非 root?
  3. 订阅文件权限 ≤644,且 token 已用 chmod 600 保护?
  4. 是否执行 systemctl --failed 确认无异常单元?
  5. 是否用 loginctl show-user qlnode 确认该用户无多余会话?

FAQ(Schema.org 格式)

启用量子加密后开机延迟明显,如何排除?

在 /etc/quicklink/sub.json 里给节点加 "pq":false 字段,或 service 文件 ExecStart 尾部加 --no-pq 开关,重启服务可见延迟回落。

ql-connect 失败却看不到图形弹窗,如何获取日志?

systemd 已将 stdout/stderr 重定向到 journal,执行 journalctl -u ql-connect -f 即可实时跟踪,无需图形。

能否让特定用户登录后再启动,而非开机即启?

可以。把 WantedBy=multi-user.target 改成 graphical-session.target,并加 PartOf=graphical-session.target,即可绑定到该用户图形会话,退出即停。

收尾:下一步行动建议

至此,你已走完“快连 Linux 端如何配置订阅节点开机自启”完整链路:方案对比、最小权限 service、回退、验证、排障。建议先在测试机按模板跑通,确认 journal 无报错再推生产。若未来 CLI 新增 --daemon 参数,可把 Type=simple 改为 Type=notify,实现更精准的退出码通知。保持 qlcli 在最新版本,关注官方 release note,任何破坏式变更都能第一时间知情。

相关关键词:
快连Linux端订阅节点开机自启如何设置快连订阅节点自启动systemd 配置快连订阅节点快连Linux端自启失败怎么办快连Linux端 cron 自启方法无头服务器快连静默启动订阅节点自动更新后自启快连Linux端自启脚本示例