本文来自#年终总结神器#征稿活动。如果你有特别的年终总结技巧、私藏了很多资源模板神器、知道几个绝活一样的函数用法的话,来投稿让值友们都来学一下你完美年终总结的内味儿吧~>活动详情戳这里<
前言
前面介绍了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
什么是onlyoffice?免费开源的在线文档编辑软件,当然也有桌面版,多平台(windows系统、Linux系统、安卓和iOS)可安装使用,宣传100%与MS Office格式兼容。本篇我主要介绍免费的在线社区版,就是可以多人在线编辑的版本。原来onlyoffice对中文尤其中文字体支持都不好,今年以来,onlyoffice加大对中文的支持,增加了很多中文字体,好像它的中文网站也是今年才出现的。
2、Oracle VM VirtualBox安装Ubuntu
这里采用Oracle VM VirtualBox(简称VirtualBox),完全免费,程序占用资源相对少,可以后台运行虚拟机,方便后台隐藏服务。Ubuntu server18.04是比较稳定的Ubuntu服务器版,相对桌面版占用资源少,少了桌面程序也更稳定了。相关下载,大家自行官网下载安装。这里简单提几个可能出现的坑,主要是磁盘容量尽量设置足够大(满足云盘需求),后期不好修改。
虚拟机安装ubuntu server
磁盘设置动态分配
动态调整就是根据虚拟磁盘实际用到的空间,自动调整在实际磁盘空间的占用,而不是直接占用设置的容量大小。
设置磁盘大小
建议设置大容量,这个就是nextcloud使用会用到的容量,安装系统后再调整比较麻烦,这里最好一步到位。
加载镜像
选择完镜像后就选择启动虚拟机,开始系统安装。
建议修改镜像地址
这里建议修改为阿里镜像源,提升安装速度
选择整块虚拟硬盘(不分区)
选择整块硬盘。
选择继续
这里不要选默认,要选择继续。
设置账号密码
自行设置账号密码
选择安装SSH
请选择安装SSH,方便后期维护
都不选择
这里不要选择snap安装相关软件,速度慢,版本低,不建议。选择done后,自动安装,默认会检查和安装更新,可以选择安装或取消,安装完成后,选择reboot重启。
选择重启
移除镜像再回车确认
重启后提示移除光盘镜像,再回车确认
移除镜像
移除后确认,稍等字符串不再变化后,回车就出现登录命令行,输入账号和密码(密码不显示)就成功进入Ubuntu命令行系统。
登录ubuntu server
3、虚拟机安装docker和docker-compose
这里不做详细介绍了,详见将ubuntu设置为NAS——5. docker与docker-compose的安装,由于之前已安装了SSH,可以通过putty远程到虚拟机里安装。不过先得设置虚拟机网络
选择桥接网络,方便SSH
请选择设置,选择网络,再选择桥接网卡,确认后。然后回到系统命令行,输入
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-compose up -d命令运行
之前也介绍了,这个应用最终要转移到无互联网环境使用,所以得先在有网络的虚拟机上下载需要的docker镜像,后面再导出导入虚拟电脑即可。
可能出现的错误
端口被占用
nginx.conf没配置好
第一张图: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中设置的账号密码),开始可以选择插件了。正常在应用里可以看到各种各样的插件,但由于众所周知的原因,有时差件加载不出来,可以采用别的方式。
app商场加载不出来
我们可以登录nextcloud的app商场,搜索onlyoffice下载,选择下载17版onlyoffice.tar.gz。
在线app商场下载onlyoffice插件
可以先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的config.php
然后在nextcloud的onlyoffice设置界面,如图设置onlyoffice参数,保存后,如图提示表明成功连接,并能设置支持office文件类型。
设置onlyoffice插件
保存后提示成功
成功后出现更多选项
也可以参照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文件。
尝试在线编辑word文件
成功在线打开,并可以在线编辑。
6、转移虚拟系统到局域网环境
先从现有的虚拟机里导出系统。先关闭虚拟系统。
正常关机
然后导出
导出虚拟机
选中需要导出的电脑名称
可以按默认
最终导出
然后再局域网里安装虚拟机Virtual box,然后U盘拷贝导出的文件到局域网,虚拟机选择导入之前的虚拟电脑文件。可能由于网络不同,需要重新设置网络。
Virtual box虚拟机启动系统,选择无界面启动,就能实现后台运行服务的效果,非常清爽。
总结
本文主要针对在离线局域网环境下,如何建立协同处理office文档的服务,属于小众需求,主要介绍如何加载nextcloud的app商店插件,当然不同插件,可能涉及的使用和设置不同,但安装加载却大同小异。
前面啰嗦了点,介绍了Ubuntu server的虚拟机安装方法,熟悉的值友请略过。
暂无评论,打开APP参与讨论