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

Obligatorio: instalar la app Nextcloud Office (richdocuments) desde el frontend de Nextcloud.

Sin esta app, aunque CODE esté operativo y correctamente configurado, no es posible crear ni editar documentos.

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

Nota: estos ajustes solo son necesarios si Nextcloud está detrás de un proxy o balanceador que termina TLS o reenvía cabeceras X-Forwarded-*.

En una instalación donde Nginx actúa como frontend directo HTTPS, no son necesarios.


6. Ajuste Nginx Nextcloud

Habilitar la casilla "Permitir acceso a apps externas", y crear un token (NC lo guardará para interactuar con el CODE)

ajustes_col-nc.png


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. Que no tocar

Durante la integración no es necesario modificar:

  • Redis
  • APCu
  • PHP-FPM
  • OPCache
  • CSP / headers

Si CODE ya funciona con otra instancia, la integración es puramente de configuración.

9. Fuente de referencia

Setup Collabora Online for Nextcloud on Debian without Docker

Collabora Linux setup guide