Skip to content

在 VPS 上使用 Docker 一键部署 Sing-box 服务端

毛佳国

很多用户在拥有了一台属于自己的 VPS(虚拟专用服务器)后,面临的第一个问题就是:如何干净、优雅地部署 Sing-box 服务端?

相较于一键脚本经常带来系统环境污染和依赖冲突问题,使用 Docker 容器化部署是目前最受高阶玩家推崇的方式。它不仅让安装与卸载如行云流水,还极其方便后续的版本升级和配置迁移。

环境准备

在开始之前,确保你的 VPS 已经安装了 Docker 和 Docker Compose:

# 自动安装 Docker
curl -fsSL https://get.docker.com | bash -s docker
# 更新并启用服务
systemctl enable --now docker

目录结构设计

为了让配置和后续管理更方便,我们建议创建一个专门的路径来统一存放配置文件:

mkdir -p /root/singbox && cd /root/singbox

我们的目标目录结构如下:

/root/singbox
├── docker-compose.yml   # Docker 配置文件
└── config.json          # Sing-box 服务端配置

编写 docker-compose.yml

singbox 目录下新建 docker-compose.yml 文件:

version: '3'

services:
  sing-box:
    image: ghcr.io/sagernet/sing-box:latest
    container_name: sing-box
    restart: always
    network_mode: "host" # 推荐使用 host 模式提升网络性能
    volumes:
      - ./config.json:/etc/sing-box/config.json
    cap_add:
      - NET_ADMIN # 必须,用于处理 TProxy 等高级路由

为什么推荐 network_mode: "host" 使用 host 模式可以省去在 docker vswitch 中进行端口映射 (NAT) 的损耗,对于代理服务器这种对网络 I/O 要求极高的应用来说,是大幅提升吞吐量的关键。

准备服务端配置 (config.json)

接下来是核心的服务端 config.json。这个配置文件主要定义作为服务端的入站(inbounds)

下面是一个基础的 VLESS + TCP + Reality 示例:

{
  "log": {
    "level": "info",
    "timestamp": true
  },
  "inbounds": [
    {
      "type": "vless",
      "tag": "vless-in",
      "listen": "::",
      "listen_port": 443,
      "users": [
        {
          "uuid": "这里填写你生成的 UUID",
          "flow": "xtls-rprx-vision"
        }
      ],
      "tls": {
        "enabled": true,
        "server_name": "www.microsoft.com",
        "reality": {
          "enabled": true,
          "handshake": {
            "server": "www.microsoft.com",
            "server_port": 443
          },
          "private_key": "这里填写生成的 Reality 私钥",
          "short_id": [
            "填写生成的 Short ID"
          ]
        }
      }
    }
  ],
  "outbounds": [
    {
      "type": "direct",
      "tag": "direct"
    }
  ]
}

提示:如果你还不知道如何生成 UUID 和 Reality 密钥对,可以使用 sing-box generate uuidsing-box generate reality-keypair 命令生成。

启动与维护

确认文件都在同一个目录下后,执行以下命令即可启动 Sing-box 服务端:

docker-compose up -d

查看运行日志

如果遇到无法连接的问题,第一步应该查看日志:

docker logs -f sing-box

版本更新

未来当你需要升级 Sing-box 时,只需执行这三步:

docker-compose pull
docker-compose down
docker-compose up -d

结语

使用 Docker 部署是目前维护成本最低的选择。当你掌握了上游服务端的搭建后,配合我们博客中分享的各种客户端配置教程,你将能打造出一个纯粹属于自己的定制化代理网络。

上一篇
Sing-box 自定义规则集 (.srs) 编译与使用进阶教程
下一篇
最新协议尝鲜:在 Sing-box 中配置 Hysteria2 或者 TUIC V5 协议的详细步骤