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

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

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

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

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

注意:如果您使用的是Ubuntu 16.04或Ubuntu 18.04,则可以从官方软件包存储库安装Collabora Online,它比使用Docker易于管理。

先决条件

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

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

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

步骤1:在Ubuntu上安装Docker

如果您想要最新的Docker版本,则可以从Docker的APT存储库中安装Docker。 为简单起见,本教程从默认的Ubuntu软件存储库安装Docker。

sudo apt update
sudo apt install docker.io

安装后,应自动启动Docker守护程序。 您可以通过以下方式查看其状态:

systemctl status docker

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

如果未运行,请使用以下命令启动守护程序:

sudo systemctl start docker

并在启动时启用自动启动:

sudo systemctl enable docker

步骤2:使用Docker安装和运行Collabora Online Server

执行以下命令以获取最新的 Collabora Online Development Edition Docker Hub中的镜像。

sudo docker pull collabora/code

协作在线docker映像

然后使用以下命令运行此docker容器。 更换 nextcloud\.example\.com 使用您的Nextcloud主机名,并保留双斜杠。 这是因为Collabora仅允许已知主机访问其服务,并且我们需要将Nextcloud主机名添加到白名单中,并使用 domain= 参数。

sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\.example\.com' -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true" --restart always collabora/code

协作在线代码

哪里:

  • -d:分离模式使容器在后台运行。
  • -t:分配伪TTY
  • -p:将容器的端口发布到主机。
  • -e:设置环境变量

发出以下命令可以显示,Collabora Online服务器将在本地主机(127.0.0.1)的端口9980上进行侦听。 (如果您的Ubuntu系统没有netstat命令,则可以使用 sudo apt install net-tools

sudo netstat -lnpt | grep docker

协作在线nextcloud码头工人

步骤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 PPA安装“加密客户端”(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集成

故障排除技巧

如果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。

您还可以检查Docker容器是否正在运行。

sudo docker ps

并检查Web服务器的日志。

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

包起来

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

Sidebar