笔者之前用的是白裙自带的反代,后来经过同事指点,学习并上手了 npm(nginx-proxy-manager),支持自动续签证书和 web 服务反向代理,本来一切都很理想,然而在一次升级 npm 之后,无法进入系统,配置的二三十个反代全部 gg,太痛苦了,虽然我做了备份,但依旧无法挽救,于是想找个替代品的想法就一直搁在心里。

前阵子刷张大妈看到 lucky 教程:

不止是反向代理!3 分钟在 NAS 上搭建国内大佬开发的免费开源神器『Lucky』NAS 存储什么值得买

以前有听闻过这款神器,但一直没有下手过,这次借着大佬完整的教程,决定一步到位,说干就干。目前已经完全替换,关停了 npm,部署教程就不细说,可以自行查阅大佬教程,我来说说自己在部署中的一些心得吧。

部署完记得修改密码!!!

一、替代的功能

我使用 lucky 主要替代了 npm 的 ssl 证书以及 web 服务反代配置,同时使用 lucky 做 ddns 和端口转发,最贴心的还是它的一键备份很方便,同时我还发现备份的目录其实就在 /etc/config/lucky.daji 下,于是我在路由器上增加了定时备份脚本,万一平台崩溃,大不了重新部署并一键导入备份,还是非常便捷高效的。

二、部署方式

一开始我认为 lucky 这样的软件,应该部署在最稳定的设备上,例如家里的白裙,因为白裙基本不会崩盘,且几乎不关机或重启,是一个比较理想的环境,但后来发现直接在 openwrt 上部署更加高效,能直接读写防火墙,这样我的端口转发都可以不用在 openwrt 上配置,全部都可以转移到 lucky,配合一键备份 / 恢复,十分理想。

家里主路由用的 istoreos,商店里能搜到 lucky 应用,但安装后发现无法运行,后来采用 ipk 的安装方式,完美启动,建议在 openwrt 上部署还是采用这种方式避免不必要的麻烦。

Lucky 官方 IPk 包源码地址 : https://github.com/gdy666/luci-app-lucky

其他内容参考官方教程:安装运行 | Lucky,安装时还请仔细阅读官方教程的警告内容。

三、web 服务反向代理

配置反代很简单,这里不得不提一点,lucky 无法像 npm 或者手搓的 ng 那样实现自定义的配置内容,官方在定制模式下仅给出了几个可配置项,也许不一定能满足你的需求,如下图:

但是官方提供一个按钮(万事大吉),说是自动配置了绝大多数的必要参数,而我实际配置后也发现似乎确实不用再去自定义一些配置,但如果是需要更加自由的自定义,那大抵是无法满足了。

按照同事的话说,作者的意图非常明显,就是要足够傻瓜化。那就将傻瓜进行到底吧。

四、其他功能

除了上述我用到比较多的几个功能外,还有网络存储、网络唤醒,计划任务,内网穿透等非常实用的功能,按需使用吧。

最后,一定记得配置完手动备份一次,以防万一,如果有能力实现自动备份那是最好的。


ps:下面简单说说 2 个自动备份的脚本关键字

一、定时备份

可以使用下面的脚本打包配置文件,有需要的时候,提取 lkcf 文件压缩成 zip 格式,进入 lucky 还原即可

tar -czvf ${bakDir}/${DATE}/lucky_${DATE}.tar.gz ${luckyDir}/*.lkcf

二、文件变动实时备份

该方案是从同事那儿学来的,能监控文件目录里的文件发生变动时,自动执行备份,需要将脚本文件加入到开机自启动任务或定时任务里执行。

1、这个方法需要先在 openwrt 安装监控服务

opkg install inotifywait

2、然后设置好备份与目标文件夹,使用脚本进行监控执行

while
    /usr/bin/inotifywait -r "$watch_dir" -e modify -e move -e create -e delete --timefmt '%Y/%m/%d %H:%M:%S' --format '%T %w %f %e' -o "$log_file"
    #/usr/bin/inotifywait -r "$watch_dir" --exclude "$exdir" -e modify -e move -e create -e delete --timefmt '%d/%m/%y %H:%M' --format '%T %w %f %e' -o "$log_file"
do
    cd $watch_dir
    current_time=$(date +"%Y%m%d%H%M%S")
    tar -czvf $bak_dir/lucky_$current_time.tgz ./*.lkcf >>${log_file}

    echo "==========  结束Lucky备份任务:$(date +"%Y-%m-%d %H:%M:%S")  ==========" >> ${log_file}

done