La edición colaborativa
El mes pasado hablábamos de ownCloud, un importante competidor de soluciones de almacenamiento en la nube, que junto con NextCloud aparecen como alternativas a los grandes de la web como lo son Dropbox, Google Drive y Microsoft OneDrive, entre otros. Mencionábamos en el artículo de ownCloud, tu propia nube, que la posibilidad de compartir y colaborar con archivos había cobrado mayor relevancia que el mero hecho de tener un backup remoto, y resulta ser en ese punto donde una solución de almacenamiento colaborativo expande su utilidad, cuando se le agrega edición online de documentos, hojas de cálculo y presentaciones.
ONLYOFFICE, el complemento ideal
ONLYOFFICE es una suite completa de oficina, que bien podemos instalar en nuestra propia infraestructura, o usarla como servicio premium proporcionado por la gente de Ascensio System SIA. Pero como ya es tradición en este blog, vamos a ir más allá instalando ONLYOFFICE para ser usado en conjunto con nuestra instalación de ownCloud.
Nota: si eres usuario de NextCloud, buena parte de este tutorial te servirá.
La instalación que vamos a seguir es la correspondiente a los paquetes de la distribución para Ubuntu/Debian. En el sitio oficial podrás encontrar instrucciones para Docker que están bien documentadas y gozan de buena participación de la comunidad en foros y otros blog posts. Es por ello que profundizaremos en la opción de instalación con paquetes de software, dado que así tienes mayor control sobre cada archivo de configuración y podrás resolver los problemas que vas encontrando mientras entiendes la estructura de ONLYOFFICE.
Una pequeña queja
Quiero descargar un poco de frustración con el modelo OpenSource que están implementando algunas compañías. Si bien, siempre preferiré el OpenSource al modelo cerrado y privativo, ocurre que cuando los proyectos no siguen las reglas del software libre y simplemente abren su código para atraer desarrolladores, llega el momento en que inician su etapa Enterprise o Premium y terminan abandonando parcialmente las versiones Community o de Código Abierto, dejándolas en manos de una comunidad muy pequeña que no tiene la capacidad de dar el soporte que un proyecto de código abierto requiere.
Esto se da en parte porque las licencias que son sólo OpenSource y no de software libre, no exigen que lo que derives de allí deba permanecer debidamente documentado y dispuesto tanto en fuentes como binarios. Entonces te encuentras con proyectos como este, o como Collabora Office y Alfreso Community Edition, entre otros tantos, a quienes les viene muy bien ofrecerte una imagen de Docker que les resuelve un poco el dilema de disponer un binario funcional. Sin embargo, para quienes hacemos SysAdmin y somos responsables de la seguridad de la infraestructura que manejamos, el escalamiento de privilegios que hace Docker sobre los contenedores que despliega, representa un alto riesgo, en especial porque si de antemano no conoces la estructura interna del software, no sabrás qué es lo que estás exponiendo con privilegios de root hacia lo salvaje.
Así que está bien que puedas probar rápidamente su software OpenSource con una imagen de Docker, pero si quieres montar esto en un entorno de producción seguro, deberás preocuparte un poco más de asegurar dicho despliegue mediante las opciones que tienes disponible en Docker. Al final para mi, esto sigue siendo un quiebre de responsabilidades que permite el OpenSource y considero que para proteger realmente tu proyecto, deberías jugar las reglas del software libre, aquellas que no están mejor pintadas en otro lugar que en el modelo de licenciamiento GPL.
Gracias por leer, ya me siento mejor 🤗.
Requisitos previos
ONLYOFFICE está desarrollado en PHP para su backend, e integrado con Nginx como servidor HTTP y HTTPS, por lo que si tu sistema ya corre otro servidor web como Apache2, tendrás que usar puertos alternativos; ya veremos como. Adicionalmente, ONLYOFFICE también hace uso del servidor de AMQP RabbitMQ. Su frontend está desarrollado con NodeJS, con el cual no tendrás que vértelas porque está sólidamente desarrollado e integrado.
Nota: este tutorial fue probado para ONLYOFFICE versión 6.1.1.
La instalación la haremos sobre Ubuntu 18.04 Server. Ten en cuenta las siguientes dependencias que serán instaladas junto con ONLYOFFICE, de las cuales quiero resaltar supervisor, que es un sistema de control de servicios similar a systemd, pero para servicios de software de usuario, en este caso los componentes de ONLYOFFICE correrán como servicios de supervisor.
|
|
Preparando el sistema
ONLYOFFICE usa una base de datos PostgreSQL, por tanto vamos a instalarlo y a configurar dicha DB.
|
|
Tanto el usuario de la DB como el password deben ser onlyoffice, vamos a crearlos directamente desde la consola de usuario un comando a la vez:
|
|
Nota: también podrías hacer esto en el intérprete de comandos de PostgreSQL o mediante algún administrador gráfico.
Ahora instalemos RabbitMQ y Nginx:
|
|
Como lo dije anteriormente, en este tutorial configuraremos la instalación para que funcione en puertos alternativos. La forma más expedita es haciendo uso de debconf
un comando a la vez:
|
|
Además, asegurémonos de que ONLYOFFICE use autenticación por JWT.
|
|
Esto fijará los datos necesarios en la DB de debconf para que el paquete de ONLYOFFICE se configure correctamente.
Ahora agreguemos la llave y el repositorio a nuestras fuentes de software:
|
|
|
|
|
|
Nota: el instalador te preguntará por el usuario y contraseña de PostgreSQL, el cual definimos anteriormente como onlyoffice. Si seleccionas estos parámetros en debconf no tendrás que ingresarlos; la lista de parámetros la puedes ver con el comando
sudo debconf-show onlyoffice-documentserver
.
Finalizada la instalación procederemos a configurar el acceso HTTPS, si no lo requieres, podrás usar la instalación por defecto y acceder a http://tu-direccion-ip:8081, con lo que verás la página de bienvenida después de aceptar las advertencias de seguridad:

Nota: es posible que la configuración del paquete de onlyoffice falle cuando estás usando el puerto 80 con otro servicio distinto a nginx, para lo cual deberás asegurarte que tu configuración de nginx le permita arrancar (mira abajo la configuración de nginx) y verificado este punto, ejecutar
sudo dpkg --configure -a
para terminar la configuración del paquete onlyoffice-documentserver.
¿Qué tenemos hasta ahora?
Pues bien, supongo que esperabas ver la interfaz de edición de documentos, yo también esperaba eso, pero para ver lo que esperábamos es necesario iniciar un demo que viene con la instalación. ¿Y qué es eso del demo?, es una configuración especial con pocas opciones de seguridad, que carga una página inicial desde donde se llaman a los editores y conversores de documentos. Lo que en realidad instalaste fue un servidor de documentos (documentserver) que podrás usar mediante el API disponible, y que si no lo aseguras, podría ser usado por cualquier tercero que tenga acceso a tu dirección ip pública.
Por tanto, vamos a asegurar el servidor y a integrarlo a ownCloud, en lugar de usar el demo, que de cualquier manera te invito a probar para que te animes a continuar.
Aseguramiento del servidor
El paso primordial es habilitar el HTTPS para Nginx, para lo cual puedes optar por usar certificados autofirmados siguiendo esta guía, o si tienes un dominio, crear un registro A en tu administrador de dominios para un host como onlyoffice.example.com
, que apunte a tu dirección IP, para después usar Certbot y obtener los certificados desde Let’s Encrypt.
Nota: puedes crear el host con el nombre que quieras.
Vamos a ver la segunda opción.
Instalar certificado de Let’s Encrypt con Certbot
Recuerda que Certbot usará la configuración HTTP de tu servidor Nginx para obtener el certificado, por lo que no te adelantes a crear la configuración HTTPS dentro de tu sitio de Nginx sin tener previamente los certificados, dado que esto no permitirá que Nginx arranque.
Asegúrate de tener la configuración del host general de nginx de la siguiente manera:
|
|
|
|
Nota: ds.conf es un enlace simbólico a /etc/onlyoffice/documentserver/nginx/ds.conf. Revisa el contenido de los últimos include, dentro de ellos está el document root de ONLYOFFICE.
Reinicia Nginx con sudo systemctl restart nginx
y revisa que esté corriendo sobre el puerto especificado entrando a http://onlyoffice.example.com:8081
.
Nota: puede ocurrir que tengas una instalación previa de Nginx y prefieras tener tus virtual host ordenados dentro de
/etc/nginx/sites-availible
habilitándolos con un enlace simbólico desde/etc/nginx/sites-enabled
, esto también lo puedes hacer moviendo el enlace/etc/nginx/conf.d/ds.conf
a dicho directorio. Tampoco he dicho que ONLYOFFICE no pueda correr sobre Apache, sin embargo no está soportado oficialmente.
Ahora que está probado que Nginx corre bien, vamos a seguir la guía de Certbot para Ubuntu 18.04 y a generar los certificados para el dominio onlyoffice.example.com
.
Con los certificados ya generados, es hora de modificar la configuración del host principal de Nginx así:
|
|
|
|
Nota: nginx podría fallar para arrancar por varios motivos, el principal es porque no hayas generado correctamente el certificado SSL, revisa los logs para ver de qué se trata.
Las opciones que más nos interesan son ssl_certificate
y ssl_certificate_key
. Que deben coincidir con la ruta en la que Certbot guardó los certificados de Let’s Encrypt (mira tu consola, la salida del comando certbot te lo dirá).
Si todo ha salido bien, podrás acceder a https://onlyoffice.example.com:8433 y ver la página de bienvenida.
Nota: nuevamente, si usaste los puertos por defecto, no tendrás que especificar puerto alguno en la url.
Asegurar el documentserver mediante token
Como te expliqué anteriormente, onlyoffice usa JWT para asegurar la comunicación entre el documentserver y las aplicaciones que se conecten, para ello ambos deberán compartir la misma clave; esta la definimos arriba en la configuración de debconf como TuClaveUltraSecreta
, pero nos falta habilitar el uso de tokens en la configuración del documentserver.
Las configuraciones que debes tocar están concentradas todas el archivo local de configuración del documentserver, el resto de archivos que encontrarás en el directorio /etc/onlyoffice/documentserver/
son de uso general del software y no hay motivos para que tengas que tocarlas. Entonces vamos a mirar como va; editemos el archivo local.json
el cual deberá quedar con el siguiente contenido.
|
|
|
|
Luego, hay que decirle al ownCloud que el encabezado JWT para la autenticación de ONLYOFFICE será el mismo definido en la configuración local:
|
|
|
|
Nota: es posible que la autenticación JWT siga fallando, por lo que es posible que debas cambiar el encabezado a
AutorizationJWT
en ambos archivos.
Con esto queda sólo reiniciar los servicios de ONLYOFFICE y detener el ejemplo, ya que también se inicia junto con los demás.
|
|
Integración de ownCloud y ONLYOFFICE
La integración es realizada por una de las aplicaciones que puedes instalar en ownCloud, así mismo, como dije anteriormente, también puedes integrarlo a NextCloud con el mismo mecanismo.
Para ello podemos ir al Market de aplicaciones e instalarla, o podemos descargarla directamente desde GitHub. Vamos con la primera opción; ve al Market de tu instalación de ownCloud en la sección Tools, busca ONLYOFFICE y le das clic en INSTALAR:

Posteriormente, en la sección de ajustes de tu perfil como administrador de ownCloud, en la parte inferior izquierda, da clic en Adicional; verás la configuración del app.

Finalmente, escribe la URL que configuramos anteriormente para el documentserver y TuClaveUltraSecreta
. Da clic en guardar y si todo sale bien verás la siguiente información:

Nota: en este punto pueden aparecer errores sobre token inválido o sobre cosas que cURL no pudo hacer algo, error 403 forbidden, etc; así mismo sobre que el conversor de documentos no pudo convertir no se que cosa. Muchos de estos mensajes están relacionados con la configuración del token en los pasos anteriores, puedes intentar desactivando en todos los archivos anteriormente editados todas las solicitudes de token y probar habilitar el app sin token sobre un servidor http, no https, y si carga, ya sabes dónde buscar el problema.
Finalmente podrás acceder a tu perfil de ownCloud y tendrás disponible un bonito menú para crear documentos, hojas de cálculo y presentaciones. Te invito a revisar las opciones del app, tal vez desees que los archivos se abran en la misma pestaña, o que los formatos no nativos (odt, ods, odp, etc.) del app se abran para edición por defecto, entre otras.
Nota: el formato nativo de ONLYOFFICE es OpenXML, es decir: docx, xlsx, pptx, etc.

Te invito a probar esta gran herramienta, su funcionalidad está a la altura de las opciones dominantes del mercado y honestamente a mi me conquistó por encima de Google Docs e incluso de Collabora Office que es también OpenSource.

Cuéntame qué te pareció el tutorial, y si tienes dudas déjame un comentario o ponte en contacto.