OnlyOffice配置minio文件存储
一、部署minio
测试环境
拉取minio
镜像
为了快速验证,此处使用docker安装部署minio
服务。先拉取minio
最新版镜像资源。
-bash-4.2# docker pull minio/minio:latest
-bash-4.2# docker images | grep minio
minio/minio latest e31e0721a96b 2 years ago 406MB
配置启动配置
提前创建好目录,在目录中创建config
和data
目录用于容器内挂载外部文件夹。
-bash-4.2# pwd
/opt/tools/minio
-bash-4.2# ll
总用量 4
drwxr-xr-x. 3 root root 19 4月 13 09:35 config
drwxr-xr-x. 5 root root 50 4月 13 11:30 data
-rw-r--r--. 1 root root 418 4月 7 11:32 docker-compose.yaml
创建并配置docker-compose.yaml
文件,用于配置minio
容器启动的相关配置,其中9000端口是控制台(默认管理员:账号:admin,密码:1qaz@WSX3edc
),9090端口是API服务访问。
version: "2"
services:minio:image: minio/minio:latestcontainer_name: minioports:- "9000:9000"- "9090:9090"volumes:- "/opt/tools/minio/data:/data"- "/opt/tools/minio/config:/root/.minio"environment:MINIO_ROOT_USER: "admin"MINIO_ROOT_PASSWORD: "1qaz@WSX3edc" command: server /data --console-address ":9000" -address ":9090" restart: always
启动minio
服务
配置docker-compose.yaml
之后,在docker-compose.yaml
同级目录中执行docker-compose up -d
命令启动容器。
-bash-4.2# docker-compose up -d
Recreating minio ... done
-bash-4.2# docker ps | grep minio
91498cf332b6 minio/minio:latest "/usr/bin/docker-ent…" 13 seconds ago Up 12 seconds 0.0.0.0:9000->9000/tcp, 0.0.0.0:9090->9090/tcp minio
启动minio
服务后,访问minio
控制台,http://192.168.95.131:9000
(192.168.95.131为测试机IP),如下图可正常登录访问,则minio
服务已正常启动。
二、创建用户和桶并绑定操作权限
新部署的环境目前没有用户和桶,需要新创建桶和新创建用户(※创建桶和用户目的是为了用户和桶进行操作绑定,用于不同用户之间的操作隔离。此处不是必须,此处可略过,可直接使用管理员账号创建桶和秘钥进行文件操作)。
创建桶
此处创建一个名为test
的桶(默认就是私有的,无特殊情况无需修改)。
创建桶操作权限
由于minio
默认的操作权限不是指定桶的(权限比较大),此处创建一个权限用于限制用户的操作,使用户只能操作test
这个桶。
配置内容如下,其中版本不要修改。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["s3:GetBucketLocation","s3:GetObject"],"Resource": ["arn:aws:s3:::test"]},{"Effect": "Allow","Action": ["s3:*"],"Resource": ["arn:aws:s3:::test/*"]}]
}
创建用户并绑定权限
创建用户的时候只需要配置上之前创建的test
权限即可。注意当前用户只是控制台的操作用户还不能用于开发测试。
创建用户秘钥
因为创建了新的用户账号,所以秘钥就不通过默认管理员创建了,此处切换新建的用户登录。
秘钥详情如下,至此测试准备内容完成。
{"console": [{"access_key": "YDZXGAREEE0FWVGJLPC8","secret_key": "mVCw1twNhkl80ILKjooL+uIXuM3VancHMMjGtVUw"}]
}
此处简单的验证下minio
的连接访问,为了简便此处使用Node.js
环境进行测试。注意安装相关依赖npm install aws-sdk
(使用aws-sdk v2
版本的原因,是因为配合测试的onlyoffice
版本是7.3.3默认用的就是v2
版本)。
//引用aws-sdk
const aws = require('aws-sdk');
//配置 minio或s3
const config = {region: "us-east-1",endpoint: "http://192.168.95.131:9090",accessKeyId: "YDZXGAREEE0FWVGJLPC8",//access_keysecretAccessKey: "mVCw1twNhkl80ILKjooL+uIXuM3VancHMMjGtVUw",//secret_keys3ForcePathStyle: true
}
//加载配置信息
aws.config.update(config)
//创建客户端
const s3Client = new aws.S3()
//配置服务地址
s3Client.endpoint = new aws.Endpoint(config.endpoint);
//查看test桶根目录的文件,最多不超过10个文件
s3Client.listObjects({Bucket: 'test', MaxKeys: 10, Delimiter: '/',}, (err, data) => {console.log(data)
})
查看执行结果,测试连接成功,test
桶中没有任何文件,可证明minio
测试环境没有问题。
"D:\Program Files\nodejs\node.exe" "D:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" test --scripts-prepend-node-path=auto> test3@1.0.0 test
> node aws/v2_test.js(node:31360) NOTE: The AWS SDK for JavaScript (v2) will enter maintenance mode
on September 8, 2024 and reach end-of-support on September 8, 2025.Please migrate your code to use AWS SDK for JavaScript (v3).
For more information, check blog post at https://a.co/cUPnyil
(Use `node --trace-warnings ...` to show where the warning was created)
{IsTruncated: false,Marker: '',Contents: [],Name: 'test',Prefix: '',Delimiter: '/',MaxKeys: 10,CommonPrefixes: []
}Process finished with exit code 0
三、修改OnlyOffice
配置文件并重启
修改development-linux.json
配置文件,修改其中storage
节点的相关配置(默认是本地存储,只需要替换掉默认的配置即可),此处请参考onlyoffice
官方文档AWS S3
配置说明。
配置详细信息如下(注意minio
服务端口是9090,不要跟控制台9000端口搞混)。当服务重启后onlyoffice
将会把文件保存到minio
文件服务中test
桶的files
文件夹中。
{"storage": {"name": "storage-s3","region": "us-east-1","endpoint": "http://192.168.95.131:9090","bucketName": "test","storageFolderName": "files","urlExpires": 604800,"accessKeyId": "YDZXGAREEE0FWVGJLPC8","secretAccessKey": "mVCw1twNhkl80ILKjooL+uIXuM3VancHMMjGtVUw","useRequestToGetUrl": true,"useSignedUrl": true,"sslEnabled": false,"s3ForcePathStyle": true}
}
接下来重启onlyoffice
服务(此处使用docker
图形化工具Portainer
偷个懒)。
四、验证切换minio
存储是否生效
首先启动官方示例Node.js
工程。访问http://127.0.0.1:3000
(由于本机运行所以此处使用127.0.0.1
),此处截图提前先切换了语言为中文。
接下来新建个文档看看,文件是否保存到了minio
中,为了效果看着好点,这里就选了excel。
注意重点不是这个文档,而是onlyoffice
服务是否将文件存储到了minio
文件服务中,接下来使用minio
控制台查看下test
桶中的文件信息。
备注
因为onlyoffice
本身就支持aws s3
,而minio
本身又兼容aws s3
。所以才会使用minio
来做文件存储,目前onlyoffice
仅支持本地存储和aws s3
存储。