在没有Docker的Ubuntu上将Collabora Online与Nextcloud集成

本教程将向您展示如何在Ubuntu上安装Collabora Online,然后将其与现有的Nextcloud服务器集成而不使用Docker。

在线合作 是一个可自我托管且基于LibreOffice的开源在线办公套件。 其功能包括:

  • 基本编辑
  • 高保真,所见即所得的渲染
  • 支持DOC,DOCX,PPT,PPTX,XLS,XLSX,ODF文档格式
  • 导入和查看Visio,Publisher等100多种功能
  • 共享编辑

Collabora是LibreOffice项目的重要贡献者。 所有的Collabora Online代码最终都将包含在LibreOffice中。

注意:本教程适用于Ubuntu 20.04、18.04和16.04。 如果使用的是其他Ubuntu版本,则可以将Collobaora Online与Docker一起安装。

先决条件

假定您已经设置了Nextcloud服务器,该服务器可以在任何Linux发行版上。 如果您尚未这样做,则可以查看以下易于理解的指南。

  • 如何使用LEMP Stack在Ubuntu 20.04上安装Nextcloud
  • 如何使用LAMP Stack在Ubuntu 20.04上安装Nextcloud
  • 如何使用LEMP Stack在CentOS 8上安装Nextcloud
  • 如何在Arch Linux上设置Nextcloud

Collabora Online服务器和Nextcloud服务器可以在同一台计算机上,也可以在两台不同的计算机上。 本教程说明如何使用由Collabora和Nextcloud构建的Docker映像在Ubuntu上安装Collabora在线服务器。 然后将其与现有的Nextcloud服务器集成。

第1步:从官方存储库在Ubuntu上在线安装Collabora

Collabora具有Ubuntu 20.04、18.04和16.04的官方软件包存储库。 运行以下命令将其添加到您的Ubuntu系统。

Ubuntu 20.04

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004 ./' | sudo tee /etc/apt/sources.list.d/collabora.list

Ubuntu 18.04

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu1804 ./' | sudo tee /etc/apt/sources.list.d/collabora.list

Ubuntu 16.04

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE ./' | sudo tee /etc/apt/sources.list.d/collabora.list

然后运行以下命令下载并导入Collabora公钥,该公钥允许APT软件包管理器验证从此存储库下载的软件包的完整性。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D

由于此存储库使用HTTPS连接,因此我们需要安装 apt-transport-httpsca-certificates 包,因此APT包管理器可以建立与存储库的安全连接。

sudo apt install apt-transport-https ca-certificates

现在更新本地软件包索引并安装Collabora Online。 ol 是LibreOffice Online WebSocket守护程序。

sudo apt update
sudo apt install loolwsd code-brand

步骤2:配置LibreOffice Online WebSocket守护程序

安装它们之后,您可以检查loolwsd的状态。

systemctl status loolwsd

LibreOffice Online WebSocket守护程序

暗示:如果以上命令没有立即退出,则可以按 Q 使其退出的关键。

如您所见,它无法启动。 我们可以检查日志以查看发生这种情况的原因。

sudo journalctl -eu loolwsd

样本输出:

Apr 21 16:13:06 ubuntu loolwsd[13842]: File not found: /etc/loolwsd/ca-chain.cert.pem
Apr 21 16:13:06 ubuntu systemd[1]: loolwsd.service: Main process exited, code=exited, status
Apr 21 16:13:06 ubuntu systemd[1]: loolwsd.service: Failed with result 'exit-code'.
Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Service hold-off time over, scheduling r
Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Scheduled restart job, restart counter i
Apr 21 16:13:07 ubuntu systemd[1]: Stopped LibreOffice Online WebSocket Daemon.
Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Start request repeated too quickly.
Apr 21 16:13:07 ubuntu systemd[1]: loolwsd.service: Failed with result 'exit-code'.
Apr 21 16:13:07 ubuntu systemd[1]: Failed to start LibreOffice Online WebSocket Daemon.

默认情况下,loolwsd启用TLS连接。 但是,它找不到TLS证书文件,因此启动失败。 最好在loolwsd中禁用TLS并在反向代理处终止TLS。 loolwsd配置文件位于 /etc/loolwsd/loolwsd.xml。 但是,这是一个XML文件,不容易阅读和编辑。 我们可以使用 loolconfig 更改配置的工具。

运行以下命令以禁用loolwsd中的TLS。

sudo loolconfig set ssl.enable false

并在反向代理处启用TLS终止。

sudo loolconfig set ssl.termination true

默认情况下,loolwsd仅允许已知主机访问其服务。 要允许Nextcloud访问服务,请运行以下命令以将Nextcloud主机名添加到白名单中。

sudo loolconfig set storage.wopi.host nextcloud.example.com

您也可以使用以下命令为loolwsd启用管理员帐户。 您将需要为管理员帐户设置用户名和密码。

sudo loolconfig set-admin-password

重新启动loolwsd,以使更改生效。

sudo systemctl restart loolwsd

现在它应该可以正常运行了。

systemctl status loolwsd

输出:

systemctl status loolwsd

步骤3:设置反向代理

Nextcloud服务器在Collabora Online上需要TLS证书,因此我们将需要创建虚拟主机,为虚拟主机指定域名,设置反向代理并安装TLS证书。 我们可以使用 阿帕奇 要么 Nginx的 为了达成这个。

阿帕奇

使用以下命令安装Apache Web服务器:

sudo apt install apache2

运行以下命令为Collabora Online创建一个Apache虚拟主机文件。

sudo nano /etc/apache2/sites-available/collabora.conf

将以下文本放入文件中。 用Collabora Online的实际域名替换域名。 不要忘记为此子域创建A记录。

<VirtualHost *:80>
  ServerName collabora.example.com
  Options -Indexes

  ErrorLog "/var/log/apache2/collabora_error"
  # Encoded slashes need to be allowed
  AllowEncodedSlashes NoDecode

  # keep the host
  ProxyPreserveHost On

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

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

  # Capabilities
  ProxyPass           /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0
  ProxyPassReverse    /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities

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

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

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

</VirtualHost>

保存并关闭文件。 为了能够使用Apache代理流量,我们需要启用一些Apache模块。

sudo a2enmod proxy proxy_wstunnel proxy_http

使用以下命令启用此虚拟主机:

sudo a2ensite collabora.conf

然后重新启动Apache。

sudo systemctl restart apache2

Nginx的

使用以下命令在Ubuntu上安装Nginx:

sudo apt install nginx

为Collabora Online创建一个虚拟主机文件。

sudo nano /etc/nginx/conf.d/collabora.conf

将以下文本放入文件中。 用Collabora Online的实际域名替换域名。 不要忘记为此域名创建A记录。

server {
    listen 80;
    listen [::]:80;
    server_name  collabora.example.com;

    error_log /var/log/nginx/collabora.error;

    # static files
    location ^~ /loleaflet {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # main websocket
    location ~ ^/lool/(.*)/ws$ {
        proxy_pass http://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }

    # download, presentation and image upload
    location ~ ^/lool {
        proxy_pass http://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # Admin Console websocket
    location ^~ /lool/adminws {
        proxy_pass http://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
}

保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx服务器。

sudo systemctl reload nginx

步骤4:获取并安装TLS证书

现在,让我们从“加密”获得免费的TLS证书。 运行以下命令以从默认软件存储库安装“让我们加密客户端(certbot)”。

sudo apt install certbot

如果您使用 阿帕奇 Web服务器,则还需要安装Certbot Apache插件。

sudo apt install python3-certbot-apache

然后发出以下命令以获得免费的TLS / SSL证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com

如果您使用 Nginx的 Web服务器,则需要安装Certbot Nginx插件。

sudo apt install python3-certbot-nginx

然后使用Nginx插件通过运行以下命令来获取并安装证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com

您将看到以下文本,表明您已成功获得TLS证书。

collabora nginx反向代理https

最后一步:将Nextcloud连接到Collabora Online

在您的Nextcloud仪表板中,转到 Apps 页。 接下来,前往 Office & Text 部分,找到 Collabora Online 应用,请点击 Download and Enable 按钮。

注意:还有一个名为 Collabora Online - Built-in CODE server,您不应将其安装在Nextcloud服务器上。)

协作nextcloud设置

启用此应用后,转到Nextcloud Settings 页。 请点击 Collabora Online 标签在左侧。 默认情况下,它使用不适合生产使用的内置CODE服务器。 我们需要选择 Use your own server 并输入您的Collabora Online的域名,包括 https:// 前缀,然后单击 Save 按钮。

协作在线nextcloud集成docker

在里面 advance settings,您还可以将OOXML设置为默认格式,因此文件将与Microsoft Office软件兼容。

Office Open XML格式的协作

现在,当您单击Nextcloud中的添加按钮(+)时,就可以直接从Nextcloud服务器创建Word,电子表格和演示文稿文档。

nextcloud在线办公室

collabora在线开发版nextcloud集成

您可以在以下位置找到loolwsd管理控制台 https://collabora.example.com/loleaflet/dist/admin/admin.html。 您需要输入在步骤2中创建的用户名和密码。

loolwsd管理控制台

故障排除

如果Nextcloud告诉您 C无法建立与Collabora Online服务器的连接,则可能是您的Nginx服务器在HAProxy之类的反向代理后面运行,并且您在 /etc/nginx/nginx.conf

set_real_ip_from 127.0.0.1;
real_ip_header proxy_protocol;

这意味着Nginx期望来自反向代理的HTTP连接。 您应该编辑 /etc/nginx/conf.d/collaboara.conf 文件并添加 proxy_protocol 到listen指令。

listen 127.0.0.1:443 ssl http2 proxy_protocol;

然后编辑 /etc/hosts 文件,并添加如下所示的静态DNS记录。 皇室 12.34.56.78 与服务器的公共IP地址。

12.34.56.78          collaboara.example.com

collabora.example.com 应该指向服务器的公共IP地址。 不要将其指向127.0.0.1。

您还可以查看loolwsd的日志以找到线索。 也许它没有运行。

sudo journalctl -eu loolwsd

并检查Web服务器的日志。

  • 阿帕奇: /var/log/apache2/collabora_error
  • Nginx: /var/log/nginx/collabora.error

包起来

而已! 我希望本教程可以帮助您在Ubuntu上安装,运行Collabora Online并将其与Nextcloud集成。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯。 您也可以在Twitter或关注我们的Facebook页面上关注我们。

Sidebar