目前可道云是比较受欢迎的开源网盘,支持远程和移动端管理,功能强大。但是在线文档编辑一直是企业版的功能。在最新的版本中,看到了可以下载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.可道云安装插件
点击配置插件,设置服务器。
最后在可道云创健任意文档打开,编辑。如果能正常保存就成功了!!注意如果点击“检测服务器”可能有选项通不过,不用理会,不影响正常使用。
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/下面有三个路径
分别是不同的日志内容,其中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