前言 文章首发于poiblog.com

在单位工作的时候网络环境都是内网,有一天我们部门问我能不能实现在内网里面使用协同办公,因为有他们有多人填写表格的需求,在填写的时候需要实时编辑修改。如果每个人都要编辑完再发送给他人编辑就非常影响工作效率。并且还需要是免费或者开源的产品在小范围使用。于是我便了解到了这款开源办公的Dzzoffice,它能够满足简单的协同办公需求,能够进行人员的管理,权限控制,符合内网使用需求。但如果是互联网使用建议用大公司的产品,更加便利。

搭建方法

操作系统

本次搭建基于docker容器,使用系统ubuntu22.02

其实操作系统无所谓,使用Docker之后和操作系统的影响不是很大,容器化部署之后方便迁移和重新部署

因为内网环境无法拉取互联网内容,建议安装测试完成后将容器打包,迁移到内网设备中。或者将调试好的系统直接搬迁到内网环境中,例如虚拟机部署。

数据库

在docker官方镜像源上下载mysql数据库镜像,下载使用时Mysql数据库不一定非要使用最新版本的,要和DzzOffice适配,根据DzzOffice镜像的需求安装以下版本

sudo docker pull mysql:5.7.27
sudo docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root_password mysql:5.7.27

如需做数据持久化存储,可加参数-v $PWD:/var/lib/mysql挂载数据卷到宿主机上,避免容器删除数据丢失。

上面的密码和端口自己指定即可,和后面DzzOffice安装的时候保持一致即可

部署DzzOffice容器

sudo docker pull imdevops/dzzoffice    # 拉取镜像
sudo docker run -d --name dzzoffice -p 80:80 imdevops/dzzoffice:latest    # 创建容器

如需做数据持久化存储,可加参数-v $PWD:/var/www/html/data挂载数据卷到宿主机上,避免容器删除数据丢失。

注意:挂载数据卷后,需要使用命令docker exec -it dzzoffice bash 进入容器内,执行命令 chown -R www-data:www-data /var/www/html/data 给data目录读写权限

部署完毕后使用机器IP进入web安装界面

动图封面

安装过程
按照提示填写完所需信息,点击下一步完成安装
配置管理员信息,密码
登录系统

应用安装(应用市场)

由于是内网使用,无法在线下载安装包,所以需要使用能够访问互联网的设备将安装包下载后手动安装应用。

安装包下载地址(DzzOffice)

以office功能为例,下载完后为zip文件,将软件包解压之后拷贝至容器“/var/www/html/dzz”文件夹,再导入软件包中的xml文件即可。

动图封面

下载套件
动图封面

配置套件

协同办公OnlyOffice部署

Docker化的Onlyoffice需要配合DzzOffice对应插件使用(注意使用时不安装应用:Collabora Office、微软office预览、officeOnline、zoho)就是说不要安装其他Office应用会导致Onlyoffice无法正常使用

sudo docker pull onlyoffice/documentserver
sudo docker run -i -t -d -p 9000:80 onlyoffice/documentserver  # 创建容器,注意不要使用80端口和之前的dzzoffice会冲突

安装、配置完后点击启用即可。

必须安装对应office套件才可以搭配OnlyOffice一起使用!

OnlyOffice版本须知

从7.2版本开始,JWT默认启用,如果不想密钥,请使用更低版本。

ONLYOFFICE 编辑器使用 Json Web Token (JWT),保护文档免遭未经授权的访问。在文档编辑器被初始化、以及在内部 ONLYOFFICE 文档服务之间交换命令时,这个令牌会被添加到配置中。会通过密钥对JWT进行签名,并根据向 ONLYOFFICE 文档发出的请求来验证该令牌。
自 ONLYOFFICE 文档 v.7.2 起,默认启用 JWT,并自动生成密钥。您可以随时按需更改相关参数。
为保护您的文档,您需要启用令牌验证并在 ONLYOFFICE 文档配置文件中指定您自己的密钥,然后在连接器设置中指定相同的密钥。

onlyoffice从7.2版本开始,默认情况下启用了JWT,就是加了个密钥,客户端和服务器同一个密钥才能使用,我们通常用docker安装,导致直接安装最新版了,而dzzoffice里的onlyoffice插件用的是还是旧版本,一个有密钥,一个没有,无法互通 所以就有下面那个提示了

解决方法

使用更新过的套件:(下载地址),将文件上传至系统(同离线安装),将原来的套件内容删除并覆盖。进入套件配置,浏览器访问ip:9000(onlyoffice套件端口号)

出现该内容后,复制sudo整段语句放到ssh内执行,得到密钥,将密钥填入套件的密钥栏内即可,其他参数自行配置

动图封面

效果展示

动图封面

反向代理

参考教程:安装及使用

⚠️Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)

互联网使用请确保完成了域名解析