前言:

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

Alist:一个支持多种存储的文件列表程序,AList 支持多个存储提供商,包括本地存储、阿里云盘、OneDrive、Google Drive 等;AList 支持所有 WebDAV 存储,这是一种用于访问文件的标准。

OneDrive 是微软的一个存储网盘,它可以通过申请E5开发者账号免费白嫖5TB的存储空间,最高可以申请到25TB,用作图床存放源已经完全够用。

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

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

注意:

推荐使用香港1Gbps服务器搭建Alist网盘,挂载OneDrive时可以选择本地代理,提高国内访问速度的体验。

怎么白嫖E5开发者账号可以通过百度教程。

效果展示

官方文档

LskyPro 兰空图床官方文档:https://docs.lsky.pro

AList 官方文档:https://alist.nn.ci

部署步骤

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

AList挂载 OneDrive网盘

请根据AList官方文档完成挂载OneDrive网盘:OneDrive | AList文档 (nn.ci)

注意:完成挂载后推荐使用本地代理

配置 AList WebDAV 服务

在个人网盘中创建 图床 文件夹,并在 AList 中将该文件夹挂载到路径 /OneDrive,如下图所示:

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

启动 LskyPro 图床容器服务

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

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

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

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

创建反向代理

推荐直接只用 宝塔面板 方便管理

1.先通过宝塔创建一个网站,以我的域名 i.tr0.cn 为例

2.在站点设置添加反向代理:

注意:目标URL为http://你的服务器IP:4003

添加完成反向代理后,需要手动设置一下反向代理的配置文件:

假设图床服务的域名为:https://i.tr0.cn 在配置文件中添加如下配置:

location /img {
    # 网盘图片存放地址
    proxy_pass https://p.tr0.cn/d/OneDrive/%E5%9B%BE%E5%BA%8A;
    # OneDrive打开图片默认会下载,隐藏头信息实现不下载直接预览
    proxy_hide_header Content-Disposition;
    proxy_hide_header X-Databoundary;
    proxy_hide_header X-Download-Options;
    # 设置连接超时时间
    proxy_read_timeout 600s;
}

配置 LskyPro 图床

打开创建的图床网站,我以i.tr0.cn为例:

A. 数据库配置

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

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

B. 设置存储策略

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

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

配置项配置内容说明
名称WebDAV 存储区
储存策略WebDAV
访问域名http://i.tr0.cn/img记得添加 /img 后缀,与 Nginx 配置保持一致
URL Queries留空,无需填写
连接地址https://p.tr0.cn/p.tr0.cn 为 AList 服务访问域名
认证方式Basic务必选择 Basic,否则连接失败
路径前缀/dav/OneDrive/图床与 AList 存储配置保持一致
用户名${username}AList WebDAV 用户名
密码${password}AList WebDAV 访问密码

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

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

鸣谢

本文参考来源于:AList+云盘+LskyPro · 搭建大容量图床 | LeoHao’s Blog

本文内容在该教程基础上进行的二次修改。

写在最后

这里给出一个搭建成功并上传图片成功的图片外链:650c7e116b001.jpg (3840×2160) (tr0.cn)