安装Lucky
在Ubuntu上安装Lucky可以通过官方提供的安装脚本完成。运行以下命令下载并执行安装脚本:
curl -sSL https://raw.githubusercontent.com/gdy666/lucky/main/install.sh | sudo bash
但安装后出现仅支持ipv6访问的问题,所以,采用docker部署:
docker run -d --name lucky \
--restart=always \
--publish 16601:16601 \
--publish 30000:30000/udp \
--publish 30001-30005:30001-30005/tcp \
-v /opt/lucky:/goodluck \
gdy666/lucky
安装完成后,Lucky会自动以容器的方式启动
其中16601是lucky的后台管理界面端口
30000-30005是笔者打算暴露到公网的端口,也是打算做反向代理的公网端口,需要打开云服务器的防火墙规则,否则无法暴露到公网
假设笔者在3000端口部署了一个服务,先配置华为云的3000端口防火墙,然后用http://云服务器ip:3000,确保访问没有问题;然后关闭华为云的3000端口防火墙
然后在lucky中添加一条web服务规则,把https://公网IP:30001,反向代理到http://172.17.0.1:3000/
其中30001是外网端口,因为构建lucky容器时已经做了端口映射,所以lucky容器已经可以接收到来自于外网30001端口的请求。
因为创建容器默认是使用桥接网络,所以docker会给容器分配一个172.17.0.0/16网段的ip,默认网关是172.17.0.1,所以172.17.0.1这个地址指向了宿主机,http://172.17.0.1:3000/这个地址就是笔者在宿主机上部署的web服务,172.17.0.1这个地址可以通过inspect命令获取
docker inspect 容器名称
注意:在openwrt这类路由系统上,容器可以直接访问宿主的端口,Ubuntu不行,需要添加防火墙规则:
sudo ufw allow from 172.17.0.0/16 to any port 3000
这样就实现了在docker容器中把外网30001端口请求反向代理到了宿主机的3000端口上。
下一步:添加https证书,要求外网的30001请求必须走TLS认证
下一步:在lucky中再添加一条规则,把http://公网IP:30001重定向到https://公网IP:30001
至此,教程结束。
评论