OnlyOffice配置minio文件存储

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

配置启动配置

  提前创建好目录,在目录中创建configdata目录用于容器内挂载外部文件夹。

-bash-4.2# pwd
/opt/tools/minio
-bash-4.2# ll
总用量 4
drwxr-xr-x. 3 root root  19 413 09:35 config
drwxr-xr-x. 5 root root  50 413 11:30 data
-rw-r--r--. 1 root root 418 47 11:32 docker-compose.yaml

  创建并配置docker-compose.yaml文件,用于配置minio容器启动的相关配置,其中9000端口是控制台(默认管理员:账号:admin,密码:1qaz@WSX3edc),9090端口是API服务访问。

version: "2"
services:
  minio:
    image: minio/minio:latest
    container_name: minio
    ports:
      - "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:9000192.168.95.131为测试机IP),如下图可正常登录访问,则minio服务已正常启动。
minio控制台登录页
minio管理员默认仪表盘

二、创建用户和桶并绑定操作权限

  新部署的环境目前没有用户和桶,需要新创建桶和新创建用户(※创建桶和用户目的是为了用户和桶进行操作绑定,用于不同用户之间的操作隔离。此处不是必须,此处可略过,可直接使用管理员账号创建桶和秘钥进行文件操作)。

创建桶

  此处创建一个名为test的桶(默认就是私有的,无特殊情况无需修改)。
创建桶1
创建桶2
创建桶3

创建桶操作权限

  由于minio默认的操作权限不是指定桶的(权限比较大),此处创建一个权限用于限制用户的操作,使用户只能操作test这个桶。
创建权限1
创建权限2
创建权限3
  配置内容如下,其中版本不要修改。

{
    "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权限即可。注意当前用户只是控制台的操作用户还不能用于开发测试。
创建用户1
创建用户2
创建用户3

创建用户秘钥

  因为创建了新的用户账号,所以秘钥就不通过默认管理员创建了,此处切换新建的用户登录。
新用户登录1
新用户登录2
创建秘钥1
创建秘钥2
创建秘钥3
创建秘钥4
  秘钥详情如下,至此测试准备内容完成。

{
	"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_key
    secretAccessKey: "mVCw1twNhkl80ILKjooL+uIXuM3VancHMMjGtVUw",//secret_key
    s3ForcePathStyle: 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偷个懒)。
重启onlyoffice

四、验证切换minio存储是否生效

  首先启动官方示例Node.js工程。访问http://127.0.0.1:3000(由于本机运行所以此处使用127.0.0.1),此处截图提前先切换了语言为中文。
官方示例1
  接下来新建个文档看看,文件是否保存到了minio中,为了效果看着好点,这里就选了excel。
官方示例2
官方示例3
  注意重点不是这个文档,而是onlyoffice服务是否将文件存储到了minio文件服务中,接下来使用minio控制台查看下test桶中的文件信息。
验证1
验证2

备注

  因为onlyoffice本身就支持aws s3,而minio本身又兼容aws s3。所以才会使用minio来做文件存储,目前onlyoffice仅支持本地存储和aws s3存储。

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值