给 Seafile 部署 onlyoffice

写在最前

Seafile 社区版从 6.1.0 开始支持 Onlyoffice 和LibreOffice 两款 在线编辑服务软件,请更新至最新版 Seafile 再进行以下部署。

安装 Docker

参考 《Docker 从入门到实践》

我是在 Centos 7下搭建 Seafile,这里使用阿里云的 Centos 7 Docker 安装脚本。

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

给 Docker 添加加速器

因为 Docker 的镜像服务器是在国外,所以我们给 Docker 添加国内镜像加速器,这里我使用阿里云的镜像加速器,如何申请阿里云的镜像加速器请自行百度。

编辑 /usr/lib/systemd/system/docker.service 找到 ExecStart=/usr/bin/dockerd 改成如下配置

 ExecStart=/usr/bin/dockerd --registry-mirror=https://xxxxxxxx.mirror.aliyuncs.com

注:–registry-mirror= 后的网址请修改成阿里云申请的加速器地址

修改后重载 systemd 配置、启动 Docker、设置 Docker 为开机自启动。

systemctl daemon-reload
systemctl start docker
systemctl enable docker

部署 OnlyOffice-documentserver

  • 构建 OnlyOffice-documentserver 镜像

这里,你有两个选择

  1. 部署官方的 onlyoffice Docker 镜像,但因为官方的 Docker 镜像里没有中文字体,故此显示中文字体上会出现各种异常。
  2. 我基于官方的 Docker 镜像制作了一个 Dockerfile 项目地址,只要利用这个 Dockerfile 构建镜像即可。
git clone https://github.com/neroxps/Docker-Only-Office-Chinese-font.git
cd Docker-Only-Office-Chinese-font
docker build -t onlyoffice/chinese .

winfont 目录下是 windows 下的中文字体,如果你有其他字体需要,也可以将字体上传到这个目录里面,再构建镜像。

构建完毕后查看下我们现在的镜像

[root@seafile-server Docker-Only-Office-Chinese-font]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED              SIZE
onlyoffice/chinese          latest              5065553b1240        About a minute ago   1.68GB
onlyoffice/documentserver   latest              f5ff5f9ec0c4        2 weeks ago          1.41GB

onlyoffice 的 documentserver 镜像是提供在线编辑服务的,镜像内已包含了 nginx 服务器,支持 80 端口和 443 端口,如果有合法证书,我们可以使用 https 连接。

onlyoffice-documentserver Docker 使用方法参考 Docker-DocumentServer

  • 将证书复制到 onlyoffice 证书目录路径
#假设当前目录在证书目录下
mkdir -p /app/onlyoffice/DocumentServer/data/certs
cp fullchain1.pem /app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt
cp privkey1.pem /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
openssl dhparam -out /app/onlyoffice/DocumentServer/data/certs/dhparam.pem 2048
  • 生成 onlyoffice 日志目录
mkdir -p /app/onlyoffice/DocumentServer/logs

运行 OnlyOffice-documentserver

完成部署后我们就可以运行 OnlyOffice-documentserver 了。

由于我的 Seafile 是用 nginx 部署了 https,443端口已被占用了,大家如果公网 ip 多可以忽略,我是部署在内网,公网是 ADSL,故此只有一个公网 ip,所以 OnlyOffice-documentserver 不能使用 443 端口了。

  • 使用 https
docker run -itd -p 7443:443 -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
--restart=always \
--name office onlyoffice/chinese
  • 使用 http
docker run -itd -p 780:80 -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
--restart=always \
--name office onlyoffice/chinese

这时候我们可以运行 docker logs office 来观察运行情况。

[root@seafile-server certs]# docker logs office
guest
 * Starting PostgreSQL 9.3 database server                               [ OK ] 
 * Starting message broker rabbitmq-server                               [ OK ] 
Starting redis-server: redis-server.
Starting supervisor: supervisord.
Generating AllFonts.js, please wait...Done
onlyoffice-documentserver:docservice: stopped
onlyoffice-documentserver:docservice: started
onlyoffice-documentserver:converter: stopped
onlyoffice-documentserver:converter: started

通过 web 访问 https://demo.domain.com:7443 可以看到 『Document Server is running』表明服务已经正常运行了。

配置 Seafile 6.1.0,让其使用 onlyoffice

参考 Seafile Manual/Only Office

  • 编辑 seahub_settings.py 加入下方配置
# Enable Only Office
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = True
ONLYOFFICE_APIJS_URL = 'https://demo.domain.com:7443/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')

注1:其中 VERIFY_ONLYOFFICE_CERTIFICATE 选项如果 onlyoffice 使用了 https 的话可以选择更改为 True 提高安全性,如果是使用 http 协议则改为 False

注2:如果没使用 memcached 的话,还需要执行 rm /tmp/seahub_cached/ 清空缓存

  • 重启 seahub 使得配置生效
#假设当前在 seafile-server-latest 目录下
rm -f ../conf/seahub_settings.pyc
./seahub.sh restart-fastcgi

尽情享受吧!

使用体会

onlyoffice 还是不错的,加载速度快,界面友善,我与同事测试过,多人同时编辑一个文件的时候毫无问题。

但是它目前缺点也十分明显,界面没有中文语言,对中文支持也不好,例如我们在 word 里面的字体叫『等线』,但是 onlyoffice 里面叫 『DengXian』,有时候它并不能识别,故此会识别成默认英文字体,导致一堆口口。

据说 Seafile 在端午节后会着重优化 onlyoffice 的体验,我们期待吧。

7 个赞

不错的技术贴,学习了

楼主你好,我按照你写的文档部署了之后,有些问题,麻烦您提供下你的QQ或者是其他联系方式,我想请教您几个问题,谢谢。我们共同交流下,如有打扰之处,请多多包涵。

己经实现,非常感谢!

我在官方群里面1群2群都在

请教
我的服务器在内网,用的vps做内网穿透
ONLYOFFICE和seafile服务在同一个服务器上
http://demo.domain.com 映射到内网的172.16.1.100:8000
请问这个ONLYOFFICE_APIJS_UR应该是怎样写?

你的 onlyoffice 所在服务器的IP + onlyoffice docker 镜像使用的端口 + /web-apps/apps/api/documents/api.js

感谢
现在打开了,却是乱码,怎么办?

是运行 onlyoffice/chinese 这个 images 么?

乱码是什么字体呢?

选择字体后切换下 SimSun 这个字体还会乱码么?

乱码的是中文字体。。。哪里修改编码格式?

切换SimSun 字体后正常,凡是Sim开头的字体都可以,这体验也太坑了吧

这我就没办法了,是onlyoffice不认识中文字,word默认是中文宋体,他只认识SimSun 不认识宋体。

非常好的文档,按照教程一次性部署完成了,,希望官方能把这个功能也在社区办添加一下,感谢

社区版支持啊6.1.1

嗯,刚刚安装官方文档搭建了一个。但是报错


不知道该如何排查问题

解决了是因为我在测试环境中使用的时候是通过 hosts 文件绑定的域名,通过域名访问 seafile,但是 docker 中程序 callback 无法通过域名访问到 seafile,改回直接通过 IP 访问就好了。

已经部署成功,感觉一下子高大上了。目前主要有两个问题:
1、对中文支持不好,这是OnlyOffice的问题。
2、修改完保存的文档,在seafile中并不会显示文件更新(文件内容已经改了),也不会有历史版本。这个问题感觉是个bug,希望Seafile开发团队能够解决!@lian @jiaqiang.xu

感谢neroxps作者这么好的经验分享,部署成功,基本完美。具体使用过程中有这么几个问题:
1、确实onlyoffice对中文的文档支持不算好,打开office2016的文档,基本是等线字体的都会一堆口口,真没办法,那些有特殊符号的也是一堆??,格式还有可能错乱。
2、操作界面英文,不友好,在输入中文时,只要键入符号,就会重复输入中文,这个问题可以使用onlyoffice中的设置里面的alternate input打上勾解决。但并不友好。
3、在网页版中新建一个office文档,再进行编辑时,默认字体是carlito,无法识别输入的中文,必须手动切换到中文字体。

不过总体来说,多人编辑一些比较简单的excel文档还算可以,复杂的就算了,因为不支持选择,下拉等功能,还是老实的用客户端单人编辑吧。

彻底掌握了所有onlyoffice-documentserver的安装方法和调试了,docker的安装虽然简便,但是不推荐,还是推荐按照官网deb方式安装,好处自己看去吧;docker成功都是暂时的,deb才是王道,字体依赖都实验过了,操作界面中文没问题,比docker耗资源少了差不多1G内存,更容易扩展玩耍~~~哈哈哈:sunglasses:
oods最主要是安全!!!