vmess和vless现在均需要tls证书才能长时间保证端口的可用性,本人实测不加tls的端口跑个一百G流量就封,经常换端口非常难受。只能想办法加上tls证书,最省事的办法是让acme.sh服务自己续签。
acme.sh脚本是需要http服务器也就是一个web server才能签证书的,除非使用dns模式是可以不需要安装nginx等http服务。但是让我在代理用途的vps上填写dns服务商的用户名和密码,即便是子用户账号密码我也还是不习惯。
既然要装web server,就想到了caddy这个轻量应用。
首先是安装docker
curl -sSL https://get.docker.com/ | sh
安装portainer
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /mnt/docker/portainer:/data portainer/portainer
portainer中安装caddy
参考https://github.com/abiosoft/caddy-docker/blob/master/README.md
端口对应 80:80 443:443 2015:2015
安装完之后进行修改:
在env中添加CADDYPATH=/etc/caddycerts
将env中 ACME_AGREE改为true
同时挂载host的/caddy
目录为container的/etc/caddycerts
目录
修改完毕,保存重启进入容器命令行
编辑/etc/Caddyfile
文件
按照如下格式进行填写保存,以进行ssl续签
mydomain.com
tls [email protected]
然后在宿主机的/caddy
目录下应该能找到域名下的证书文件夹。
此时只需要将.cert文件和.key路径加入tls设置里就可以了。应用x-ui搭建vmess和vless协议的xray服务器可以用可视化界面操作, https://github.com/vaxilu/x-ui。