docker搭建nextcloud与onlyoffice(最详细)

刚入门的后端小白 2024-07-17 14:37:03 阅读 56

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中有一万种以上的简易密码组合,如果过于简单则无法创建新用户,报错信息只出现一瞬间,极难发现



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。