Linux 服务器如何无头 (Headless) 运行 sing-box 与自动启动

#Linux服务器#Headless代理#sing-box#systemd
阅读需 6 分钟||

对于需要 24 小时挂机下载或充当网络跳板机的 Linux 服务器而言,安装带有图形化 UI 的代理客户端不仅浪费系统资源,更往往在纯命令行 (Headless) 的终端环境下无法启动。在这种场景下,直接运行原生命令行代理内核并配合系统守护进程管理,是最优雅的实践。

1. 下载与二进制部署

以 sing-box 内核为例:

  1. 访问官方发布页面,下载适用于你的 Linux 架构(如 linux-amd64)的二进制压缩包。
  2. 解压后将二进制文件 sing-box 移动到系统的执行目录(如 /usr/local/bin/),并赋予执行权限 (chmod +x)。
  3. 在 /etc/sing-box/ 目录下创建一个 config.json,并将你转换好的专属机场订阅配置填入其中。

2. 编写 systemd 守护进程服务

仅仅在终端里输入 sing-box run 是不够的,一旦关闭 SSH 会话,进程就会终止。我们需要编写一个 systemd 单元文件,使其拥有开机自启和崩溃自动重启的能力。 在 /etc/systemd/system/ 下新建文件 sing-box.service,内容如下:

[Unit]
Description=sing-box Proxy Service
Documentation=https://sing-box.sagernet.org
After=network.target nss-lookup.target

[Service]
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
ExecStart=/usr/local/bin/sing-box run -c /etc/sing-box/config.json
Restart=on-failure
RestartSec=10s
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

注意:这里的 CAP_NET_ADMIN 权限允许内核拉起虚拟 TUN 网卡实现透明接管,若仅用作本地 Socks 端口代理,可酌情降低权限。

3. 启动与日志审计

完成编写后,执行以下命令使守护进程生效并立即启动:

systemctl daemon-reload
systemctl enable --now sing-box

一旦配置加载失败,你可以通过 journalctl -u sing-box -f 命令实时查看输出,利用日志审计手段快速排查是 JSON 格式错误还是 DNS 拦截问题。


参考资料与相关阅读

机场讯 技术安全审查组Fact-Checked

本文所述的网络配置指南、路由分析及安全建议已通过技术独立验证。文内提及的客户端配置与底层原理引用自各开源项目的官方文档。为保障您的设备安全,请严格按照教程指引操作,切勿随意修改系统级内核参数。

相关推荐