以前部署 ss 的时候,三行命令就可以部署一台 ss server 服务器,超级方便。
现在,喜欢上了 V2ray, V2ray 可以使用 WebSocket + TLS + Web + CDN 的方式,将流量伪装成 HTTPS 流量,同时还能使用 CloudFlare 的免费 CDN,这样就再也不怕自己的 IP 被屏蔽的问题了。
但是配置 V2ray 的 WebSocket + TLS + Web + CDN 步骤太多,而且,稍为不注意还容易出错,所以为了方便搭建,使用 Shell 基于 Docker 做了一个一键部署脚本。
- 设置 Server 的 DNS 为 8.8.8.8 和 8.8.4.4
- 安装常用工具: vim mosh dnsutils net-tools mlocate wget
- 修改 SSH 端口,禁止密码登陆(可选)
- 安装 docker 和 docker-compose
- 安装 ufw,配置防火墙端口
注意: 如果有修改 SSH 端口,脚本会自动开放端口,但是最好还是检查一下防火墙。
V2Ray 可以根据提示生成三种连接方式:
端口 : 默认 39832
密码 : 随机 24 长度字符串。
加密方式 : chacha20-ietf-poly1305
端口 : 默认 37849
UUID : 自动生成
域名 : 自行配置
端口 : Caddy 绑定 80 和 443(不能修改)
UUID : 自动生成
Debian 9+ / Ubuntu 16.04 + (测试通过,可用)
CentOS 7+ (没有测试,如果有问题,请提交到 Issue)
如果使用 SS 和 tcp 直接, 只需要购买一个 VPS。
如果需要使用 WebSocket + TLS + Web + CDN ,需要购买域名和注册 CloudFlare 账号。
- 购买一个域名,找个 xxxx.com ,购买一个自己的域名.
- 因为要使用 CloudFlare 的 CDN,去 https://www.cloudflare.com/ 注册一个账号,然后添加自己域名到 CloudFlare。CloudFlare 会列出两个 NameServer 需要配置到自己购买域名.
参考:CloudFlare免费CDN加速使用方法
- 登录 CloudFlare, 选中一个域名,然后找到右下角有一个 <Get your API token>, 点击下面的 <Get your API token>,记录下这个值和 CloudFlare 的登录邮箱 Mail。
根据不同的系统执行下面的命令:
# Debian / Ubuntu
apt -y update && apt -y upgrade && apt install -y curl && curl -s -L "https://git.io/JeZQj" > caddy-v2ray-docker.sh && bash caddy-v2ray-docker.sh -i -c
# REHL / CentOS
yum -y update && yum install -y curl && curl -s -L "https://git.io/JeZQj" > caddy-v2ray-docker.sh && bash caddy-v2ray-docker.sh -i -c
说明:
命令会自动下载一个脚本保存为 caddy-v2ray-docker.sh. 脚本接受两个参数:
参数 | 是否必须 | 是否有值 | 说明 |
---|---|---|---|
-i | 否 | 否 | 是否初始化 Server |
-c | 否 | 否 | 是否重新配置 V2Ray |
如果不加参数表示不执行相应的操作。
不加参数运行脚本即可
bash caddy-v2ray-docker.sh
查看容器的启动日志
docker logs v2ray
docker logs caddy
应用的日志在当前目录的 log 目录下
使用了 CloudFlare 后,Caddy 使用 acme 申请的 HTTPS 证书无法续签。
Caddy 为了保证证书不过期,会隔一段时间撤销之前的证书申请一个新的证书。签发证书的机构 Let's Encrypt 为了验证你对网站的所有权,会验证一下域名指向的 IP 地址和发出申请的 IP 地址是否相同。而 Cloudflare 的 name server 隐藏了你原先的服务器 IP,所以自然是对不上的。
所以,需要使用 Caddy 的 CloudFlare 插件。