AList+云盘+LskyPro · 搭建大容量图床

效果演示

传送门 → LeoHao’s Image Hub

已上传图片集合 图床主页 个人仪表盘 图床控制台

写在前面

图床是用于存放图片的空间,基于图床可以很方便的实现图片分享,便于日常使用和前端开发。

兰空图床 · Lsky Pro 是一款基于 PHP 开发的开源图床项目,界面美观且易于操作,目前支持本地存储AWS S3阿里云 OSS腾讯云 COS七牛云又拍云SFTPFTPWebDAVMinio 等多类存储服务。

Lsky Pro 的优势在于其支持 WebDAV 协议,因此我们可以使用 AList 绑定个人网盘(如阿里云盘、百度网盘、天翼云盘、夸克网盘等),将 AList 提供的 WebDAV 服务作为图床的存储策略,进而充分利用云盘空间,快速地通过图床将图片托管到个人网盘。

P.S. 本文档内的图片由 LeoHao’s Image Hub 托管

官方文档

兰空图床

AList

部署步骤

注意:在部署开始前你应该拥有一台公网服务器,另外,以下步骤依赖于 Docker、Nginx 和 AList,请提前安装相关依赖并配置,本文档只对 LskyPro 图床的搭建步骤和必要的注意事项进行介绍。

Step1. 配置 AList WebDAV 服务

在个人网盘中创建 lskypro-image 文件夹,这里以天翼云盘为例,并在 AList 中将该文件夹挂载到路径 /image,如下图所示:

在云盘客户端创建图片文件夹 在 AList 中设置存储挂载路径

以上步骤完成后,访问 DAV 链接并通过身份校验后,即可进行图片的上传与访问。假设 AList 绑定的公网域名为 alist.domain.name.cn,则图片存储服务的 DAV 链接为:https://alist.domain.name.cn/dav/image

Step2. 启动 LskyPro 图床容器服务

LskyPro 图床服务依赖于多个PHP插件,为了方便部署,我们采用 Docker 的方式安装 ,命令如下:

1
2
# 创建容器并启动(宿主机4003端口可自行更改)
sudo docker run -d --name lskypro --restart unless-stopped -p 4003:80 -v /data/lskypro:/var/www/html coldpig/lskypro-docker:latest

Step3. 修改 Nginx 配置项

注意,如果在 Nginx 配置中开启了 HTTPS ,需要执行以下命令修改图床项目源码,否则前端页面布局将被打乱:

1
sudo docker exec -it lskypro sed -i '32 a \\\Illuminate\\Support\\Facades\\URL::forceScheme('"'"'https'"'"');' /var/www/html/app/Providers/AppServiceProvider.php

假设图床服务的域名为 image.domain.name.cn,AList 部署在本地端口 4015,在 nginx.conf 中添加如下配置项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#Lsky Pro | Image Hub
server {
listen 80;
listen 443 ssl;
server_name image.domain.name.cn;
# HTTPS 需要指定 SSL/TLS 证书路径
ssl_certificate cert/image.domain.name.cn.pem;
ssl_certificate_key cert/image.domain.name.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# 转发图床服务请求
location / {
# 转发端口 4003 与 Step2 中设定的宿主机端口保持一致
proxy_pass http://localhost:4003;
proxy_read_timeout 600s;
}
# 转发 AList 图片直链访问请求
location /img {
proxy_pass http://localhost:4015/d/image;
proxy_read_timeout 600s;
}
}

Nginx 配置说明

  • 上传至图床的图片应该是可公开访问的,为此我们在以上 Nginx 配置中增加了 转发 AList 图片直链访问请求 配置项。经过以上配置,客户端通过访问 https://image.domain.name.cn/img/${img_path} 即可直接获取图片,无需进行身份验证。

Step4. 配置 LskyPro 图床

A. 数据库配置

以上步骤完成后,浏览器访问图床服务域名可进入如下图所示的配置页面。配置页面将引导我们设置数据库服务,为了减轻工作量,我们直接使用本地 SQLite 数据库,数据库路径留空即可(将自动在服务根目录的 database 目录下创建 database.sqlite 文件),同时需要设定管理员邮箱和登录密码。

设置数据库为本地 SQLite 文件

配置完成后根据引导进入图床首页

数据库设置完成后的引导页面

B. 设置存储策略

登录管理员账户,点击侧边栏的 “存储策略” 进入图片文件存储的相关配置,创建一个新的存储策略。

创建新的存储策略

默认存储策略为本地存储,为了不占用服务器空间,我们这里使用 AList 提供的 WebDAV 服务创建一个新的存储策略,配置项如表所示,其中访问域名即为图片直链对应的域名和路径。

注意:记得选中角色组,否则存储策略不会生效。

配置项 配置内容 说明
名称 WebDAV 存储区
储存策略 WebDAV
访问域名 https://image.domain.name.cn/img 记得添加 /img 后缀,与 Nginx 配置保持一致
URL Queries 留空,无需填写
连接地址 https://alist.domain.name.cn alist.domain.name.cn 为 AList 服务访问域名
认证方式 Basic 务必选择 Basic,否则连接失败
路径前缀 /dav/image 与 AList 存储配置保持一致
用户名 ${username} AList WebDAV 用户名(用户需有对 image 目录的 WebDAV 读写权限)
密码 ${password} AList WebDAV 密码(用户需有对 image 目录的 WebDAV 读写权限)
设置 WebDAV 存储策略 设置 WebDAV 存储策略

C. 设置 WebDAV 为默认存储策略

WebDAV 存储策略添加后可以将默认本地存储策略删除,防止用户将图片上传至本地服务器。

宝塔面板安装说明

不少小伙伴通过宝塔面板安装时遇到 WebDAV 配置错误的问题,经过排查,发现原因是 lskypro 开源项目的发布包存在问题,需要下载源码自行安装依赖,这里对主要步骤进行介绍。

References

【保姆级教程】兰空图床(Lskypro)的宝塔面板安装教程

Step1. 配置宝塔面板

注:请自行安装宝塔面板(宝塔面板官网),注意 PHP >= 8.0.2

A. 安装 PHP 扩展

进入 PHP 设置 → 安装扩展,选择安装 fileinfo, imagemagick 和 exif,如下图所示:

安装 PHP 扩展

B. 取消 PHP 禁用函数

进入 PHP 设置 → 禁用函数,删除 proc_open(用于后续编译)、 exec、shell_exec、readlink、symlink、putenv、getenv,如下图所示:

取消 PHP 禁用函数

Step2. 下载 LskyPro 源码并安装依赖

A. 下载源码并上传至服务器

下载源码 lsky-pro-master,通过宝塔面板上传至 /www/wwwroot 目录并解压,源文件输出到 /www/wwwroot/lsky-pro-master 目录。

上传源码并解压

B. 外部依赖安装

打开 Shell 命令行工具,执行以下命令:

1
2
cd /www/wwwroot/lsky-pro-master
sudo composer install

注:composer install 命令执行依赖于函数 proc_open,操作完成后会在源码目录下生成 vendor 目录。

Step3. PHP 站点配置

A. 新增 PHP 站点

添加站点,域名自行配置,根目录设置为 /www/wwwroot/lsky-pro-master,如下图所示

新增 PHP 站点

B. 设置运行目录

进入网站目录设置,选择运行目录为 /public,如下图所示:

设置网站运行目录

C. 添加伪静态配置

进入伪静态设置,粘贴以下内容

1
2
3
4
5
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
伪静态设置

Step4. 读写权限设置

打开 Shell 命令行工具,执行以下命令更改用户组和读写权限:

1
2
3
chown -R www /www/wwwroot/lsky-pro-master
chgrp -R www /www/wwwroot/lsky-pro-master
chmod -R 755 /www/wwwroot/lsky-pro-master

Step5. 重启 PHP 服务

重启 PHP 服务

接下来就能够正常显示 WebDAV 的配置页面了

正确的 WebDAV 配置页面