Skip to main content

Integración Collabora online (CODE) - Nextcloud

Instalación sin Docker, con reverse proxy Nginx en la instancia documentada aquí


1. Descarga e instalación de Collabora Online (CODE)

1.1 Repositorio oficial Collabora

curl -fsSL https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg \
  | gpg --dearmor -o /usr/share/keyrings/collaboraonline.gpg
echo "deb [signed-by=/usr/share/keyrings/collaboraonline.gpg] \
https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-deb/ ./" \
> /etc/apt/sources.list.d/collaboraonline.list
apt update
apt install coolwsd code-brand

2. Configuración básica de coolwsd

2.1 Fichero de configuración

Ruta:

/etc/coolwsd/coolwsd.xml

Comandos para el coolwsd-xml

sudo coolconfig set ssl.termination true
sudo coolconfig set net.listen loopback
sudo coolconfig set storage.wopi.host office.nube42.es
sudo coolconfig set-admin-password

Permisos correctos:

chown root:cool /etc/coolwsd/coolwsd.xml
chmod 640 /etc/coolwsd/coolwsd.xml

Notas:

  • SSL termina en Nginx
  • CODE escucha en loopback IPv6 (::1)
  • No forzar cambios si el XML original funciona

3. Reverse proxy Nginx para Collabora

Dominio:

office.nube42.es

3.1 Vhost completo

server {
  listen 443 ssl;
  http2 on;
  server_name office.nube42.es;

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

  ssl_certificate /etc/letsencrypt/live/office.nube42.es/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/office.nube42.es/privkey.pem;

  real_ip_header X-Forwarded-For;
  set_real_ip_from 127.0.0.1;
  set_real_ip_from ::1;

  # static files
  location ^~ /browser {
    proxy_pass http://[::1]:9980;
    proxy_set_header Host $http_host;
  }

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

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

  # main websocket
  location ~ ^/cool/(.*)/ws$ {
    proxy_pass http://[::1]: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 ~ ^/(c|l)ool {
    proxy_pass http://[::1]:9980;
    proxy_set_header Host $http_host;
  }
  # Admin Console websocket
  location ^~ /cool/adminws {
    proxy_pass http://[::1]:9980;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $http_host;
    proxy_read_timeout 36000s;
  }
}

Aplicar:

nginx -t
systemctl reload nginx

Verificación:

curl -I https://office.nube42.es/hosting/discovery

4. Preparación de Nextcloud

Instancia:

https://colabora.nube42.es

Usuario PHP:

ncc

4.1 App requerida

Hay que descargar desde la tienda de app de Nextcloud el "Nextcloud office".

4.2 Configuración explícita

sudo -u ncc php occ app:disable richdocumentscode
sudo -u ncc php occ config:app:set richdocuments wopi_url --value="https://office.nube42.es"
sudo -u ncc php occ config:app:set richdocuments public_wopi_url --value="https://office.nube42.es"
sudo -u ncc php occ config:app:set richdocuments use_https --value="yes"
sudo -u ncc php occ config:app:set richdocuments disable_certificate_verification --value="no"

Eliminar allowlist:

sudo -u ncc php occ config:app:delete richdocuments wopi_allowlist

5. Ajustes en config.php (Nextcloud)

'trusted_proxies' => array(
  '127.0.0.1',
  '::1',
),

'overwriteprotocol' => 'https',

6. Ajuste Nginx Nextcloud

real_ip_header X-Forwarded-For;
set_real_ip_from 127.0.0.1;
set_real_ip_from ::1;
nginx -t
systemctl reload nginx
systemctl reload php8.2-fpm

Cerrar sesión y volver a entrar.


7. Prueba final

Abrir un documento Office desde Nextcloud.

Logs:

journalctl -u coolwsd -f

Resultado esperado:

  • Sin CheckFileInfo 403
  • Documento editable
  • Sesión visible en admin.html

8. Fuente de referencia

Setup Collabora Online for Nextcloud on Debian without Docker

Collabora Linux setup guide