安装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

至此,教程结束。