NextCloud 12 实现在线 Office 功能

2017-7-21 14:54 Herald 2458 DockerNextCloudOffice

NextCloud 通过与在 Docker 上构建的 Collabora Online 服务器进行通信,从而实现在线 Office 功能。

本文是在姊妹篇《Ubuntu 16.04 手动安装 NextCloud 12》基础上做进一步功能搭建。在同一台云服务器上安装 docker 并运行 Collabora Online 服务器,你也可以单独创建一台云服务器运行 docker。

提示:使用 snap 方式安装的 NextCloud 占用了的 80 端口,要在同一台服务器上实现本文介绍的内容比较困难,因此,建议单独创建一台云服务器运行 Collabora Online 服务。

注意:使用 snap 方式安装的 NextCloud 连接 Collabora Online 服务后,保存文档时会提示权限不足,而文档实际会被正常保存的,这是一个不影响使用的 Bug。

准备工作

本文介绍的方法需要在 docker 中使用 Collabora Online 镜像创建服务容器,在继续后面的内容之前,请先安装 Docker:

安装 Collabora Online 服务器

拉取 Collabora Online 服务器镜像:

herald@ubuntu-1g-sv:~$ sudo docker pull collabora/code

查看本地镜像:

herald@ubuntu-1g-sv:~$ sudo docker images

REPOSITORY     TAG    IMAGE ID     CREATED     SIZE
collabora/code latest 8bc1d306ff41 4 weeks ago 1.99GB

创建容器,请将命令中 'domain=nc\\.onit\\.run' 替换成你自己 NextCloud 绑定的域名:

herald@ubuntu-1g-sv:~$ sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nc\\.onit\\.run' --restart always --cap-add MKNOD collabora/code

提示:如果你有多个 NextCloud 服务器同时使用 Collabora Online 服务器,则使用 | 分隔多个域名,例如:'domain=nc\\.onit\\.run|second\\.onit\\.run'

容器运行后会监听本地的 localhost:9980

配置 Apache 反向代理

绑定域名,在域名管理平台新建一条 A 记录,指向云服务器公网 IP。本例使用 onit.run 域名,将 office.onit.run 域名绑定到 45.63.45.63

在上一篇《Ubuntu 16.04 手动安装 NextCloud 12》中,服务器已经安装了 Apache,如果你还没有安装请先看上一篇指南。

提示:有关 Apache 虚拟主机设置请参考 《Ubuntu 16.04 LTS 设置 Apache 虚拟主机

启用所需的 Apache 扩展:

herald@ubuntu-1g-sv:~$ sudo a2enmod proxy proxy_wstunnel proxy_http ssl

创建虚拟主机配置文件:

herald@ubuntu-1g-sv:~$ sudo nano /etc/apache2/sites-available/nextcloud-office.conf

粘贴以下内容:

<VirtualHost *:80>
 ServerName office.onit.run
</VirtualHost>

启用新添加的虚拟机:

herald@ubuntu-1g-sv:~$ sudo a2ensite nextcloud-office.conf

重启 Apache2 服务器:

herald@ubuntu-1g-sv:~$ sudo service apache2 restart

使用 certbot 为新的虚拟主机获取 ssl 证书:

herald@ubuntu-1g-sv:~$ sudo certbot –apache

根据提示,选择新虚拟主机对应的网址:

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: nc.onit.run
2: office.onit.run
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):2

选择使用模式,这里选择 easy 模式:

Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

编辑新增的 apache 配置文件:

herald@ubuntu-1g-sv:~$ sudo nano /etc/apache2/sites-available/nextcloud-office-le-ssl.conf

在配置文件 </VirtualHost></IfModule> 标签 之前 插入以下内容:

# Encoded slashes need to be allowed
 AllowEncodedSlashes NoDecode

# Container uses a unique non-signed certificate
 SSLProxyEngine On
 SSLProxyVerify None
 SSLProxyCheckPeerCN Off
 SSLProxyCheckPeerName Off

# keep the host
 ProxyPreserveHost On

# static html, js, images, etc. served from loolwsd
 # loleaflet is the client part of LibreOffice Online
 ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0
 ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet

# WOPI discovery URL
 ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
 ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery

# Main websocket
 ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

# Admin Console websocket
 ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws

# Download as, Fullscreen presentation and Image upload operations
 ProxyPass /lool https://127.0.0.1:9980/lool
 ProxyPassReverse /lool https://127.0.0.1:9980/lool

保存并重启 Apache2 服务器:

herald@ubuntu-1g-sv:~$ sudo service apache2 restart

配置在线 Office

以管理员身份登录 NextCloud,点击界面右上角 ⚙ 设置图标,进入应用管理界面。点击左侧分类列表中的 Integration,右侧会显示该分类下的应用,找到并启用 Collabora Online

应用启用后,点击界面右上角 ⚙ 设置图标,进入管理界面。点击左侧列表中的在线协作,在右侧输入前面创建的服务器地址,如下图。

现在返回网盘文件列表,在文件目录中有 About.odt 的文件,已经可以在线编辑了。

总结

NextCloud 的在线 Office 方案已经非常好了,支持几乎所有 office 文档格式 DOC, DOCX, PPT, PPTX, XLS, XLSX + ODF, Import/View Visio, Publisher 等等。但是输入中文时,输入法面板会挂载编辑框左上角且不随光标移动,这一点还有待改进。话说回来,自己的私有网盘能做到这种程度,真的很难得,给 NextCloud 一个大大的赞吧!

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '2652' }}

回复 {{ reply_to }}