网络上很多 Docker 部署 Shadowsocks-libev 服务的教程,但是包括官方没有一个是使用外置 config 文件的,使用参数运行 Shadowsocks-libev 会导致很多麻烦,比如修改密码、加密方式等问题,并且我们不知道第三方的 shadowsocks-libev 镜像究竟有没有夹带“私货”。
一、创建 Dockerfile
mkdir shadowsocks-libev && cd shadowsocks-libev
vi Dockerfile
复制粘贴:
FROM alpine
ENV TZ=Asia/Shanghai
ENV CONFIG_PATH=/etc/shadowsocks-libev/config.json
ENV ARGS=
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN set -ex && \
apk add --no-cache udns && \
apk add --no-cache --virtual .build-deps \
git \
autoconf \
automake \
make \
build-base \
curl \
libev-dev \
c-ares-dev \
libtool \
linux-headers \
libsodium-dev \
mbedtls-dev \
pcre-dev \
tar \
udns-dev && \
cd /tmp/ && \
git clone https://github.com/shadowsocks/shadowsocks-libev.git && \
cd shadowsocks-libev && \
git submodule update --init &&\
./autogen.sh && \
./configure --prefix=/usr --disable-documentation && \
make install && \
cd .. && \
runDeps="$( \
scanelf --needed --nobanner /usr/bin/ss-* \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| xargs -r apk info --installed \
| sort -u \
)" && \
apk add --no-cache --virtual .run-deps $runDeps && \
apk del .build-deps && \
rm -rf /tmp/shadowsocks-libev
USER nobody
CMD exec ss-server -c $CONFIG_PATH $ARGS
二、创建 Shadowsocks-libev 配置文件
mkdir /etc/shadowsocks-libev
vi /etc/shadowsocks-libev/config.json
复制粘贴:
{
"server":"0.0.0.0",
"server_port":8388,//修改为你想要的端口,建议不要使用默认端口
"password":"your password",//修改为你想要的密码,建议带特殊字符
"timeout":600,//超时,建议600
"method":"xchacha20-ietf-poly1305",//加密方式
"fast_open":true,
"mode":"tcp_only"//仅tcp,如果需要开启udp请改为:tcp_and_udp
}
三、运行 Shadowsocks-libev
1、创建镜像
docker build -t shadowsocks-libev .
2、启动容器
docker run --restart=always \
--network=host \
--name=shadowsocks-libev \
-v /etc/shadowsocks-libev:/etc/shadowsocks-libev \
-i -t -d \
shadowsocks-libev
到此可以愉快的使用 Shadowsocks 客户端连接了!
关于修改 Shadowsocks-libev 配置
执行:
vi /etc/shadowsocks-libev/config.json
修改自己想要的配置参数,保存退出后重启 shadowsocks-libev 容器即可生效
docker restart shadowsocks-libev