基于LskyPro和阿里云对象存储搭建私有图床

本文最后更新于:2024年6月26日 晚上

基于LskyPro和阿里云对象存储搭建私有图床

基于Docker搭建

1
2
3
4
5
6
7
8
9
10
docker run -d \
--name lsky-pro \
--restart="always" \
-p 34323:8089 \
-v $PWD/lsky:/var/www/html \
-e WEB_PORT=8089 \
halcyonazure/lsky-pro-docker:latest

# 目前该容器只有一个环境变量:WEB_PORT,用于指定容器内的Apache监听的端口,默认为8089
# 如果需要修改的话可以在启动容器时添加-e WEB_PORT=8089来指定端口

deploy

注意在服务商控制台安全组里放行相应端口,不要用宝塔放行,大部分不生效。

#-p 外部映射端口任意选择,不冲突即可,内部暴露端口不建议改,根据镜像作者的说明来,有的镜像更改会出问题。

由于Docker的内部端口是独立的,所以内部暴露端口不需要考虑冲突问题,也就是冒号后面的端口可以在不同容器间重复,比如有很多容器的暴露端口都是8080

外部映射端口,也就是冒号前面的端口是不能重复的,因为这是宿主机的端口,每个端口都是唯一的,不能复用。

#-v 配置data所在目录,根据自己服务器环境更改

#–name 根据需要更改

访问相应ip:port网址访问页面,如123.123.122.111:343223

install

个人使用,数据库选择SQLite即可,方便迁移。

如果是第一次使用,没有现成数据,则数据库路径不必填写。

database

安装成功,使用管理员账号登录即可进入管理面板。

图床的基本框架便搭建完成了。

使用阿里云OSS存储

大部分服务器给硬盘都蛮抠的,用来当图床存储实在是捉襟见肘。

好在兰空图床为我们提供了其他存储方式选择

第三方云储存 AWS S3阿里云 OSS腾讯云 COS七牛云又拍云SFTPFTPWebDavMinio

这里博主使用阿里云OSS为例。

创建角色组

进入控制面板,这里的角色组储存策略值得我们注意。

role

点击创建角色组

笔者设置了Adminvisitor两个角色组,Admin组自用,其他用户的请求均分流到visitor组(上图绿色对钩标记为“默认”,“游客组”)。

注意路径命名规则,如图填入visitor/表示visitor用户组的图片都会上传到绑定的相应Bucket以根目录为基准的visitor文件夹。

文件命名规则根据需要填写,可以参考下图蓝色字体里的“命名规则对照表”。

图片保护,水印之类的功能根据自己需要配置。

visitor

bucket

添加储存策略

点击创建储存策略

storage

选择角色组选择的是有权限使用此种存储策略的角色组,按住CTRL,鼠标点击选中多个角色组。

名称随便填。

访问域名如下图箭头所指,地域节点就是下图Bucket域名前面那个。

Bucket名称就填写创建的Bucket的名字(在左上角打码的那个地方)。

domain

点击头像,进入AccessKey管理

access

点击创建AccessKey,获得AccessKeyIDAccessKeySecret,填入图床相应设置项。

create

创建成功之后,相应角色组的成员就可以在管理员所分配的储存策略中选择需要的策略。

policies

FAQs

初次搭建后,首页元素无法正常显示

首先停止容器,

1
2
docker stop [container]
# 如 docker stop c7e

然后进入容器静态资源文件夹,就是部署时配置的$PWD/lsky,根据下图进行修改:

static

修改后重启即可:

1
docker start c7e

浏览器报错,too many redirects

此种情况易在同时开启反代的强制https和cloudflare网站代理时出现,可以通过修改cloudflare的ssl/tls策略为full来解决。

full tls

其他

有其他的问题可以去官方文档[2]或者Github问题收集帖[3]瞧瞧。


兰空图床是一款功能强大的开源图床,还有许多其他功能,就留给诸位自己去探索吧。

Reference


基于LskyPro和阿里云对象存储搭建私有图床
https://www.0co.dev/Pichost-aliyunoss-lskypro/
作者
Konrad Gerrens
发布于
2023年10月31日
许可协议