写在最前
Seafile 社区版从 6.1.0 开始支持 Onlyoffice 和LibreOffice 两款 在线编辑服务软件,请更新至最新版 Seafile 再进行以下部署。
安装 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 镜像
这里,你有两个选择
- 部署官方的 onlyoffice Docker 镜像,但因为官方的 Docker 镜像里没有中文字体,故此显示中文字体上会出现各种异常。
- 我基于官方的 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
- 编辑 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 的体验,我们期待吧。