目前 GeekAI 实现了下面四种文件存储驱动
- Local:本地存储,文件上传之后直接存储到本地服务器,这是默认的存储方式,无需任何依赖和配置。本地存储服务会自动对大图进行压缩,并生成缩略图,会比较耗费 CPU 资源。
- Minio:Minio OSS 存储,需要在本地搭建一个 MinIO 存储服务,并将授权信息配置到 config.toml 的 Minio 配置段。
- QiNiu:七牛云 OSS 存储,需要配置七牛云的 OSS 的授权信息。
- AliYun:阿里云 OSS 存储,需要配置阿里云的 OSS 的授权信息。 文件存储服务主要用来存储 MJ,SD 等 AI 创作的图片,以及用户的头像和上传的文件等。如果有条件的话,建议使用阿里云,七牛云这种第三方商用的 OSS 服务,这样可以最大限度的减少服务器的开销。
你可以通过 GeekAI 的管理后台轻松配置 OSS 存储,打开“系统设置”,“存储设置”。你选择哪个存储驱动,那么你需要把对应的存储驱动配置好,例如你选择阿里云 OSS 存储,那么你需要把阿里云的 OSS 授权信息配置好。存储引擎切换是实时生效的,修改之后无需重启服务,直接生效。
注意
这里需要注意的是,除了本地存储之外,其他几种存储方式都需要设定一个 Domain
参数,Domain 参数需要带上协议,比如 http:// 或者 https://,否则会出现图片上传成功,但是浏览器却无法加载的情况。
例如:https://oss.abc.com
,域名后面不要加 '/'。如果你的站点使用的是 https 协议,那么这里也需要使用 https 协议。
七牛云 OSS 配置
1. 获取密钥
首先,你要去七牛云密钥管理页面,新建密钥,获取到 AccessKey
和 AccessSecret
信息。
2. 创建存储空间
进入存储空间管理页面,点击 新建
按钮,然后填写相关信息,创建一个 Bucket
,填写好 Bucket 名称,选择地区,访问权限选择 公开
。
3. 绑定域名
刚刚创建好的空间,选择 域名管理
,这里的 Domain
就是填写你为 Bucket
绑定的自定义域名,或者自定义 CDN 加速域名。
或者你随便选中一张图片,然后复制外链,复制的地址所指向的域名就是你的资源对外访问绑定的域名。
最后,你将获取到的 AccessKey 和 AccessSecret,以及 Bucket 名称等信息,填入到相应的表单字段:
阿里云 OSS 配置
1. 获取密钥
登录阿里云,然后进入AccessKey 管理页面,新建一个 AccessKey。
2. 创建存储空间
进入Bucket 列表,点击 创建Bucket
按钮,然后填写相关信息,创建一个 Bucket
。
然后点击刚刚创建的 Bucket,进入 Bucket 配置页面,配置一下 Bucket 权限,先关闭"阻止公共访问"功能。
然后在"读写权限"菜单,选择 公共读
权限。
3. 绑定域名
点击 "Bucket 配置" 菜单,然后点击"绑定域名",填入要绑定的域名,按照提示完成域名验证即可成功绑定。
最后,你将获取到的 AccessKey 和 AccessSecret,以及 Bucket 名称等信息,填入到相应的表单字段:
搭建 Minio 存储服务
无论是七牛云,还是阿里云 OSS,你都需要有一个已经备案的域名才能绑定使用。 如果你没有域名的话,可以考虑自己搭建一个 Minio 存储服务。
首先,新建 docker-compose.yaml
文件,复制下面内容到文件中:
services:
minio:
image: registry.cn-shenzhen.aliyuncs.com/geekmaster/minio:latest
container_name: minio
restart: always
volumes:
- ./data:/data
ports:
- '9010:9000'
- '9011:9001'
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio@pass
command: server /data --console-address ":9001" --address ":9000"
启动容器
docker-compose up -d
容器启动之后,你需要登录 Minio 的控制台,创建一个 Bucket,生成 Access Keys。并将对应的参数配置到 config.toml
文件中。
在浏览器中访问 http://localhost:9001
,用你设置的默认用户名和密码登录(minio/123456)Minio 的管理后台。
创建 Access Key
创建 Bucket
通常,你需要为 Minio 的网关服务绑定一个域名,用于对外提供 API 的调用和图片加载服务。最简单的方法就是直接把域名(如 oss.abc.com)解析到你 Minio 的服务器上,然后通过 http://oss.abc.com:9000 来访问 Minio API。
当然,你也可以通过 Nginx 做一次反代,这样你就可以直接用 https://oss.abc.com 来访问了。
最后,你需要对应的信息填入到相应的表单字段:
错误处理
一、图片上传成功,但是不显示
首先,如果你使用的是第三方的 OSS 存储的话,确保你将对应的存储空间设置为开放状态。以七牛云为例,在空间设置,访问控制模块设置。
其次,确保在 GeekAI 的 oss 配置的 domain 是正确的,需要加上http:// 或者 https:// 协议。
如果以上二者都没有问题,那么可以通过(按 F12)打开浏览器的控制台,如果图片加载失败的话,控制台会有错误输出,根据对应的报错信息进行排查。比如下面这个错误就是因为 OSS 禁止了跨域访问导致图片无法显示。
OSS 的设置问题如果不会的话,建议直接提交工单,不要在群里问,更不要问群主,这种基础问题一般群主都不回复的。