Caddy2+WebSocket+TLS搭建v2ray
2020/8/22
最近发现caddy镜像小版本更新导致Caddyfile配置无效,为避免版本迭代造成不必要的麻烦,直接指定tag为2.0.0
2020/5/4
突然在Github上发现了v2ray配置脚本,能满足绝大部分需求,不过不是基于docker的,不能同时部署多种服务
bash <(curl -s -L https://git.io/v2ray.sh)
最近我经常看视频,感觉买的梯子满足不了自己需求了,于是准备租个VPS搭v2ray,就此做个笔记方便以后cv
VPS选购
VPS我选了vultr,新用户点链接注册送50刀,如果有信用卡可以白嫖,或者用支付宝也是支持的
因为家境贫寒,就直接选了最低配的Cloud Compute,每月5刀能用挺久,如果还有其他需求直接上High Frequency,价格多了1刀性能还是提高不少的
机房可以分别试一下比较速度,按小时付费可以随时destroy
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
./speedtest
系统建议Debian9或Ubuntu19.10以上版本,我这里选了今天刚刚支持的Ubuntu20.04,默认开启BBR加速,
也可以选择BBRplus加速
wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh
基于TCP的v2ray配置
接下来就可以进行配置了,先装个docker
apt install -y docker.io
v2ray配置文件config.json是必须的,我直接用Xftp放到了/etc/v2ray目录下
{
"log": {
"loglevel": "warning",
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log"
},
"inbounds": [
{
"port": 9706,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "d86d3a42-25db-4f51-81b8-88c4043caa94",
"alterId": 64
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
id可以直接在uuidgenerator生成一个,相当于vmess的认证机制
端口和id与客户端保持一致,客户端的afterId需要小于等于服务端(建议32-100之间),其他默认就可以
然后启动v2ray容器
docker run -d --name v2ray --restart always \
-v /etc/v2ray:/etc/v2ray -p 9706:9706 \
v2ray/official v2ray -config=/etc/v2ray/config.json
最后放行相应的配置端口,这样其实基于tcp协议的v2ray就搭建完成了,客户端按默认的TCP配置
TCP相对来说会更快,日常使用足矣。不过这样隐匿性不高,去年11月份大规模被墙的时候只有WS+TLS依然坚挺,伪装流量效果还是不错的
基于Caddy 2实现WebSocket+TLS
之所以选择Caddy而不是Nginx和Apache是因为它会根据配置的域名自动签发证书,部署起来很方便
前提条件是有一个属于自己的域名xxx.domain.com,将VPS的ip地址添加到A记录
并在VPS防火墙安全组里把80和443端口放行
然后修改一下v2ray的配置文件
{
"inbounds": [
{
"port": 9706,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "d86d3a42-25db-4f51-81b8-88c4043caa94",
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/ray"
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
以及Caddyfile,配置域名和反向代理,这里注意caddy 2和1.0版本配置文件差别还是挺大的
xxx.domain.com
{
log ./caddy.log
reverse_proxy /ray v2rays:9706 {
header_up -Origin
}
}
其中/ray和9706分别为v2ray配置文件config.json中的path和port,v2ray为docker容器名,注意修改域名
创建网络用于v2ray和caddy通信
docker network create v2raynet
启动v2ray容器
docker run -d --name v2rays --restart always \
-v /etc/v2ray:/etc/v2ray --net v2raynet \
v2ray/official v2ray -config=/etc/v2ray/config.json
以及caddy容器
docker run -d --name caddy --restart always --net v2raynet -p 80:80 -p 443:443 \
-v /site:/usr/share/caddy -v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data -v caddy_config:/config caddy:2.0.0
客户端配置
windows下配置v2rayN客户端
服务器迁移
打一个快照即可,如果IP被封了可以基于快照再重开一个服务器,只需要修改v2ray客户端或者DNS中的IP地址
匿名
大佬,Caddyfile里怎么增加本地站点,或者增加一个默认反代网址?
admin
如果是用docker的话先把宿主机中静态文件目录映射到容器的/usr/share/caddy,然后在Caddyfile中配置
localhost {
curl https://localhost/xxx.html  root * /usr/share/caddy
  file_server
}
反向代理可以这样配置
reverse_proxy * ip:80
默认就是localhost/xxx反代到ip:80/xxxreverse_proxy /ray ip:81
localhost/ray会反代到ip:81/ray