条件准备
一台墙外VPS;
一台安装好 SSH 客户端的本地电脑;
如果需要 tls 功能则需要准备一个域名(看个人需要:一个 Cloudflare 账号)。本人对原文进行了补充:
1、添加证书定时安装到相应文件夹,虽然证书会透过脚本自动更新;3.32、第四方案里的caddy,添加开机自启,原文没有开机自启所以重启后会导致无法上网。4.7.2
3、添加了不需要cloudflare api,申请证书的方式。3.3
一、安装 Docker
1.1 以 root 用户登录,执行一键脚本安装 Docker
以Debian系为例,升级源并安装软件
执行此命令等候自动安装 Docker
说明:推荐使用 KVM 架构的 VPS,OpenVZ 架构的 VPS 不支持安装 Docker,另外 CentOS 8 不支持用此脚本来安装 Docker。
1.2 对 Docker 的一些命令操作
查看 Docker 安装版本等信息
启动 Docker 服务
查看 Docker 运行状态
将 Docker 服务加入开机自启动
下面讲解的配置从上往下,难度由简到繁,如果你想一步到位,建议跳过二,三步,直接看第四步。
二、用 Docker 部署 Shadowsocks-libev + v2ray-plugin over websocket (HTTP)
2.1 创建配置文件
在 /etc 目录下创建 shadowsocks-libev 目录
切换目录至 /etc/shadowsocks-libev
创建并开始编辑名为 config.json 的配置文件
以下为配置文件内容示例,添加后保存并退出
说明:server 后面默认填 0.0.0.0,请不要修改。关于更多参数用法和说明请参考:这个链接
值得注意的是,如果把 plugin_opts 改为
值得注意的是,如果把 plugin_opts 改为
后就可以用 Quantumult X。
2.2 用 Docker 结合上面的配置文件创建并启动容器
命令如下:
参数解释:
docker run:开始运行一个容器
-d 参数:容器以后台运行并输出容器ID
–name 参数:给容器分配一个识别符,方便将来的启动,停止,删除等操作
–restart 参数:配置容器启动类型,always 即为 docker 服务重新启动时自动启动本容器
-p 参数:容器的 9000 端口映射到本机的 9000 端口。默认是 TCP 映射,当需要 UDP 映射时候,那就再追加一次 UDP 的映射。冒号后面是容器端口,冒号前面是宿主机端口,可以写成一致,也可以写成不一致
-v 参数:挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径,可以写成一致,也可以写成不一致
teddysun/shadowsocks-libev:这是从 docker hub 下载回来的镜像完整路径名
docker run:开始运行一个容器
-d 参数:容器以后台运行并输出容器ID
–name 参数:给容器分配一个识别符,方便将来的启动,停止,删除等操作
–restart 参数:配置容器启动类型,always 即为 docker 服务重新启动时自动启动本容器
-p 参数:容器的 9000 端口映射到本机的 9000 端口。默认是 TCP 映射,当需要 UDP 映射时候,那就再追加一次 UDP 的映射。冒号后面是容器端口,冒号前面是宿主机端口,可以写成一致,也可以写成不一致
-v 参数:挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径,可以写成一致,也可以写成不一致
teddysun/shadowsocks-libev:这是从 docker hub 下载回来的镜像完整路径名
2.3 后期容器处理常用命令
前面 docker run 后面 –name ss-libev 中的 ss-libev 为 $name,其代表容器识别符,也就是 $name=ss-libev。
查看容器在线状态及大小
查看容器在线状态及大小
查看容器的运行输出日志
重新启动容器,一般在修改除端口外的配置后使用使修改生效
停止容器的运行
移除容器
查看 docker 容器占用 CPU,内存等信息
三、用 Docker 部署 Shadowsocks-libev + v2ray-plugin over websocket (HTTPS)
3.1 用 acme.sh 脚本申请 SSL 证书
此处需要用到一个你拥有的域名。参考:这篇文章。下面默认你已经获取到 Clouflare API key,并且也已经安装好 acme.sh 脚本。
3.2 创建配置文件
在 /etc 目录下创建 shadowsocks-libev 目录
切换目录至 /etc/shadowsocks-libev
创建 config.json 的配置文件
以下为配置文件内容示例,添加后保存并退出
说明:server 后面的 0.0.0.0 不要修改,plugin_opts 后面的配置除了域名外也不要修改
3.3 安装证书到 Shadowsocks-libev 配置文件的目录 /etc/shadowsocks-libev
假设你的是域名是 mydomain.me,且已经在 Cloudflare 上设置好 A 记录解析
CF_Key 的值替换成你自己的 Cloudflare API Key
CF_Key 的值替换成你自己的 Cloudflare API Key
CF_Email 的值替换成你自己的 Cloudflare 注册邮箱账号名
用 acme.sh 脚本申请证书
安装证书到 Shadowsocks-libev 配置文件的目录 /etc/shadowsocks-libev
证书自动更新与安装
关于从Letsencrypt申请到的证书,有效期为90天,脚本会每60天自动更新证书,你无须进行任何操作,今后可能会缩短这个时间,不过都是自动的,你不用关心。
3.3.1.1更新acme.sh脚本
目前由于acme协议和letsencrypt CA都在频繁的更新,因此
acme.sh脚本呢也经常更新以保持同步。3.3.1.2 升级acme.sh到最新版
acme.sh --upgrade
3.3.1.3 如果你不想手动升级,可以开启自动升级:
acme.sh --upgrade --auto-upgrade
3.3.1.4 你也可以随时关闭脚本的自动更新
acme.sh --upgrade --auto-upgrade 0
3.3.2 定时任务
3.3.2.1安装crontab
apt-get update && apt-get -y install cron
3.3.2.2 设置定时任务(以下文4.5 caddy 为例)
如果你是用的lamp搭建的网站,并在lamp add添加站点过程中手动指定了证书的位置为
/root/ssl,证书:/root/caddy/caddy.crt 和key:/root/caddy/caddy.,那么你可以设置定时任务定时自动将证书放到这里。crontab -e //编辑定时任务
0 3 15 */2 * acme.sh --installcert -d try.878878.xyz --fullchain-file /root/caddy/caddy.crt --key-file /root/caddy/caddy.key --ecc && /etc/init.d/httpd restart
说明:这是设置每隔2个月在15号的3:00安装证书和key到/root/ssl目录下,并重启apache服务。
说明:这是设置每隔2个月在15号的3:00安装证书和key到/root/ssl目录下,并重启apache服务。3.4 用 Docker 结合上面的配置文件创建并启动容器
四、用 Docker 部署 Shadowsocks-libev + v2ray-plugin over websocket (HTTP) + TLS + caddy + CDN
4.1 申请 SSL 证书以及安装证书
参考上面的 3.1 和 3.3 章节。
4.2 创建配置文件
在 /etc 目录下创建 shadowsocks-libev 目录
切换目录至 /etc/shadowsocks-libev
创建 config.json 的配置文件
以下为配置文件内容示例,添加后保存并退出
说明:因为要监听本地,所以 server 后面地址填 127.0.0.1, 9000 端口不对外开放,此处只是在 websocket 的配置上加了个 path 参数(后面的值可以更改,比如可以改为 path=/teddysun),tls 则要由 caddy 来提供。
4.3 用 Docker 结合上面的配置文件创建并启动容器
命令如下:
说明:此处不用端口映射,直接使用
参数配置,让容器跟宿主机共用网络。
4.4 安装 caddy
执行下面一条命令安装 caddy,也就是以个人身份申请使用 caddy 的二进制文件,并把它放到 /usr/local/bin 目录下
4.5 配置 caddy 目录
在/root目录下创建 caddy 目录并切换至此
安装证书和 key 到 /root/caddy 目录下
4.6 创建 caddy 配置文件
创建文件并开始编辑 caddy 配置文件 caddy.conf
下面是 caddy 配置文件示例,添加后保存并退出
说明:此处只要关注路径和端口号,9000 是 /etc/shadowsocks-libev/config.json 里配置的,/ray 是配置文件内 plugin_opts 后面的 path=/ray,请注意替换。另 caddy 需要监听 443 端口,请确保 VPS 的 443 端口没有被占用。
4.7 运行 caddy
后台运行 caddy,也可以使用以下 4.7.2 systemctl 方式启动
可以查看 caddy 运行产生的日志
确认 caddy 运行状态,下面的命令有输出则表示正常
4.7.2 注册 caddy.service 后台服务方便管理
cd /etc/systemd/system && vim caddy.service //切换到此目录下,创建并开始编辑服务文件
//以下是文件内容,请添加至文件
[Unit]
Description=Caddy Service
After=network.target
[Service]
ExecStart=/usr/local/bin/caddy -conf /root/caddy/caddy.conf.
Restart=on-abort
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
//以上是文件内容,添加至文件
systemctl daemon-reload //重载服务
systemctl start caddy //启动caddy.service服务
systemctl status caddy //查看caddy服务运行状况
systemctl enable caddy //将此服务加入开机自启动
cd /etc/systemd/system && vim caddy.service //切换到此目录下,创建并开始编辑服务文件
//以下是文件内容,请添加至文件
[Unit]
Description=Caddy Service
After=network.target
[Service]
ExecStart=/usr/local/bin/caddy -conf /root/caddy/caddy.conf.
Restart=on-abort
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
//以上是文件内容,添加至文件
systemctl daemon-reload //重载服务
systemctl start caddy //启动caddy.service服务
systemctl status caddy //查看caddy服务运行状况
systemctl enable caddy //将此服务加入开机自启动4.8 开启 Cloudflare 的 CDN 保护,开启 SSL/TLS 的 Full 模式
五、客户端配置
5.1 Windows 客户端
先到这个链接下载 v2ray-plugin-windows-amd64 的安装包,下载完成后解压到 shadowsocks-windows 的安装目录下,并重命名为 v2ray-plugin.exe 即可。
选项说明:
插件程序:v2ray-plugin
如果选的是第一种,Shadowsocks-libev + v2ray-plugin over websocket (HTTP),插件选项这里可以留空
如果选的是第二种,Shadowsocks-libev + v2ray-plugin over websocket (HTTPS),插件选项这里填 tls;host=mydomain.me
如果选的是第三种,Shadowsocks-libev + v2ray-plugin over websocket (HTTP) + TLS + caddy + CDN,插件选项这里填 tls;host=mydomain.me;path=/ray
值得注意的是:如果你把 plugin_opts 改为
选项说明:
插件程序:v2ray-plugin
如果选的是第一种,Shadowsocks-libev + v2ray-plugin over websocket (HTTP),插件选项这里可以留空
如果选的是第二种,Shadowsocks-libev + v2ray-plugin over websocket (HTTPS),插件选项这里填 tls;host=mydomain.me
如果选的是第三种,Shadowsocks-libev + v2ray-plugin over websocket (HTTP) + TLS + caddy + CDN,插件选项这里填 tls;host=mydomain.me;path=/ray
值得注意的是:如果你把 plugin_opts 改为
后就可以用 Quantumult X 来使用这个节点,但 Windows 客户端不能直接使用了。
5.2 Android 客户端
先到这个链接下载插件并安装,其余的配置都跟上面 Windows 客户端一致。
5.3 iOS 客户端
请使用 Shadowrocket,也就是俗称的小火箭,添加如下配置使用。
填写服务器,端口,密码,选择算法,插件选择 v2ray-plugin
填写服务器,端口,密码,选择算法,插件选择 v2ray-plugin