Ofimática en la nube

Este documento explica cómo instalar OxOOL (OxOffice Online) desde cero e integrarlo a Nextcloud.

OxOffice Online es una suite ofimática en línea de código abierto, autoalojable y basada en LibreOffice.

Sus características incluyen:

  • Edición básica y compartida
  • Alta fidelidad, representación WYSIWYG
  • Soporta el estándar mundial Open Document Formar e incluso formatos privativos como DOC/DOCX, PPT/PPTX, XLS/XLSX

De momento sólo está disponible para CentOS 7 y Ubuntu 18.04. Si estás interesado en probarlo en otra plataforma puedes descargar el último código fuente de GitHub e intentar compilarlo.

OxOffice Online y Nextcloud pueden estar en la misma máquina o en dos máquinas diferentes.

Guía de instalación para Ubuntu 18.04 (Community Edition)

Descarga e instala la última versión de Ubuntu 18.04.

Reinicia el equipo e ingresa como usuario normal. Luego ejecuta estos comandos para instalar los programas necesarios y OxOOL Community Edition

sudo apt update
sudo apt upgrade -y
sudo apt install vim openssh-server net-tools curl -y

Elije Sí en caso que recibas algún mensaje de reinicio de servicios

curl http://www.oxoffice.com.tw/apt/ubuntu/oxool-deb.key | sudo apt-key add
echo "deb [arch=amd64] http://www.oxoffice.com.tw/apt/ubuntu/ oxool-v3 main" > ~/oxool.list
sudo mv ~/oxool.list /etc/apt/sources.list.d/
sudo apt update
sudo apt install oxool oxoffice* -y

Definimos que el servicio OxOOL Community Edition se inicie al arrancar y luego lo iniciamos

sudo systemctl enable oxool
sudo systemctl start oxool

Comprueba si OxOOL Community Edition inicia normalmente

sudo netstat -tlnp

Deberías obtener un resultado similar a este:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
       
tcp        0      0 127.0.0.1:9981          0.0.0.0:*               LISTEN      1137/oxool          
tcp6       0      0 :::9980                 :::*                    LISTEN      1137/oxool 

Configurar un proxy reverso

Dependiendo de la infraestructura disponible puede ser necesario configurar un proxy reverso. Para ello se puede utilizar Apache o Nginx.

Apache

Crearemos un archivo de host virtual de Apache para OxOffice Online.

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

Ingresamos el siguiente texto en el archivo. Sustituyendo el nombre de dominio que utilizamos para OxOffice Online. No debes olvidar crear un registro A para este subdominio en el DNS.

<VirtualHost *:80>
ServerName oficina.dominio.com.ar
Options -Indexes

ErrorLog "/var/log/apache2/oxool_error"

# Es necesario permitir las barras codificadas
AllowEncodedSlashes NoDecode

# mantenemos el host
ProxyPreserveHost On

# html estático, js, imágenes, etc. servidos desde oxool
# loleaflet es la parte cliente de OxOffice Online
ProxyPass /loleaflet http://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse /loleaflet http://127.0.0.1:9980/loleaflet

# URL de descubrimiento de WOPI
ProxyPass /hosting/discovery http://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery http://127.0.0.1:9980/hosting/discovery

# Capacidades
ProxyPass /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities

# Websocket principal
ProxyPassMatch "/lool/(.*)/ws$" ws://127.0.0.1:9980/lool/$1/ws nocanon

# Consola de administración de websocket
ProxyPass /lool/adminws ws://127.0.0.1:9980/lool/adminws

# Operaciones de descarga como, presentación en pantalla completa y carga de imágenes
ProxyPass /lool http://127.0.0.1:9980/lool
ProxyPassReverse /lool http://127.0.0.1:9980/lool

</VirtualHost>

Cerramos y guardamos el archivo. Para poder procesar el tráfico, necesitamos habilitar algunos módulos de Apache.

sudo a2enmod proxy proxy_wstunnel proxy_http

Habilite este host virtual con el siguiente comando:

sudo a2ensite oxool.conf

Luego recargamos la configuración de Apache.

sudo systemctl restart apache2
Nginx

Creamos un archivo de host virtual para OxOffice Online.

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

Ingresamos el siguiente texto en el archivo. Sustituyendo el nombre de dominio y sin olvidar crear un registro A para este nombre de dominio.

servidor {
listen 80;
listen [::]:80;
nombre_servidor oxool.ejemplo.com.ar;

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

# archivos estáticos
location ^~ /loleaflet {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}

# URL de descubrimiento WOPI
location ^~ /hosting/discovery {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}

# Capacidades
location ^~ /hosting/capabilities {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}

# websocket principal
location ~ ^/lool/(.*)/ws$ {
proxy_pass http://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Actualización";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}

# descarga, presentación y subida de imágenes
location ~ ^/lool {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}

# websocket de la consola de administración
location ^~ /lool/adminws {
proxy_pass http://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Actualización";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
}

Cerramos y guardamos el archivo. Luego probamos las configuraciones de Nginx.

sudo nginx -t

Si la prueba es exitosa, recargamos el servidor Nginx.

sudo systemctl reload nginx

Obtener e instalar certificados TLS

Dado que en otro artículo se explica cómo instalar, configurar y poner en marcha Apache con el módulo mod_md no vamos a ahondar sobre el tema en esta oportunidad.

Instalar Nextcloud 20 en Ubuntu 18.04

Instala los paquetes de Apache y PHP requeridos por el núcleo de Nextcloud (deberás contar con una base de datos como MariaDB o PostgreSQL y el paquete de extensión PHP correspondiente)

sudo apt update
sudo apt upgrade -y

Paquetes de software necesarios para el núcleo de Nextcloud

sudo apt install apache2 libapache2-mod-php7.2 php7.2-common php7.2-curl php7.2-xml php7.2-gd php7.2-json php7.2-mbstring php7.2-zip sqlite3 php7.2-sqlite3 php7.2-bz2

Si bien no es necesaria, la instalación de estos paquetes adicionales puede hacer que Nextcloud funcione mejor o agregar nuevas funcionalidades.

sudo apt install php7.2-intl php7.2-ldap php-smbclient php7.2-imap php7.2-bcmath php7.2-gmp php-imagick

Descarga y descomprime Nextcloud 20 (al momento de escribir este artículo, la última versión es 20.0.8, verifica si hay una versión más nueva cuando lo instales)

cd /var/www/html
sudo wget --no-check-certificate https://download.nextcloud.com/server/releases/nextcloud-20.0.8.zip
sudo apt install unzip -y
sudo unzip nextcloud-20.0.8.zip
sudo chown www-data.www-data nextcloud -R
sudo systemctl restart apache2

Conéctate a Nextcloud y completa la configuración básica

Ingresa a http://ip-servidor/nextcloud
Agrega una cuenta de administrador → ingresa [nombre de usuario] y [contraseña] → haz clic directamente en [finalizar configuración]

Configura la conexión entre Nextcloud y OxOOL Community Edition (v3.7.17 es la última versión de richdocuments al escribir este documento. Comprueba si hay una versión más reciente cuando lo instales. Además, Nextcloud 20 no es compatible con v4.0 o versión más reciente, así que busca la serie v3.7)

cd /var/www/html
sudo wget --no-check-certificate https://github.com/nextcloud/richdocuments/releases/download/v3.7.17/richdocuments.tar.gz
sudo tar zxvf richdocuments.tar.gz -C /var/www/html/nextcloud/apps/
sudo chown www-data.www-data nextcloud -R

Luego, inicia sesión en Nextcloud como administrador:

Haz clic en [Nombre de usuario] en la esquina superior derecha de la pantalla → [+ Aplicaciones]
Busca Collabora Online en el lado izquierdo de la pantalla, seleccione [Activar] → ingrese la contraseña del administrador del sistema

Una vez activada esta aplicación, vamos a la configuración de Nextcloud. Haz clic en la pestaña Collabora Online de la izquierda. Tenemos que seleccionar «Use your own server» e introducir el nombre de dominio de nuestro OxOffice Online incluyendo el prefijo https://, luego haz clic en el botón «Save».

Si prefieres, puedes hacer esto mismo desde a la terminal para ejecutar los siguientes comandos:

cd /var/www/html/nextcloud
sudo -u www-data php occ config:app:set richdocuments wopi_url --value="http://ip-servidor:9980"

Tras completar la configuración, cuando hagas clic en el botón de añadir (+) en Nextcloud, podrás crear documentos de texto, hojas de cálculo y presentaciones directamente desde tu navegador web.

La consola de administración de OxOOL está disponible en https://oficina.dominio.com.ar/loleaflet/dist/admin/admin.html. Es necesario introducir admin como nombre de usuario y contraseña.

La clave se puede modificar desde el archivo nano /etc/oxool/oxool.xml

En la sección

<admin_console desc="Web admin console settings.">
   <enable desc="Enable the admin console functionality" type="bool" default="true">true</enable>
   <enable_pam desc="Enable admin user authentication with PAM" type="bool" default="false">false</enable_pam>
   <username desc="The username of the admin console. Ignored if PAM is enabled.">admin</username>
   <password desc="The password of the admin console. Deprecated on most platforms. Instead, use PAM or loolconfig to set up a secure password.">admin</password>
</admin_console>

O se puede deshabilitar la consola completamente en la misma sección.

El archivo /etc/oxool/oxool.xml contiene distintos parámetros que nos puede interesar moficar y/o ajustar. Por ejemplo, los idiomas soportados, la ruta del archivo de registro o la lista de host permitidos, entre otros.

 

Con información de docs.ossii.com.tw