利用NextCloud + OnlyOffice 内网搭建协作文档系统
- 启动镜像
- 系统初始化
- 安装ONLYOFFICE插件
- 配置ONLYOFFICE
- 已遇到问题
- 容器无法启动
- 数据库用户名不对
- 连接onlyoffice错误
- 分享连接无法复制
- Nextcloud 登录页面没有登录表单输入框,其他元素正常显示包括背景
- Nextcloud 文件夹分享失败
为了便于公司内部多人文档的协作需求,现在需要搭建协作文档系统。采用NextCloud + OnlyOffice。其中NextCloud是文档,用户,权限的管理系统。OnlyOffice是文档(如word,excel)在线编辑的工具。系统使用Docker快速安装。其中需要nextcloud,onlyoffice/documentserver两个image。另外还需要数据库,可以使用sqllite,也可以使用mysql,本文不介绍数据库的安装。本博客nextcloud版本30.0.2.2,onlyoffice版本为7.2。
启动镜像
1.关闭 SELINUX,防止文件挂载出现问题
sudosetenforce0# 临时关闭sudovim/etc/selinux/config# 永久关闭# 修改后SELINUX=disabled2.关闭防火墙
systemctl stop firewalld systemctl disable firewalld3.启动容器
sudo docker run -d
–name nextcloud
-p 8080:80
-v /home/zywy/nextcloud/html:/var/www/html
-v /home/zywy/nextcloud/data:/var/www/html/data
-e TZ=Asia/Shanghai
–restart always
nextcloud:latest
使用ip:8080能够访问,则代表成功
sudo docker run -d
–name onlyoffice-server
-p 8081:80
-e JWT_SECRET=your_jwt_secret
–privileged=true
–restart always
onlyoffice/documentserver:latest
使用ip:8081能够访问,则代表成功。onlyoffice/documentserver作为文档在先编辑的工具,其数据可以不用挂载在宿主机。文档最总保存在nextcloud。
系统初始化
使用ip:8080登陆系统。初次登录系统需要设置管理员账号和密码。
然后选择数据库,作为测试可以使用sqllite,但是生产环境建议使用mysql。填写数据库信息后,点击安装即可。
安装ONLYOFFICE插件
1.离线下载onyoffice插件:https://apps.nextcloud.com/apps/onlyoffice/releases?platform=30#30
2.查看当前nextcloud版本
docker inspect imagename|grep-i version当前版本为30,选择9.11
3.解压到目标目录
tar-zxvf /tmp/onlyoffice.tar.gz -C /home/zywy/nextcloud/htm/apps/chown-R www-data:www-data /home/zywy/nextcloud/htm/apps/onlyoffice4.启用onlyoffice插件
点击右上脚的头像。点击”应用“。
进入应用界面,左边菜单栏选择”已禁用的应用“,启用”ONLYOFFICE“。
配置ONLYOFFICE
1.查看onlyoffice连接密钥
如果在容器启动的时候设置了JWT_SECRET那么就是这个密钥。如果没有设置通过以下方式查询。但是注意,每次重启后密钥会发生变化 。建议使用 -e JWT_SECRET=your_jwt_secret启动容器
sudodockerexeconlyoffice容器id /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json'services.CoAuthoring.secret.session.string'2.选择管理设置,进入onlyoffice的设置。填写onlyoffice连接地址和第一步中的密钥。点击“保存”。
已遇到问题
容器无法启动
启动nextcloud容器错误信息:No such file or directory,Permission denied
启动onlyoffice容器错误信息:
cannot statx /var/www/onlyoffice/documentserver/server/Docservice/docservice: No suchfileor directory /app/ds/run-document-server.sh: line204: /var/www/onlyoffice/documentserver/npm/json: No suchfileor directory /app/ds/run-document-server.sh: Line205: /var/ww/onlyoffice/documentserver/npm/json: No suchfileor directory /app/ds/run-document-server.sh: line206: /var/www/onlyoff ice/documentserver/npm/json: No suchfileor directory /app/ds/run-document-server.sh:Line208: /var/www/onlyoffice/documentserver/npm/json: No suchfileor directory /app/ds/run-document-server.sh: line178: /var/www/onlyoffice/documentserver/npm/json: No suchfileor directory /app/ds/run-document-server.sh: line179: /var/www/onlyoffice/documentserver/npm/json: No suchfileor directory /app/ds/run-document-server.sh: line197: /var/www/onlyoffice/documentserver/npm/json: No suchfileor directory /app/ds/run-document-server.sh: line260: -3: substring express ion<0nc: port number invalid: Waitingforconnection to thehoston port nc: port number invalid: Waitingforconnection to thehoston port nc: port number invalid:问题原因:这些问题是由于文件挂载的时候,由于selunix导致的问题。
解决方法: setenforce 0
数据库用户名不对
问题描述和原因:nextcloud初始化系统的时候,系统不按照输入数据库用户名连接数据库。而是“oc_admin1”。导致无法连接数据库。
解决方法:修改/var/www/html/config/config.php 将dbuser 改为指定的用户名。
连接onlyoffice错误
问题描述和原因:无法保存onlyoffice插件的配置。原因是没有正确填入onlyoffice的密钥。
解决方法:获取密钥
sudo docker exec containerId /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json ‘services.CoAuthoring.secret.session.string’
分享连接无法复制
问题描述和原因:在创建分享连接的时候,无法使用复制功能。原因是使用http,非安全连接,浏览器阻止。
临时解决方法: 新建启动快捷键,在目标后面添加参数 --unsafely-treat-insecure-origin-as-secure=http://192.168.1.100:80 --test-type
例如:创建新的快捷方式:“C:\Program Files\Google\Chrome\Application\chrome.exe” --unsafely-treat-insecure-origin-as-secure=http://192.168.1.100:80 --test-type
彻底解决方法: 使用https
Nextcloud 登录页面没有登录表单输入框,其他元素正常显示包括背景
错误信息:
控制台报错信息:uncaught syntaxerror:unexpected taken ‘&&=’
login接口Previewxi显示:对于正确的操作,该应用需要使用JavaScript。请启用JavaScript,并重新加载页面。
windows10 chrome报错的版本为84.0.4147.105。
问题分析:
“uncaught syntaxerror: unexpected token ‘&&=’” 这个错误是关键。&&=是一个逻辑赋值运算符,属于ES2021标准。而 Chrome 84 发布于 2020 年 7-8 月,远早于该标准的普及,因此浏览器无法识别这个语法,JavaScript 引擎直接报错停止执行。由于 Nextcloud 的前端完全依赖 JavaScript 渲染,脚本失败后,页面就只能显示一个残缺的界面和要求启用 JavaScript 的提示。
问题解决:升级Chrome
Nextcloud 文件夹分享失败
问题描述:/api/v1/shares 403。文件夹分享失败。但是该文件夹里的文件分享成功。
详细错误日志:Path contains files shared withed you。
问题原因:尝试分享的文件夹路径中,包含了「他人分享给你的文件 / 子文件夹」 —— 这是 Nextcloud 的核心安全限制:用户仅能分享「自己拥有所有权」的内容,若文件夹内存在任何 “他人共享给你的内容”(哪怕只是一个小文件 / 子文件夹),整个文件夹的分享请求会被直接拒绝,返回 403
问题解决:只分享自己所有的文件。
愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!