将ubuntu设置为NAS——8. nextcloud集成onlyoffice在线协同办公软件
前言
前面介绍了docker安装nextcloud,也提到了nextcloud具有很强的扩展性,自带插件库,本篇就是介绍其中一个插件,用nextcloud集成onlyoffice在线协作办公功能。本篇介绍的场景主要是无法连接互联网的局域网环境,或是无法使用其他在线协作办公软件的情况。当然如果需要在网盘预览office文档,也可以参考。
说起来在线协同办公软件,我们常见的是石墨文档,WPS云文档和微软的Microsoft team,在互联网环境,大家可以协同完成一份word文档或共同填表等等,尤其是需要不同人完成不同部分内容(比如各种日报、月报和年终总结等等),完成整篇文章的时候,这样的在线协作,拉近了距离,既可以在线直接沟通,又可以迅速调整整天文章结构和内容。但在内部局域网情况下(不能连接上述服务),公司或团体又没有考虑购买收费的商业协同办公软件(比如微软的office online),只能考虑自行搭建。。。小团体在离线局域网间使用类似的服务,可以极大提升工作效率,大大减少重复劳动。此乃离线环境下的多人协同年终总结神器。
首先为了理清整个折腾的思路:
在能联网的主机用Oracle VM VirtualBox安装虚拟机Ubuntu server18.04
在这台虚拟机上安装docker和docker-compose
通过docker-compose安装nextcloud和onlyoffice并设置
从Oracle VM VirtualBox导出整个系统文件
在需要配置协同的办公室的离线环境安装Oracle VM VirtualBox,导入系统文件并运行设置
本篇涉及图片较多,请注意。
1、onlyoffice简介
什么是onlyoffice?免费开源的在线文档编辑软件,当然也有桌面版,多平台(windows系统、Linux系统、安卓和iOS)可安装使用,宣传100%与MS Office格式兼容。本篇我主要介绍免费的在线社区版,就是可以多人在线编辑的版本。原来onlyoffice对中文尤其中文字体支持都不好,今年以来,onlyoffice加大对中文的支持,增加了很多中文字体,好像它的中文网站也是今年才出现的。
2、Oracle VM VirtualBox安装Ubuntu
这里采用Oracle VM VirtualBox(简称VirtualBox),完全免费,程序占用资源相对少,可以后台运行虚拟机,方便后台隐藏服务。Ubuntu server18.04是比较稳定的Ubuntu服务器版,相对桌面版占用资源少,少了桌面程序也更稳定了。相关下载,大家自行官网下载安装。这里简单提几个可能出现的坑,主要是磁盘容量尽量设置足够大(满足云盘需求),后期不好修改。
动态调整就是根据虚拟磁盘实际用到的空间,自动调整在实际磁盘空间的占用,而不是直接占用设置的容量大小。
建议设置大容量,这个就是nextcloud使用会用到的容量,安装系统后再调整比较麻烦,这里最好一步到位。
选择完镜像后就选择启动虚拟机,开始系统安装。
这里建议修改为阿里镜像源,提升安装速度
选择整块硬盘。
这里不要选默认,要选择继续。
自行设置账号密码
请选择安装SSH,方便后期维护
这里不要选择snap安装相关软件,速度慢,版本低,不建议。选择done后,自动安装,默认会检查和安装更新,可以选择安装或取消,安装完成后,选择reboot重启。
重启后提示移除光盘镜像,再回车确认
移除后确认,稍等字符串不再变化后,回车就出现登录命令行,输入账号和密码(密码不显示)就成功进入Ubuntu命令行系统。
3、虚拟机安装docker和docker-compose
这里不做详细介绍了,详见将ubuntu设置为NAS——5. docker与docker-compose的安装,由于之前已安装了SSH,可以通过putty远程到虚拟机里安装。不过先得设置虚拟机网络
请选择设置,选择网络,再选择桥接网卡,确认后。然后回到系统命令行,输入
ifconfig
查询虚拟机网络地址,后续就通过这个IP进行远程SSH,并安装docker。
4、nextcloud集成onlyoffice
为什么考虑用nextcloud集成呢?因为我比较熟悉nextcloud,集成onlyoffice后,可以在nextcloud中直接打开网盘中的office文档,也能共享出去,和其他朋友一起协同编辑使用,而且这样集成完全免费(限制20人以内使用)。
4.1 利用docker-compose同时安装nextcloud和onlyoffice
利用docker-compose.yml文件安装,是非常简单便捷的办法。上上篇文章《将ubuntu设置为NAS——6. 私人网盘nextcloud安装(下)(docker下安装nextcloud)》就有网友在文章提到nextcloud集成office功能需求,我也提到这种情况我们需要fpm版的nextcloud镜像,所以本篇提到的docker-compose.yml文件内容和之前的内容是有区别的。
version: '3'
services:
app:
container_name: app-server
image: nextcloud:fpm
stdin_open: true
tty: true
restart: always
expose:
- '80'
- '9000'
environment:
- UPLOAD_MAX_SIZE=5G
- APC_SHM_SIZE=128M
- OPCACHE_MEM_SIZE=128
- CRON_PERIOD=15m
- TZ=Aisa/Shanghai
- NEXTCLOUD_ADMIN_USER=自行设置管理员账号
- NEXTCLOUD_ADMIN_PASSWORD=自行设置密码
- NEXTCLOUD_TRUSTED_DOMAINS="..."
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=自行设置密码
- MYSQL_HOST=nextcloud-db
networks:
- onlyoffice
volumes:
- /docker/nextcloud:/var/www/html
nextcloud-db:
image: mariadb
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
networks:
- onlyoffice
volumes:
- /docker/nextcloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=自行设置数据库root密码
- MYSQL_PASSWORD=自行设置数据库密码
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
restart: always
onlyoffice-document-server:
container_name: onlyoffice-document-server
image: onlyoffice/documentserver:latest
stdin_open: true
tty: true
restart: always
networks:
- onlyoffice
expose:
- '80'
- '443'
volumes:
- /docker/onlyoffice/data:/var/www/onlyoffice/Data
- /docker/onlyoffice/log:/var/log/onlyoffice
nginx:
container_name: nginx-server
image: nginx
stdin_open: true
tty: true
restart: always
ports:
- 80:80
- 443:443
networks:
- onlyoffice
volumes:
- /docker/nginx.conf:/etc/nginx/nginx.conf
- /docker/nextcloud:/var/www/html
networks:
onlyoffice:
driver: 'bridge'
我理解,onlyoffice无法与nextcloud在同一IP地址上相互集成使用,就是用nginx代理,让2种服务运行在同一主机不同网段下运行,曲线解决了这个问题。当然nginx的使用还需要nginx.conf设置文件。这里参照onlyoffice在github的ONLYOFFICE/docker-onlyoffice-nextcloud。我使用的免费社区版。
提醒一下:设置中的端口80,443,请注意主机没有相关程序运行在上面,不然就需要修改。需要修改nginx设置中的80:80改为8080:80,443:443改为442:443,同时nginx.conf文件中的listen 80改为listen 8080。虚拟机完全纯净安装,一般也不会冲突,就按原文件来吧。docker-compose.yml请注意里面中文进行修改,改为自己需要的账号密码。
将上述代码内容保存为docker-compose.yml,再从下载github的ONLYOFFICE/docker-onlyoffice-nextcloud中的nginx.conf文件到Ubuntu虚拟机(可以用winscp),在Ubuntu根目录建立docker文件,将nginx.conf放在这个目录,
sudo mkdir /docker //建立文件夹
sudo cp /home/yang/nginx.conf /docker //如果直接传权限问题无法传,请传到有权限的目录再复制
然后按之前介绍的docker-compose up -d命令运行在我的ubuntu小主机上,就开始安装了。onlyoffice镜像比较大,下载速度也不快。
之前也介绍了,这个应用最终要转移到无互联网环境使用,所以得先在有网络的虚拟机上下载需要的docker镜像,后面再导出导入虚拟电脑即可。
可能出现的错误
第一张图:docker-compose.yml文件中nginx端口可能出现被占用的问题,原来我设置80和443,应该是被我主机上运行其他服务占用了。所以我修改了里面的配置,80改成8080,443改成442,还需要修改nginx.conf文件中80的部分改为8080。
第二张图是,主要是nginx.conf还没配置好,没有下载配置文件到我们创建的docker文件夹。
上述2个问题在纯净安装虚拟机里应该不会出现,但你若在自己的服务器小主机上。尤其运行有其他服务的情况下,很有可能出现。
4.2 打开nextcloud设置
输入虚拟机所在网址(ifconfig查询),之前是192.168.2.131,在运行docker-compose up -d 之后3分钟,在主机浏览器输入虚拟机IP,可以看到已经进入nextcloud登录界面了。登陆后(在docker-compose.yml中设置的账号密码),开始可以选择插件了。正常在应用里可以看到各种各样的插件,但由于众所周知的原因,有时差件加载不出来,可以采用别的方式。
我们可以登录nextcloud的app商场,搜索onlyoffice下载,选择下载17版onlyoffice.tar.gz。
可以先winscp传到/home/yang (我自己的用户)目录,再解压后,移动到/docker/nextcloud/apps目录,并修改文件权限为www-data。
tar -zxvf onlyoffice.tar.gz
sudo cp /home/yang/onlyoffice /docker/nextcloud/apps -Rf
sudo chown -Rwww-data /docker/nextcloud/apps/onlyoffice
这个时候再刷新nextcloud的应用界面,在您的应用,找到onlyoffice插件,选择启用,并输入管理员密码确认。
接着就是设置插件,关联正在运行在docker的onlyoffice服务。在修改config.php设置
sudo nano /docker/nextcloud/config/config.php
将'nginx-server'设置为信任域名。注意逗号,尤其括号后的逗号。
然后在nextcloud的onlyoffice设置界面,如图设置onlyoffice参数,保存后,如图提示表明成功连接,并能设置支持office文件类型。
也可以参照docker-onlyoffice-nextcloud里面的set_configuration.sh如下,保存为名为set_configuration.sh,winscp传到虚拟机里。
#!/bin/bash
set -x
docker exec -uwww-data app-server php occ --no-warnings config:system:get trusted_domains >> trusted_domain.tmp
if ! grep -q "nginx-server" trusted_domain.tmp; then
TRUSTED_INDEX=$(cat trusted_domain.tmp | wc -l);
docker exec -uwww-data app-server php occ --no-warnings config:system:set trusted_domains $TRUSTED_INDEX --value="nginx-server"
fi
rm trusted_domain.tmp
docker exec -uwww-data app-server php occ --no-warnings app:install onlyoffice
docker exec -uwww-data app-server php occ --no-warnings config:system:set onlyoffice DocumentServerUrl --value="/ds-vpath/"
docker exec -uwww-data app-server php occ --no-warnings config:system:set onlyoffice DocumentServerInternalUrl --value="http://onlyoffice-document-server/"
docker exec -uwww-data app-server php occ --no-warnings config:system:set onlyoffice StorageUrl --value="http://nginx-server/"
运行如下命令,这样不需要复杂的设置,但可能登录时提示不信任的域名,还得像上面的修改nextcloud的config.php信任域名的才能登录。再回到设置onlyoffice界面,保存即可成功。
bash set_configuration.sh
5、尝试在nextcloud打开word文件
首先找个word文件,上传到nextcloud,然后再打开,建议先尝试docx文件。
成功在线打开,并可以在线编辑。
6、转移虚拟系统到局域网环境
先从现有的虚拟机里导出系统。先关闭虚拟系统。
然后导出
然后再局域网里安装虚拟机Virtual box,然后U盘拷贝导出的文件到局域网,虚拟机选择导入之前的虚拟电脑文件。可能由于网络不同,需要重新设置网络。
Virtual box虚拟机启动系统,选择无界面启动,就能实现后台运行服务的效果,非常清爽。
总结
本文主要针对在离线局域网环境下,如何建立协同处理office文档的服务,属于小众需求,主要介绍如何加载nextcloud的app商店插件,当然不同插件,可能涉及的使用和设置不同,但安装加载却大同小异。
前面啰嗦了点,介绍了Ubuntu server的虚拟机安装方法,熟悉的值友请略过。
啥都被注册了咋办呀
校验提示文案
板油哥哥
校验提示文案
萌梦哒哒
校验提示文案
双手剁
校验提示文案
值友5752605068
校验提示文案
值友2939873782
校验提示文案
djfml
校验提示文案
值友8032836396
校验提示文案
值友5752605068
校验提示文案
牛魔王哥哥
校验提示文案
Hackjown
校验提示文案
值友2939873782
校验提示文案
值友2939873782
校验提示文案
值友2939873782
校验提示文案
Hackjown
校验提示文案
牛魔王哥哥
校验提示文案
值友5752605068
校验提示文案
值友5752605068
校验提示文案
双手剁
校验提示文案
萌梦哒哒
校验提示文案
板油哥哥
校验提示文案
值友8032836396
校验提示文案
djfml
校验提示文案
啥都被注册了咋办呀
校验提示文案