在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容器。 更换 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
步骤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证书。
最后一步:将Nextcloud连接到Collabora Online
在您的Nextcloud仪表板中,转到 Apps
页。 接下来,前往 Office & Text
部分,找到 Collabora Online
应用,请点击 Download and Enable
按钮。 (注意:还有一个名为 Collabora Online - Built-in CODE server
,您不应将其安装在Nextcloud服务器上。)
启用此应用后,转到Nextcloud Settings
页。 请点击 Collabora Online
标签在左侧。 默认情况下,它使用不适合生产使用的内置CODE服务器。 我们需要选择 Use your own server
并输入您的Collabora Online的域名,包括 https://
前缀,然后单击 Save
按钮。
在里面 advance settings
,您还可以将OOXML设置为默认格式,因此文件将与Microsoft Office软件兼容。
现在,当您单击Nextcloud中的添加按钮(+)时,就可以直接从Nextcloud服务器创建Word,电子表格和演示文稿文档。
故障排除技巧
如果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页面上关注我们。