之前在CentOS上使用一键部署脚本搭建过一个ShadowsocksR服务器,今天突发奇想在Docker上再搭建一个,这样的话两个VPS(一个在洛杉矶,一个在法国)上都有SS服务,可以切换着用。

Google了一下,找到了一篇相对简单的教程,Docker 镜像是由大佬teddysun制作的,基于官方 debian:stretch 制作,非常精简,有libev和R版,详见:https://hub.docker.com/u/teddysun/

容器在启动时依赖于配置文件,第一步必须先在宿主机里对应的路径下把配置文件写好,可以参考以上给出的地址。

搭建服务

一、安装Docker。

二、拉取镜像

# shadowsocks-libev版:
docker pull teddysun/shadowsocks-libev
# shadowsocks-r版:
docker pull teddysun/shadowsocks-r

三、在etc目录下创建目录shadowsocks。

四、编写配置文件:

# shadowsocks-libev版:
{
    "server":"0.0.0.0",
    "server_port":8338,
    "password":"password0",
    "timeout":300,
    "method":"aes-256-gcm",
    "fast_open":true,
    "nameserver":"8.8.8.8",
    "mode":"tcp_and_udp",
    # 以下为simple-obfs 配置项 如不启用请注释或删除
    "plugin":"obfs-server",
    "plugin_opts":"obfs=tls"
}
# shadowsocks-r版:
{
    "server":"0.0.0.0",
    "server_ipv6":"::",
    "server_port":8338,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"password0",
    "timeout":120,
    "method":"aes-256-cfb",
    "protocol":"origin",
    "protocol_param":"",
    "obfs":"http_simple",
    "obfs_param":"",
    "redirect":"",
    "dns_ipv6":false,
    "fast_open":true,
    "workers":1
}

五、保存以上内容为到config.json文件

六、启动Docker

shadowsocks-libev版:
$ docker run –name shadowsocks-server –restart always -d -p 8388:8388 -p 8388:8388/udp -v /etc/shadowsocks:/etc/shadowsocks-libev teddysun/shadowsocks-libev
shadowsocks-r版:
$ docker run –name shadowsocks-server –restart always -d -p 8388:8388 -p 8388:8388/udp -v /etc/shadowsocks:/etc/shadowsocks-r teddysun/shadowsocks-r

注意事项

docker启动参数的-p表示docker容器端口号(冒号后)和宿主机端口号(冒号前)映射关系,容器端口号与配置文件的server_port一致,宿主机端口号可以自定;-v参数表示容器与宿主机的目录映射关系,冒号前的部分为宿主机目录,与第三步中创建的目录一致;–restart always不是必须的参数,之所以增加这个参数是为了在docker启动的时候自动启动当前创建的容器。

配置客户端

ShadowsocksR for Windows

ShadowsocksR for Windows

Wingy

Wingy