1.前言
由于需要搭建一个带有权限系统并且能够实时编辑的文件上传系统,经过查询找到了nextcloud+onlyoffice的组合,nextcloud主要是实现带有权限的文件上传,onlyoffice是使nextcloud能够实时编辑文档,包括world,excel等常见文档格式。本文中我使用的是nextcloud23.0.0版本,onlyoffice7.4.0版本具体的版本可以去官网查看对应,如果不对应的话可能会连接不上。
我是在http://apps/nextcloud.com中搜索onlyoffice就能看到具体的版本对应
2.docker拉取mysql、nextcloud、onlyoffice
nextcloud使用时可以选择是否需要数据库,不使用数据库的话能够导入的文件就少,所以我使用的是mysql。数据库可以使用已经搭建好的mysql或者psql。
docker pull mysql:latest
docker pull nextcloud:23.0.0
docker pull onlyoffice/documentserver:7.4.0
下载需要时间会有一些长,耐性等待即可
3.安装,配置mysql
docker run -p 3306:3306 --name mysql --restart="always" -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql***********04d8c735c3b6133fb3af83d321bc72*************
docker ps |grep mysql
757******bbb4 mysql "docker-entrypoint.s…" 32 seconds ago Up 31 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp fno_mysql
docker exec -it 757******bbb4 /bin/bash
root@75767208bbb4:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION; #授权root登录
Query OK, 0 rows affected (0.01 sec)
#修改root账号的密码验证插件类型为mysql_native_password这是mysql8之后的问题:mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.02 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
#创建一个存储nextcloud 数据的数据库
mysql>create database nextcloud;
4.安装nextcloud
#请自行修改端口号与映射地址
docker run -d \
-v /root/nextcloud/html:/var/www/html \
-v /root/nextcloud/apps:/var/www/html/custom_apps \
-v /root/nextcloud/config:/var/www/html/config \
-v /root/nextcloud/nextcloud/data:/var/www/html/data \
-v /root/nextcloud/themes:/var/www/html/themes \
-p 8080:80 --name nextcloud --restart="always" nextcloud:23.0.0
安装后一定要检查防火墙是否已经关闭,如防火墙处于开启状态,Nextcloud 则无法登录 MySQL 数据库,关闭防火墙后再进行登录。
查看防火墙状态
systemctl status firewalld
暂时关闭防火墙
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
访问 http://安装主机ip:8080/
创建管理员账号密码,密码不可以太简单
配置mysql信息,数据库为上面创建的数据库名称
这一步需要很长时间,在这时间之内我们可以去配置onlyoffice
5.安装onlyoffice
docker run -i -t -d -p 6060:80 --restart=always \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql --name onlyoffice --restart="always" onlyoffice/documentserver:7.4.0
启动之后可以去登录 ip:6060访问,查看是否启动成功
6.配置nextcloud连接onlyoffice
这个问题真是困扰我很久时间,不知道如何连接,最后突发奇想,需要在nextcloud中的apps下添加一个onlyoffice的连接器,需要去http://apps/nextcloud.com 中搜索onlyoffice中下载
注:此操作需要魔法上网,不然很慢
搜索onlyoffice
找到23版本的nextcloud
点击23
找到7.4.0之后下载
下载之后需要放到虚拟机中,解压然后放到nextcloud中的映射在本地的文件/root/nextcloud/apps之中,重新启动nextcloud之后登录就可以在 应用中看到 onlyoffice,将onlyoffice开启
然后找到设置找到onlyoffice进行配置
在onlyoffice7.2版本之后,需要使用秘钥才能连接上
在命令行界面执行命令
#此命令可以访问http://你的ip:6060时会出现
sudo docker exec onlyoffice /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'
onlyoffice doc地址填入http://ip:6060
将得到的秘钥输入进去
点击保存,OK了 可以使用了
7.删除
如果在安装过程中遇到了版本问题,想要删除镜像,请不要忘记映射在本地的文件,其中有配置文件,如果不进行删除的话,在重新创建管理员账号时会出现问题
8.补充
此方法只支持在局域网中的设备使用
服务器每次重启,onlyoffice的秘钥就会进行改变,请不要忘记配置
nextcloud创建新用户时密码不能过于简单,nextcloud中有一万种以上的简易密码组合,如果过于简单则无法创建新用户,报错信息只出现一瞬间,极难发现