最近自己搭的梯子用着总是不太稳定,顺带 ShadowsocksX-NG 客户端可以使用 v2ray-plugin 插件了,于是就整了个插件来抗干扰下,这里记录下操作流程方便以后使用。
域名
弄一个域名映射到自己的服务器上。
申请免费证书
和官方文档一样使用 acme 脚本自动申请免费证书 (免费证书有效期一般是 3 个月,脚本会每隔 60 天自动更新一次证书有效期)
在申请之前必须先到 cloudflare 页面,点击右上角的头像,然后点击 My Profile ,在个人信息页面有个 API Tokens -> Global API KEY, 复制你的 API KEY, 同时复制你的 CloundFlare 的登陆邮箱 , key 和 email 用于申请证书
- 申请证书(确保域名已解析到自己的服务器
export CF_Email="CloundFlare Email"
export CF_Key="API KEY"
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --issue --dns dns_cf -d YourDomain
执行完上面命令,acme 脚本就会自动帮你申请好了证书,证书存放的目录在 ~/.acme.sh/YourDomain/
,里面包含了 ca.cer 、fullchain.cer | .key 等文件。
docker
从方便这一方面来说,使用 docker
简直不要太方便了。
GitHub 搜了下发现了这么一个仓库:https://github.com/Acris/docker-shadowsocks-libev,看了下 Dockerfile,作者使用了多阶段构建,这样不会导致镜像体积过大,其他也没什么问题。
接着就能按照示例的 docker-compose
文件撸就是了:
version: "3.7"
services:
shadowsocks-libev:
container_name: shadowsocks-libev
image: acrisliu/shadowsocks-libev:latest
ports:
- "8388:8388/tcp"
- "8388:8388/udp"
volumes:
- /root/.acme.sh:/root/.acme.sh:ro
environment:
- PASSWORD=YourPassword
- ARGS=--plugin v2ray-plugin --plugin-opts server;tls;host=yourdomain.com;path=/v2ray;cert=/root/.acme.sh/yourdomain.com/fullchain.cer;key=/root/.acme.sh/yourdomain.com/yourdomain.com.key -u
restart: always
其中可以使用的环境变量及其默认值:
SERVER_ADDRS
: 远程服务器的主机名或IP, 默认值:0.0.0.0
.SERVER_PORT
: 远程服务器的端口号, 默认值:8388
.PASSWORD
: 远程服务器的密码, 默认值:ChangeMe!!!
.METHOD
: 加密方式, 默认值:chacha20-ietf-poly1305
.TIMEOUT
: Socket 超时时间, 默认值:86400
.DNS_ADDRS
: DNS解析服务器地址, 默认值:1.1.1.1,1.0.0.1
.ARGS
:Shadowsocks
服务器额外支持的参数,默认值:-u,使用 UDP 中继。
最后将 docker-compose
文件中的参数改成自己就可以了。
客户端设置
我使用的是客户端是 ShadowsocksX-NG
,其他客户端应该是差不多:
- 插件:填写 v2ray-plugin
- 插件选项:填写 mux=5;path=/v2ray;tls;host=yourdomain.com;certRaw=cer证书内容
mux
参数是客户端设置的并发连接数,默认为 1