目前可道云是比较受欢迎的开源网盘,支持远程和移动端管理,功能强大。但是在线文档编辑一直是企业版的功能。在最新的版本中,看到了可以下载onlyoffice管理插件和安装步骤。经过几天折腾发现存在一些问题。一是版本固定到了only Office7.4.1,虽然还是比较新,但大家永远最求最后的版本,目前当前最新的版本已经到了8.0.1。二是对IPv6的支持有不少问题,如果按照教程来,想支持ipv6是万万成功不了的。三是给出的教程是针对http,没有https的,对于现在大家都对隐私比较看重,还是希望无论如何有个加密方式,支持https就算证书不合格,但至少内容加密了,被窃取的概率也小得多。     

一、搭建思路

     1. 实现目标

       就是用最新的onlyoffice 8.0.1版本,自己搭建全栈https支持的可道云(可道云版本1.49.10),同时自己申请ipv6动态域名ddns,无论运营商是否给你IPv4地址,可以在家自己用一台电脑搭建自己的网盘,远程通过自己的域名任意访问,文档自由在线编辑。随时随地使用自己的个人文件,同时不经过其他服务器中转,安全保密性有一定保障。

     2.总体思路

      基于ubtuntu 22.04作为操作系统,全面使用docker管理各个应用。可道云和onlyoffice都作为container存在。搭建基础容器后,微调应用各个设置,让双方互联互通。可道云的搭建比较简单,网上太多教程,这里就假定用户已经安装完毕,并可以进入docker cli管理内部文件。因此重点是onlyoffice搭建和在ipv6和https条件下的二者互通参数设置。

3.基本信息

1.3.1 onlyoffice配置

为了调试方便,需要摸清这些应用的特点,onlyoffice用nginx 1.18(ubuntu),应用目录:/var/www/onlyoffice/documentserver
日志:/var/log/onlyoffice/documentserver
nginx配置:/etc/onlyoffice/documentserver/nginx/ds.conf
应用配置目录:/etc/onlyoffice/documentserver

1.3.2 可道云配置

nginx 1.22.0
应用目录:/var/www/html
nginx配置:/etc/nginx/sites-enabled 
日志:var/log/nginx
 

二、操作步骤

1.创建目录

首先创建目录,假定为/data/onlyOffice,并创建子目录:

mkdir /data/onlyOffice
cd /data/onlyOffice
mkdir certs
mkdir logs

2.申请证书

openssl genrsa -out onlyoffice.key 2048
openssl req -new -key onlyoffice.key -out onlyoffice.csr
openssl x509 -req -days 36500 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt

得到onlyoffice的证书一共三个文件,其中搭建nginx服务器会用到其中两个onlyoffice.key,onlyoffice.crt。

3.安装onlyoffice

下载最新版本

docker pull onlyoffice/documentserver:8.0.1

 创建容器

docker run -i -t -d -p 9555:443  --restart=always --name onlyOffice    \
-v /data/onlyOffice:/var/www/onlyoffice/Data  \
-v /data/onlyOffice/logs:/var/log/onlyoffice -e JWT_ENABLED=false \
onlyoffice/documentserver:8.0.1

打开防火墙

ufw allow 9555

根据创建容器的name,开启onlyoffice的example测试

docker exec onlyOffice supervisorctl start ds:example
docker exec onlyOffice sudo sed 's,autostart=false,autostart=true,' -i /etc/supervisor/conf.d/ds-example.conf

假设本地地址为192.168.1.15,访问此地址(看能否正常访问,注意忽略证书错误):

https://192.168.1.15:9555/example/

4.修改host文件

进入onlyoffice容器命令行(方法很多,protainer等等),假设本地自己申请的动态ipv6域名为abcd.xyz,在/etc/hosts文件中添加:

172.17.0.1 abcd.xyz

其中172.17.0.1为宿主机地址,自己可以用curl命令测试下。

同样,进入可道云命令行,在hosts文件中同样增加以上一行。如果onlyoffice和可道云不在一台服务器,请填写onlyoffice的正确域名。(非常重要,不添加无法正常访问)

这个步骤的目的是因为一般安装docker后,容器缺省不启用ipv6,因此在用ipv6域名在容器间进行访问,会导致报错,因此通过hosts文件修改来避免出现这种情况。

5.修改证书拒绝和内部地址参数

进入onlyoffice容器命令行,进入etc/onlyoffice/documentserver目录修改default.json文件中rejectUnauthorized为false,修改内容:

"request-filtering-agent" : {
"allowPrivateIPAddress": true,
"allowMetaIPAddress": true
},

重启内置服务supervisorctl restart all

6.可道云安装插件

onlyoffice镜像源地址_nginx

点击配置插件,设置服务器。

onlyoffice镜像源地址_onlyoffice镜像源地址_02

最后在可道云创健任意文档打开,编辑。如果能正常保存就成功了!!注意如果点击“检测服务器”可能有选项通不过,不用理会,不影响正常使用。

7. 为onlyoffice增加字体

缺省情况下onlyoffice的中文字体很有限,只有三个字体选择,为正常编辑文档,可以将Linux或者windows,macos的字体导入onlyoffice,先假定你的Linux字体已经满足要求了,那么可以:

(1)拷贝文件到onlyoffice容器中

docker cp -a /usr/share/font onlyOffice:/usr/share

(2)执行字体集成操作

进入onlyOffice命令行,执行:

docker exec -it onlyOffice /bin/sh
documentserver-generate-allfonts.sh

(3)更新历史并刷新显示

文章附件自带了38个常用中文字体,满足日常需要。

三、疑难问题

3.1 日志查看

一般来说,会遇到不能正确访问的情况,检查日志是一个好办法,注意几个日志存放位置:

nginx日志:/var/log/nginx中两个文件access.log和error.log。注意在nginx.conf(/etc/nginx)中根据需要添加:

error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

根据配置不同,有可能不是在nginx.conf设置,有可能在/etc/nginx/sites-enabled 或者includes目录下,需要根据服务器设置自行添加。

onlyoffice日志:/var/log/onlyoffice/documentserver/下面有三个路径

onlyoffice镜像源地址_onlyoffice镜像源地址_03

分别是不同的日志内容,其中docservice比较关键,关键报错信息都在此目录。

3.2 访问测试

为调试错误,可以用curl测试具体报错信息,如:

curl https://abcd.xyz:9555/ --insecure

insecure表示忽略证书错误。

测试和重新加载nginx

nginx -t
nginx -s reload

3.3 防火墙和网络状态

ufw staus
netstat -tnlp
采用以上命令查看防火墙是否打开端口,和网络侦听端口是否一致。

四、参考文献

1.onlyoffice的docker安装使用 去除令牌认证


2.Office服务器配置https访问

https://doc.kodcloud.com/vip/#/others/office_https

3.解决私有地址错误

4.可道云安装onlyoffice

http://doc.kodcloud.com/vip/#/onlyoffice/linux