为Misskey配置外部存储


去中心化的社交平台固然相当美好,但作为平台的部署者要考虑的也有许多平时运行维护相关的日常惯例。例如在一些资源文件的存储方面,对于普通的性能见长、硬盘狭小的VPS而言,有着不小的挑战;而一般为存储特化、以硬盘容量见长的服务器,则通常并不会配备强大的其他资源核心。因而为Misskey配备一个网路环境优良的外置存储,一方面可以有助于对于处理核心的保护和特化支持,另一方面也能提升用户的使用体验。

Misskey支持AWS S3、GCS等知名静态存储提供商的API接口,但由于这些家的国内连接体验通常都十分拉跨,因而还是选择自建的服务吧。本次我使用的是一台对于三网都提供了直接连接优化的存储型伺服器,相信能为国内的用户提供一个更为优质的使用环境。

我选择了开源软件MinIO作为解决方案,它支持AWS S3的存储API,可以与Misskey方便地建立连接,且其在docker环境下的部署也比较方便。

由于是使用docker部署,因而各种基本操作我想自然也不必多言,按照标准流程即可。

为了保证服务后期的可迁移可维护性,我选择了使用docker-compose进行部署。因而将我使用的docker-compose.yml文件内容陈列于下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# MinIO
version: "3"
services:
minio:
image: minio/minio
environment:
MINIO_ACCESS_KEY: AccsssKey
MINIO_SECRET_KEY: SecretKey
command: server /data
volumes:
- /storage/minio/data:/data
- /storage/minio/config:/root/.minio
ports:
- "127.0.0.1:9000:9000"
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
特别提示
  1. 请注意将环境变量中的AccsssKeySecretKey修改成复杂无规则的长字符串,以便提升运行环境的安全性。
  2. volumes中涉及到的/storage目录是之前一台伺服器配置时期的遗留产物,如果您希望将文件存储在其他地方的话,请自行修改为您需要的路径,以防止之后找不到所需要的文件。

配置完成后,使用 docker-compose up -d 启动服务。

之后是配置反向代理服务器,同样是按照标准流程即可。为了防止出现跨域的问题,建议使用和Misskey主站的主域名保持一致。

完成配置后访问设定的域名,我们能看到MinIO的管理控制台:

输入预先设定的AccsssKey和SecretKey,我们能进入管理界面。

单击右下角的加号,新建一个存储桶:

输入名称后按下回车键,即可确认创建。

再为存储桶指定相关的文件访问权限(不确定这一步是否需要)。

点击左侧存储桶列表右边的小三点,选择Edit Policy

由于我们是公有读取,因而Prefix部分直接使用*通配即可,单击Add即可完成权限配置项的添加。

此时,关于存储桶部分的配置就已经完成了。

之后,进入Misskey的实例管理界面,开启使用对象存储的开关,并按照页面上的提示输入之前设定的配置项:

我没有填写被蓝色斜线划去的部分,如果您有相关的使用需要,您可以根据提示进行配置。

配置完成之后试着保存一下吧,新的文件应该就会上传到存储伺服器了。可以发送一张图片尝试一下哦。