GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Integre Collabora Online con Nextcloud en Ubuntu sin Docker

Este tutorial le mostrará cómo instalar Collabora Online en Ubuntu y luego integrarlo con un servidor Nextcloud existente sin usar Docker.

Colabora en línea es una suite ofimática en línea de código abierto autohospedable y basada en LibreOffice. Sus características incluyen:

  • Edición básica
  • Representación WYSIWYG de alta fidelidad
  • Admite formato de documento DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF
  • Importar y ver Visio, Publisher y más de 100
  • Edición compartida

Collabora es un gran contribuyente al proyecto LibreOffice. Todos los códigos de Collabora Online se incluirán eventualmente en LibreOffice.

Nota:este tutorial funciona en Ubuntu 20.04, 18.04 y 16.04. Si está utilizando otra versión de Ubuntu, puede instalar Collobaora Online con Docker.

Requisitos

Se supone que ya ha configurado un servidor Nextcloud, que puede estar en cualquier distribución de Linux. Si aún no lo ha hecho, puede consultar las siguientes guías fáciles de entender.

  • Cómo instalar Nextcloud en Ubuntu 20.04 con LEMP Stack
  • Cómo instalar Nextcloud en Ubuntu 20.04 con LAMP Stack
  • Cómo instalar Nextcloud en CentOS 8 con LEMP Stack
  • Cómo configurar Nextcloud en Arch Linux

El servidor Collabora Online y el servidor Nextcloud pueden estar en la misma máquina o en dos máquinas diferentes. Este tutorial muestra cómo instalar el servidor en línea de Collabora en Ubuntu utilizando una imagen de Docker creada por Collabora y Nextcloud. Luego intégrelo con un servidor Nextcloud existente.

Paso 1:Instale Collabora Online en Ubuntu desde el repositorio oficial

Collabora tiene un repositorio de paquetes oficial para Ubuntu 20.04, 18.04 y 16.04. Ejecute el siguiente comando para agregarlo a su sistema 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

Luego ejecute el siguiente comando para descargar e importar la clave pública de Collabora, que permite al administrador de paquetes APT verificar la integridad de los paquetes descargados de este repositorio.

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

Si no puede importar la clave pública con el comando anterior, puede usar el siguiente comando para descargar e importar la clave.

wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key && sudo apt-key add repomd.xml.key

Dado que este repositorio usa una conexión HTTPS, necesitamos instalar el apt-transport-https y ca-certificates paquete, para que el administrador de paquetes APT pueda establecer una conexión segura con el repositorio.

sudo apt install apt-transport-https ca-certificates

Ahora actualice el índice de paquetes locales e instale Collabora Online. Loolwsd es el demonio WebSocket de LibreOffice Online.

sudo apt update
sudo apt install loolwsd code-brand

Paso 2:Configure el demonio WebSocket de LibreOffice Online

Una vez instalados, puede comprobar el estado de loolwsd.

systemctl status loolwsd

Sugerencia :Si el comando anterior no salió inmediatamente, puede presionar Q clave para hacer que se cierre.

Como puede ver, no se pudo iniciar. Podemos revisar el diario para ver por qué sucedió esto.

sudo journalctl -eu loolwsd

Salida de muestra:

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.

De forma predeterminada, loolwsd habilita la conexión TLS. Sin embargo, no encontró un archivo de certificado TLS, de ahí la falla de inicio. Es mejor deshabilitar TLS en loolwsd y terminar TLS en un proxy inverso. El archivo de configuración de loolwsd se encuentra en /etc/loolwsd/loolwsd.xml . Sin embargo, es un archivo XML, que no es fácil de leer y editar. Podemos usar el loolconfig herramienta para cambiar configuraciones.

Ejecute el siguiente comando para deshabilitar TLS en loolwsd.

sudo loolconfig set ssl.enable false

Y habilite la terminación de TLS en el proxy inverso.

sudo loolconfig set ssl.termination true

De forma predeterminada, loolwsd solo permite que los hosts conocidos accedan a su servicio. Para permitir que Nextcloud acceda al servicio, ejecute el siguiente comando para agregar su nombre de host de Nextcloud a la lista blanca.

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

También puede habilitar la cuenta de administrador para loolwsd con el siguiente comando. Deberá establecer un nombre de usuario y una contraseña para la cuenta de administrador.

sudo loolconfig set-admin-password

Reinicie loolwsd para que los cambios surtan efecto.

sudo systemctl restart loolwsd

Ahora debería estar funcionando sin errores.

systemctl status loolwsd

Salida:

Paso 3:configurar el proxy inverso

El servidor Nextcloud requiere un certificado TLS en Collabora Online, por lo que necesitaremos crear un host virtual, darle un nombre de dominio al host virtual, configurar un proxy inverso e instalar el certificado TLS. Podemos usar Apache o Nginx para lograr esto.

Apache

Instale el servidor web Apache con el siguiente comando:

sudo apt install apache2

Ejecute el siguiente comando para crear un archivo de host virtual de Apache para Collabora Online.

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

Coloque el siguiente texto en el archivo. Reemplace el nombre de dominio con su nombre de dominio real para Collabora Online. No olvide crear un registro A para este subdominio.

<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>

Guarde y cierre el archivo. Para poder enviar tráfico proxy usando Apache, necesitamos habilitar algunos módulos de Apache.

sudo a2enmod proxy proxy_wstunnel proxy_http

Habilite este host virtual con el siguiente comando:

sudo a2ensite collabora.conf

Luego reinicie Apache.

sudo systemctl restart apache2

Nginx

Instale Nginx en Ubuntu con el siguiente comando:

sudo apt install nginx

Cree un archivo de host virtual para Collabora Online.

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

Coloque el siguiente texto en el archivo. Reemplace el nombre de dominio con su nombre de dominio real para Collabora Online. No olvide crear un registro A para este nombre de dominio.

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;
    }
}

Guarde y cierre el archivo. Luego pruebe las configuraciones de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar el servidor Nginx.

sudo systemctl reload nginx

Paso 4:obtener e instalar el certificado TLS

Ahora obtengamos un certificado TLS gratuito de Let's encrypt. Ejecute los siguientes comandos para instalar el cliente Let's Encrypt (certbot) desde el repositorio de software predeterminado.

sudo apt install certbot

Si usa Apache servidor web, entonces también necesita instalar el complemento Certbot Apache.

sudo apt install python3-certbot-apache

Luego emita el siguiente comando para obtener un certificado TLS/SSL gratuito.

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

Si usa Nginx servidor web, entonces necesita instalar el complemento Certbot Nginx.

sudo apt install python3-certbot-nginx

Luego use el complemento Nginx para obtener e instalar el certificado ejecutando el siguiente comando.

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

Verá el siguiente texto que indica que ha obtenido correctamente un certificado TLS.

Paso final:conectar Nextcloud a Collabora Online

En su tablero de Nextcloud, vaya a Apps página. A continuación, vaya a Office & Text encuentra la sección Collabora Online aplicación, haga clic en Download and Enable botón.

(Nota :Hay otra aplicación llamada Collabora Online - Built-in CODE server , que no debe instalar en su servidor Nextcloud).

Después de habilitar esta aplicación, vaya a Nextcloud Settings página. Haz clic en Collabora Online pestaña de la izquierda. De forma predeterminada, utiliza el servidor CODE incorporado, que no es adecuado para uso en producción. Necesitamos seleccionar Use your own server e ingrese el nombre de dominio de su Collabora Online incluyendo https:// prefijo, luego haga clic en Save botón.

En la advance settings , también puede establecer OOXML como formato predeterminado, de modo que los archivos sean compatibles con el software de Microsoft Office.

Ahora, cuando haga clic en el botón Agregar (+) en Nextcloud, podrá crear documentos de Word, hojas de cálculo y presentaciones directamente desde su servidor Nextcloud.

La consola de administración de loolwsd está disponible en https://collabora.example.com/loleaflet/dist/admin/admin.html . Debe ingresar el nombre de usuario y la contraseña, que se crearon en el paso 2.

Resolución de problemas

Si Nextcloud te dice que c no se pudo establecer la conexión con el servidor de Collabora Online , puede ser que su servidor Nginx se esté ejecutando detrás de un proxy inverso como HAProxy y tenga las siguientes dos líneas en /etc/nginx/nginx.conf .

set_real_ip_from 127.0.0.1;
real_ip_header proxy_protocol;

Esto significa que Nginx espera una conexión HTTP del proxy inverso. Debe editar el /etc/nginx/conf.d/collaboara.conf archivo y agregue proxy_protocol a la directiva de escucha.

listen 127.0.0.1:443 ssl http2 proxy_protocol;

Luego edite el /etc/hosts archivo y agregue un registro DNS estático como se muestra a continuación. Reemplace 12.34.56.78 con la dirección IP pública del servidor.

12.34.56.78          collaboara.example.com

collabora.example.com debe apuntar a la dirección IP pública de su servidor. No lo apuntes a 127.0.0.1.

También puede consultar los registros de loolwsd para encontrar pistas. Tal vez no se esté ejecutando.

sudo journalctl -eu loolwsd

Y verifique los registros del servidor web.

  • Apache:/var/log/apache2/collabora_error
  • Nginx:/var/log/nginx/collabora.error

Ubuntu
  1. Cómo crear imágenes de Docker con un Dockerfile en Ubuntu 16.04 LTS

  2. Cómo instalar WordPress con Docker en Ubuntu

  3. Cómo administrar contenedores Docker con Rancher en Ubuntu

  4. Cómo integrar Alfresco con ONLYOFFICE Online Editor en Ubuntu 14.04

  5. Cómo integrar Collabora Online con Nextcloud en Ubuntu 20.04

Instalación de Mailtrain en el servidor Ubuntu 18.04 sin Docker

Instale Mailtrain v1.24 en el servidor Ubuntu 20.04 sin Docker

Cómo instalar Nextcloud 13 en Ubuntu 16.04 con Nginx

Cómo instalar Mailtrain en Ubuntu 18.04 con Docker

Instalar Portainer con Docker en Ubuntu

Cómo instalar WordPress con Docker en Ubuntu 16.04 LTS