使用 Docker Compose 快速部署 Shadowsocks 代理服务教程
Published in:2025-08-29 |
Words: 1.8k | Reading time: 7min | reading:

基础环境

1.1 更新系统软件包列表

首先,连接到您的服务器,然后运行以下命令来更新系统的软件包索引:

1
sudo apt-get update -y

1.2 安装 Docker 的依赖项

接下来,安装一些必要的软件包,以允许 apt 通过 HTTPS 使用 Docker 的软件仓库:

1
2
3
4
5
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

1.3 添加 Docker 官方 GPG 密钥

为了安全起见,我们需要添加 Docker 的官方 GPG 密钥。这会验证我们下载的 Docker 软件包是官方发布的,未经篡改。

1
2
3
4
5
6
7
8
# 创建用于存放密钥的目录
sudo install -m 0755 -d /etc/apt/keyrings

# 下载 Docker 的 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 修改密钥文件的权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg

1.4 设置 Docker 的 APT 软件源

现在,我们将 Docker 的官方软件源地址添加到我们系统的源列表中。这样,apt 命令就能找到并安装 Docker 了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null```

#### 1.5 安装 Docker 引擎和 Compose V2

再次更新软件包列表,以包含来自 Docker 官方源的软件包信息,然后执行安装:

```bash
# 再次更新软件包列表
sudo apt-get update -y

# 安装 Docker 引擎, 命令行工具, containerd 和 Docker Compose V2 插件
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

1.6 (可选但推荐) 配置非 root 用户运行 Docker

每次都输入 sudo 来运行 Docker 命令很麻烦。我们可以将当前用户添加到 docker 用户组,从而免去 sudo

1
2
# 将您的用户($USER 是一个环境变量,代表当前用户)添加到 docker 组
sudo usermod -aG docker $USER

重要提示: 执行此命令后,您需要完全退出 SSH 会话并重新登录,才能使权限更改生效!


第二步:配置并部署 Shadowsocks 服务

环境准备好后,我们就可以开始定义和部署我们的 Shadowsocks 服务了。

2.1 创建一个工作目录

为我们的项目创建一个专门的目录,这样可以保持整洁。

1
2
3
# 创建一个名为 ss 的目录并进入
mkdir ~/ss
cd ~/ss

2.2 编写 docker-compose.yml 配置文件

这是整个部署的核心。我们将创建一个名为 docker-compose.yml 的文件,它像一份蓝图,详细描述了我们的服务应该如何运行。

使用您喜欢的文本编辑器(这里以 nano 为例,它比 vim 更易上手)创建文件:

1
vim docker-compose.yml

然后,将以下内容复制并粘贴到编辑器中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 使用 Compose 文件格式的版本 3
version: "3.8"

# 定义所有服务
services:
# 定义一个名为 "shadowsocks" 的服务
shadowsocks:
# 指定要使用的 Docker 镜像,我们使用官方的 shadowsocks-libev
image: shadowsocks/shadowsocks-libev
# 给运行的容器起一个固定的名字,方便我们管理
container_name: shadowsocks
# 设置端口映射 (格式: "主机端口:容器端口")
ports:
# 将服务器的 TCP 8388 端口映射到容器的 TCP 8388 端口
- "8388:8388/tcp"
# 将服务器的 UDP 8388 端口也映射出去 (用于游戏、视频通话等)
- "8388:8388/udp"
# 设置容器的重启策略
# unless-stopped: 除非我们手动停止容器,否则它总是在退出后自动重启
# (包括服务器重启后,服务也会自动拉起,非常省心)
restart: unless-stopped
# 设置容器内的环境变量,用于配置 Shadowsocks
environment:
# 设置加密方法,chacha20-ietf-poly1305 是目前推荐的安全且高效的算法
- METHOD=chacha20-ietf-poly1305
# 在这里设置您的连接密码!请务必替换成一个您自己的强密码!
- PASSWORD=YOUR_STRONG_PASSWORD_HERE

重要配置修改:

  • PASSWORD: 将 YOUR_STRONG_PASSWORD_HERE 替换为您自己设定的一个强密码。这是您的客户端连接时需要用到的凭证。
  • ports: 如果您服务器的 8388 端口已被其他服务占用,您可以修改主机端口。例如,改成 "10086:8388/tcp",这样您的客户端就需要连接服务器的 10086 端口。

修改完成后,在 nano 编辑器中,按 Ctrl + X,然后按 Y,最后按 Enter 保存并退出。

2.3 启动 Shadowsocks 服务

现在,激动人心的时刻到了!在 docker-compose.yml 文件所在的目录(即 ~/ss),运行以下命令:

1
2
3
4
5
6
# 注意:如果您在 1.6 步中配置了用户组,这里就不需要 sudo 了
# 新版命令 (推荐)
docker compose up -d

# 旧版命令 (也能工作)
# docker-compose up -d
  • up: 告诉 Docker Compose 启动并运行服务。
  • -d: (--detach) 参数表示在后台运行服务。这是必须的,否则当您关闭 SSH 窗口时,服务也会停止。

Docker Compose 现在会自动:

  1. 检查 docker-compose.yml 文件。
  2. 从 Docker Hub 上拉取 shadowsocks/shadowsocks-libev 镜像(如果是第一次运行)。
  3. 根据您的配置创建并启动一个名为 shadowsocks 的容器。

第三步:验证服务与客户端配置

服务启动后,我们需要确认它是否正常运行,并配置客户端进行连接。

3.1 检查容器运行状态

运行以下命令查看当前正在运行的容器:

1
docker ps

您应该能看到类似下面的输出:

1
2
CONTAINER ID   IMAGE                           COMMAND                  CREATED         STATUS         PORTS                                                 NAMES
a1b2c3d4e5f6 shadowsocks/shadowsocks-libev "/usr/bin/ss-server …" 30 seconds ago Up 29 seconds 0.0.0.0:8388->8388/tcp, 0.0.0.0:8388->8388/udp shadowsocks

请关注以下几点:

  • IMAGE: 确认是 shadowsocks/shadowsocks-libev
  • STATUS: 必须是 Up ...,表示正在健康运行。如果是 Exited,说明启动失败。
  • PORTS: 确认端口映射正确。
  • NAMES: 确认是 shadowsocks

3.2 查看服务日志

如果容器启动失败,或者您想确认服务的内部运行情况,查看日志是最佳方式:

1
docker logs shadowsocks

成功的日志会显示服务正在监听端口:

1
2
INFO: initializing ciphers... chacha20-ietf-poly1305
INFO: listening at 0.0.0.0:8388

3.3 配置您的客户端

现在,您可以在您的电脑或手机上配置 Shadowsocks 客户端了。填入以下信息:

  • 服务器地址 (Server Address): 您服务器的公网 IP 地址
  • 服务器端口 (Server Port): 8388 (或者您在 docker-compose.yml 中设置的主机端口)
  • 密码 (Password): 您在 docker-compose.yml 中设置的密码
  • 加密方法 (Encryption/Method): chacha20-ietf-poly1305

保存配置并连接,现在您应该可以正常使用了!


第四步:常用管理命令

  • 停止服务:
    1
    2
    # 在 ~/ss 目录下运行
    docker compose down
  • 重启服务:
    1
    2
    # 在 ~/ss 目录下运行
    docker compose restart
  • 更新服务 (例如更新 Shadowsocks 镜像):
    1
    2
    3
    4
    5
    # 在 ~/ss 目录下运行
    # 1. 拉取最新的镜像
    docker compose pull
    # 2. 重新创建并启动容器
    docker compose up -d

客户端

  • windows
1
https://github.com/shadowsocks/shadowsocks-windows
  • android
1
https://github.com/shadowsocks/shadowsocks-android

代理模式

  • 禁用 (Disabled):不使用代理。等同于取消勾选“启用系统代理”。

  • PAC 模式 (PAC):推荐日常使用。此模式下,客户端会根据一个名为 PAC (Proxy Auto-Config) 的规则列表来判断。

  • 全局模式 (Global):所有网络流量都强制通过代理服务器。

See

Next:
PyAV用于视频剪辑处理