VPS 部署 sing-box 教程
这篇教程按实际操作顺序,带你从零完成 VPS 上的 sing-box 部署,包括信息确认、端口映射、SSH 登录、一键安装和日常维护。
前提很简单:你已有一台能登录的 VPS,并知道它的公网入口信息。选型与购买不在本文范围内。
1. 获取机器信息
连接服务器前,先把下面三项信息记清楚,后面的 SSH 登录、脚本配置和客户端导入都会用到:
- 公网 IP
- 登录用户名(通常是
root或面板分配的用户名) - 登录密码(部分面板会通过邮件发送)
2. 端口映射
如果你使用的是只提供有限公网端口的产品,那么这一步必须先做;如果你拿到的是带完整公网入口的 VPS,这一步通常会对应到安全组或防火墙放行。
不同厂商面板里的名称可能不一样,但本质都是一样的:把公网入口端口转到实例内部的实际端口。
推荐映射两个端口:
- 一个未占用的公网端口 -> 内网
22,用于 SSH 登录,例如21231 -> 22 - 另一个公网端口 -> 内网同端口,用于服务监听,例如
41231 -> 41231
| 用途 | 公网端口(示例) | 内网端口 | 协议 |
|---|---|---|---|
| SSH 连接 | 21231 |
22 |
TCP |
| 服务监听 | 41231 |
41231 |
TCP |
操作步骤:
- 登录服务器管理面板,找到 IPv4 端口映射(有些面板会写成“端口转发”或“公网端口映射”)。
- 添加第一条映射规则,专门给 SSH 用:
- 公网端口:任选一个没有占用的公网端口,例如
21231 - 内网端口:填
22 - 协议:选
TCP
- 公网端口:任选一个没有占用的公网端口,例如
- 添加第二条映射规则,专门给服务监听用:
- 公网端口:例如
41231 - 内网端口:也填
41231 - 协议:一般选
TCP
- 公网端口:例如
- 第二个端口建议公网与内网保持一致,后面核对配置、导入客户端或排查连接问题时会更直观。
如果这一步配错了,最常见的表现就是:SSH 连不上,或者脚本虽然安装成功,但客户端始终无法建立连接。
3. SSH 连接
打开 SSH 工具(Xshell、FinalShell、Termius 等),填入以下信息:
- 主机:服务器公网 IP;如果厂商给了可用域名,也可以直接填域名
- 端口:映射的 SSH 端口(如
21231,不是默认的22) - 用户名 / 密码:面板显示的凭据
连接成功后即进入 Linux 终端。首次登录建议先执行一次 passwd 修改密码,避免继续使用面板初始化口令。
如果这里连不上,优先检查三项:公网 IP 是否正确、SSH 端口是否填成映射后的端口、面板里的端口映射是否已经保存生效。
4. 准备工作
安装几个常用工具:
curl:用来下载一键脚本unzip:后面解压安装包或备份文件时会用到htop:彩色进程/资源监控工具,CPU 和内存占用一眼能看明白
如果系统提示没有 sudo,而你当前登录的就是 root,可以直接去掉命令前面的 sudo 再执行。
Debian / Ubuntu
sudo apt update && sudo apt install -y curl unzip htop
Alpine
apk update && apk add --no-cache curl unzip htop
htop是一个彩色的进程监控工具。服务状态不对、机器变慢或排查资源占用时,先看它通常最直接。
5. 安装与配置 sing-box
在资源较紧的 VPS 上,sing-box 通常是比较省资源、也比较容易维护的一种方案。下面直接使用一键脚本完成基础安装和配置:
脚本来源:caigouzi121380/singbox-deploy。该仓库说明脚本支持 Alpine、Debian、Ubuntu 等常见系统,并会自动生成配置、密钥和管理命令。
bash -c "$(curl -fsSL https://raw.githubusercontent.com/caigouzi121380/singbox-deploy/main/install-singbox-yyds.sh)"
脚本交互说明:
- 名称:可以随意填写,比如
my-vps、home,主要作用是后面导入客户端时方便区分;不想填就直接回车跳过。 - 选择协议:输入
4,按本文示例完成这套配置。第一次部署建议只开一种,先把连通性和稳定性确认下来。- 如果脚本支持同时输入多项,例如
2 4,也建议先别一上来就开太多。机器配置一般时,先保留单项更稳,后面排错也更直接。
- 如果脚本支持同时输入多项,例如
- 机器 IP:大多数情况下直接回车即可,脚本会自动获取公网 IP;如果你知道自动识别可能不准,或者面板显示的公网入口和脚本识别结果不一致,再手动填入。
- 握手域名(SNI):没有明确自定义需求时,直接回车使用默认值即可。脚本常见默认值会选比较常见的站点域名,例如
addons.mozilla.org,一般够用。 - 端口:填入面板映射出去的服务公网端口,如
41231。- 这里必须和面板里实际对外开放的端口完全一致;如果面板里映射的是
41231,脚本里也必须填41231,否则服务端能装好,客户端还是连不上。
- 这里必须和面板里实际对外开放的端口完全一致;如果面板里映射的是
脚本会自动生成 UUID、私钥、公钥、short ID 等参数,并写入服务端配置。
脚本跑完之后,先别急着退出终端,至少做两件事:
- 看一遍终端输出,确认没有明显报错。
- 把脚本生成的连接配置先保存下来,后面导入、换客户端或排查都要用。
如果你的系统使用 systemd,这时顺手执行一次 systemctl status sing-box,基本就能判断服务有没有正常拉起。
6. 导入配置
脚本执行完毕后,终端里会输出一条可导入的连接配置,形式大致如下:
vless://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@<IP>:41231?security=reality&sni=addons.mozilla.org&fp=chrome&pbk=...&sid=xx&type=tcp&flow=xtls-rprx-vision#配置名称
把整条配置复制到客户端(NekoBox、v2rayN、sing-box 客户端等)即可。
如果客户端支持直接粘贴链接,通常一次导入即可;如果需要手动填写参数,就按下面这些字段逐项对应。
参数速读
<IP>:你的服务器公网 IP,或者你自己填写的域名:41231:客户端实际连接的公网端口,要和面板里对外开放的端口一致sni=addons.mozilla.org:握手时使用的域名参数,和脚本里填写的 SNI 对应fp=chrome:客户端指纹参数,常见写法是模拟 Chromepbk=...:公钥参数,用来校验服务端身份sid=xx:short ID,对应服务端配置里的short_idflow=xtls-rprx-vision:传输相关参数,客户端导入时一般不用手改
如果只是正常使用,通常不需要手动调整这些字段;但在手动新建配置、排查导入失败或更换客户端时,这些参数都需要能一一对上。
7. 日常维护
查看 / 重启服务
# 查看 sing-box 状态
systemctl status sing-box
# 重启服务
systemctl restart sing-box
脚本通常还会安装 sb 快捷命令,可直接输入 sb 进行管理。
如果你用的是 Debian / Ubuntu,一般会看到 systemctl;如果你装的是 Alpine,底层服务管理器可能是 OpenRC。最省事的方式通常还是优先使用脚本附带的 sb 管理命令。
连接异常排查
- SSH 进入服务器,输入
htop确认 sing-box 进程是否在运行。 - 进程不在则重启服务。
- 如果服务进程正常,但客户端仍无法连接,先回头检查公网端口、面板映射和本机防火墙。
- 若商家更换了 VPS 的公网 IP,需要同步更新客户端里的服务器地址。
8. 参考链接
- 原文链接:https://lucklog.cc/archives/5zS9qks7
- 一键部署脚本仓库:https://github.com/caigouzi121380/singbox-deploy
- 其他有用的仓库(sing-box-yg):https://github.com/yonggekkk/sing-box-yg
- sing-box 官方连接配置文档:https://sing-box.sagernet.org/configuration/outbound/vless/
- sing-box 官方 TLS 字段文档:https://sing-box.sagernet.org/configuration/shared/tls/#reality-fields