halo如何使用自建lsky图床?
Lsky图床是什么?
Lsky图床是一个开源的图像托管服务,主要用于图片上传、存储和管理。它提供了一个简洁的 Web 界面,允许用户方便地上传、管理和分享图片文件。Lsky图床通常被用于博客、论坛、社交媒体等平台,用来方便地存储和引用图片资源。
特点:
开源与自托管:Lsky图床是开源的,用户可以自由部署到自己的服务器上,完全掌控自己的数据。
多种上传方式:支持通过Web界面、API、拖拽等方式上传图片。
支持外链:上传的图片可以通过生成外链进行分享,适合博客和社交平台使用。
支持图片管理:提供图片的删除、重命名和查看等管理功能。
支持多种存储后端:可以配置不同的存储后端,如本地存储、阿里云、七牛云等。
部署:
可以通过 Docker 镜像快速部署。
支持 MySQL 和 SQLite 数据库存储。
本教程简介:
lsky图床搭建本地存储,存储到本地的NAS,本教程使用的是端口映射,有动态公网的操作。
必须有一个系统可以安装docker或者1panel ,所以需要nas支持或者建一个虚拟机用来跑这些服务
你的nas支持安装docker,可以直接安装在nas中。
我的这个NAS是windows server
(x99)
不能直接安装docker(windows的不好用)或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域名+一个目录 以后你存在下面的文件访问地址为https://xxxx:端口/lsky/XXXX.png
链接地址: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服务的端口号。
代码如下
location /lsky { proxy_pass http://10.255.255.242:5244/d/smb/lsky; # 映射到 Alist 直链目录 }
这个时候显示就正常了
坑点3:alsit不要开启签名
开启会出现401错误,要验证证书
三、halo配置
1、安装lsky pro插件
2、新增存储策略
3、根据教程填写策略
ichenhe/halo-lsky-pro: 集成 Lsky Pro 兰空图床作为 Halo 的存储后端。 (github.com)