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