
halo使用自建的lsky图床让网站图片存在本地NAS(需动态公网)
本教程简介:
必须有一个系统可以安装docker或者1panel ,所以需要nas支持或者建一个虚拟机用来跑这些服务
由于我的NAS不能直接安装docker或1panel管理面板,我在NAS中安装了Ubuntu虚拟机来运行这些服务。
由于使用的是虚拟机或docker版本的应用,本地存储成为一个问题。
为了解决这个问题,我使用Alist来连接NAS和Lsky Pro。
Alist可以帮助我挂载SMB共享,使得在虚拟机中的服务能够访问NAS中的文件。
这样,Lsky Pro可以通过Alist来利用NAS的存储空间,实现图床应用的功能。
必要条件:
家庭网络 动态公网,可以使用ddns将lsky pro映射出来
我的本地环境如下:
- 路由:ikuai(免费的系统,可用来ddns和端口映射)也可以使用自己的方案,如:openwrt,Nginx Proxy Manager,异曲同工
- 域名:阿里云
- NAS:支持常见共享协议即可,smb,nfs,我这里使用的是SMB
- 虚拟机系统:ubuntu sever 22.04 lts
- 服务器管理面板:1panel 专业版(用来搭建服务和反向代理)
- Alist:使用1panel一键安装的docker应用 (用来挂载smb)
- Lsly pro:使用1panel一键安装的docker应用(图床应用,使用webdav添加Alist存储作为存储策略)
须知:
省略的步骤
- NAS 如何开启共享
- 虚拟机的如何安装
- 1panel如何安装
只有的步骤
- Alist如何配置
- Lsky pro 如何配置
- ikuai如何配合1panel使用反向代理
- 反向代理注意事项
- halo如何添加lsky pro
一、Alist增加本地SMB存储
这里不局限于这一个存储类型,网盘,oss等各种适合自己的方式均可,详情看alist文档,哪个支持webdav即可
1、我使用的是windows server开启的smb
需要注意的是 共享名 和协议
2、Alist挂载SMB
点击存储
- 驱动:SMB (上方的协议)
- 挂载路径:/smb(这个地方是alist的目录路径)”此路径相当于挂载了E:\backup\smb ,比如新建了一个文件夹/smb/lsky 则等于E:\backup\smb\lsky“
- 用户名:登录账号
- 密码:登录密码
- 分享名称:(上面的共享名)
挂载成功后状态为work
前端可以看到挂载目录 则代表成功
二、Lsky pro 配置
这里如何安装不累赘了,我使用的方式是1panel一键安装,简单省事
1、先反代lsky
一:使用ikuai先添加动态域名
这里我使用的是阿里云,待会使用端口映射将服务映射出去
二:在1panel中创建一个反向代理
- 域名:上方第一步的动态域名
- 端口号:想映射出去的端口(填你喜欢的即可)
- 代理地址:lsky服务的地址
(如果你是当前1panel一键创建的服务则可以使用127.0.0.1地址,如果你使用的是其他服务器创建的请使用内网地址,如:192.168.1.xx:端口)
我这里是同一个1panel里面的服务,所以使用的是127.0.0.1:40027
三:反向代理 开启https
证书部分不再赘述,因为1panel提供了一键申请的功能,如果对此不熟悉,可以查阅1panel的官方文档,详细了解证书申请和配置的过程。
需注意要在配置文件改一下ssl端口,不然你的44444端口不是ssl
四:使用ikuai将端口映射出去
内网地址:服务所在的内网地址
内网端口:第二步刚新建的反向代理的内网端口
外网地址:你绑定解析动态域名的那条线路
外网端口:外网通过哪个端口可以访问,为了防止混乱,我比较喜欢统一
这这个时候你已经可以通过外网地址和映射的端口访问到Lsky pro服务了。
但还远远不够
2、lsky 增加webdav 作为存储策略
一:存储策略里面创建一个新的存储策略
- 名称:我这里就叫webdav 这个无关紧要
- 存储策略:WebDav
- 访问域名:当前lsky域名+一个目录 以后你存在下面的文件访问地址为
- 链接地址:alist访问地址 可以是内网的地址,我的内网alist地址为http://10.255.255.242:5244 可以不用反代出来,lsky是内网应用,alist当然可以内网使用,不需要映射出来
- 认证方式:basic
- 路径:根据文档可以看到webdav的挂载为 http[s]:地址:端口/dav, 而根据上方alist挂载的地址来看,我新建了一个lsky目录,则挂载地址就是/dav/smb(挂载路径)/lsky(路径下的文件夹地址)
WebDAV | AList文档 (nn.ci) 如果有不懂得就看文档
- 用户名:alist用户名(要有webdav权限)
- 密码:alist密码
这个时候已经在lsky中可以成功上传了,上传的地址是没有问题
坑点1:lsky反向代理需增加一个请求头
如果不增加这个请求头,你就会遇见一个访问https:xx.xxx.com:44444 自动302 跳转为 https:xx.xxx.com
不带端口的地址,这是带端口反向代理会出现的问题,任何服务都需要注意
需在反向代理的位置 源文 增加一条请求头
proxy_set_header X-Forwarded-Host $http_host;
设置好以后,你就可以通过域名+端口正确的访问Lsky pro
坑点2:要注意反向代理alist直链
这个时候你会出现一个问题,可以成功上传,但是无法正常显示,,访问地址有问题!
你需要通过 https://域名:端口/图片地址 访问图片,你会发现图片点开就是404,但缩略图是正常的,这时候添加到halo中,可以上传,但无法正确加载图片
这个情况还需添加一条 反向代理 代理alist地址的配置代码
在1panel中刚才的建的反向代理,点一下网站的配置文件
location /lsky
这个/lsky 是下图这个位置,根据自己自定义的来
然后增加一条反向代理,代理至Alist的地址即可。为了方便访问,你可以使用内网地址,如 http://X.X.X.X:端口/alsit直链地址
,其中 X
是你的Alist服务所在的机器的内网IP地址,`端口` 是Alist服务的端口号。
代码如下
这个时候显示就正常了
坑点3:alsit不要开启签名
开启会出现401错误,要验证证书
三、halo配置
1、安装lsky pro插件
2、新增存储策略
3、根据教程填写策略
ichenhe/halo-lsky-pro: 集成 Lsky Pro 兰空图床作为 Halo 的存储后端。 (github.com)
author:- "[[sky博客]]"
原文链接:https://www.5ee.net/archives/haloru-he-shi-yong-zi-jian-lsky-pro-zuo-wei-cun-chu-ku
- 感谢你赐予我前进的力量