Post

Docker 运行 Shadowsocks

Docker 运行 Shadowsocks

当更换一台新的 Linux 服务器,需要快速搭建 Shadowsocks 时,采用 Docker 镜像安装将是个十分便捷的选择:无须考虑各种软件依赖对机器环境的污染(Linux 跑服务不用 Docker 就是原罪)。

虽然这种操作的频率很低,但在实施的时候,通常要翻阅相关的官方文档,略烦。所以本文将略微讲述采用 Docker 搭建 Shadowsocks Server 的过程。

安装 Docker Engine

因为是裸机,所以安装 Docker Engine 是不能偷懒的,参考 Docker 官方文档 完成安装。出于本人的个人需要,下面将摘录在 Ubuntu Server 安装的步骤

配置 apt 仓库

  1. 为了允许服务器通过 HTTPS 拉取 Docker 仓库,需要更新 apt 索引以及安装所需的 packages:

    1
    2
    3
    4
    5
    6
    7
    
    $ sudo apt-get update
    $ sudo apt-get install -y \
         apt-transport-https \
         ca-certificates \
         curl \
         gnupg-agent \
         software-properties-common
    
  2. 添加 Docker 的 GPG key:

    1
    
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  3. 正确的指纹是 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88,通过后八位字符验证指纹:

    1
    2
    3
    4
    5
    6
    
    $ sudo apt-key fingerprint 0EBFCD88
    
     pub   rsa4096 2017-02-22 [SCEA]
           9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
     uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
     sub   rsa4096 2017-02-22 [S]
    
  4. 添加 x86_64/amd64 仓库

    1
    2
    3
    4
    
    $ sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"
    

安装

更新索引再安装即可:

1
2
$ sudo apt-get update
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io

验证是否正确安装,运行 hello-world 镜像:

1
$ sudo docker run hello-world

优化使用体验

  1. 为非 root 用户添加使用 Docker 的权限:

    1
    2
    
    $ sudo usermod -aG docker $USER
    $ newgrp docker
    
  2. 配置开机启动 Docker 以及 container:

    1
    2
    
    $ sudo systemctl enable docker.service
    $ sudo systemctl enable containerd.service
    

获取 Shadowsocks-libev 镜像

安装好 Docker Engine 后,就可以进入正题了:

1
$ docker pull shadowsocks/shadowsocks-libev

默认会 pull 最新版本,需要指定旧版本可上 DockerHub 查询 Tags 列表

运行 Shadowsocks Server

1
2
3
4
5
6
7
8
$ export passwd=<passwd> method=<encrypt_method> port=<server_port>

$ docker run --name ssserver \
      -e PASSWORD=$passwd \
      -e METHOD=$method \
      -e SERVER_PORT=$port \
      -p $port:$port -p $port:$port/udp \
      -d --restart always shadowsocks/shadowsocks-libev

把上述 <xxx> 部分参数替换为自己所需内容即可,详细参数说明可查看 GitHub 项目文档

最后,请确保 VPS 控制台为端口 port 开启 TCP/UDP 的入站出站过滤。

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.