OxOOL (OxOffice Online) Community Edition¶
OxOffice Online es una suite ofimática en línea de código abierto, autoalojable y basada en LibreOffice Online.
Sus características incluyen:
Edición básica y compartida
Alta fidelidad, representación WYSIWYG
Soporta el estándar mundial Open Document Format e incluso formatos privativos como DOC/DOCX, PPT/PPTX, XLS/XLSX
Está disponible para RockyLinux 8 y Ubuntu 24.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 el mismo servidor o en dos diferentes.
Instalación¶
Ejecutamos estos comandos para instalar los programas necesarios junto con OxOOL Community Edition
apt update
apt upgrade -y
apt install nano openssh-server net-tools curl -y
# Chooese yes if you get any service restarting prompts
curl -o /etc/apt/keyrings/OSSII.asc http://www.oxoffice.com.tw/deb/OSSII.key
curl -o /etc/apt/sources.list.d/oxool-community-v5-noble.list http://www.oxoffice.com.tw/deb/oxool-community-v5-noble.list
apt update
apt install oxool -y
Definimos que el servicio OxOOL Community Edition se inicie al arrancar y luego reiniciamos
systemctl enable oxool
reboot
Comprobamos si OxOOL Community Edition inicia normalmente
netstat -tlnp
Deberías obtener un resultado similar a este:
tcp6 0 0 :::9980 :::\* LISTEN 644/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.
Con SSL o sin SSL¶
La regla del punto de conexión se puede resumir como
wss se conecta sólo en https
ws se conecta en http
y viceversa:
https sólo acepta wss
http sólo acepta ws
Apache¶
Para poder procesar el tráfico, es necesario habilitar los siguientes módulos: proxy, proxy_connect, proxy_http, proxy_wstunnel. Para ello
a2enmod proxy proxy_connect proxy_http proxy_wstunnel
Crearemos un host virtual y, dependiendo de la necesidad, utilizaremos una de las siguientes configuraciones de ejemplo:
nano /etc/apache2/sites-available/oxool.conf
Sustituiremos el nombre de dominio que utilizamos para OxOffice Online. No debes olvidar crear un registro A para este subdominio en el DNS.
1. SSL en ambos extremos (Apache):¶
La config correspondiente en /etc/oxool/oxoolwsd.xml es:
<ssl desc="**SSL settings**">
<enable type="bool">true</enable>
</ssl>
Host virtual Apache
<VirtualHost *:443>
ServerName odfweb.dominio.edu.ar:443
Options -Indexes
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
SSLProxyEngine On
ProxyPreserveHost On
# cert is issued for collaboraonline.example.com and we proxy to localhost
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
oxool_communitty = «oxoolhost»:9980
# static html, js, images, etc. served from oxoolwsd
# browser is the client part of Collabora Online
ProxyPass /browser https://${oxool\_communitty}/browser retry=0
ProxyPassReverse /browser https://${oxool\_communitty}/browser
# WOPI discovery URL
ProxyPass /hosting/discovery https://${oxool\_communitty}/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery https://${oxool\_communitty}/hosting/discovery
# Capabilities
ProxyPass /hosting/capabilities https://${oxool\_communitty}/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities https://${oxool\_communitty}/hosting/capabilities
# Main websocket
ProxyPassMatch "/(c|ox)ool/(.\*)/ws$" wss://${oxool\_communitty}/oxool/$1/ws nocanon
# Admin Console websocket
ProxyPass /(c|l)ool/adminws wss://${oxool\_communitty}/oxool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /(c|ox)ool https://${oxool\_communitty}/oxool
ProxyPassReverse /(c|ox)ool https://${oxool\_communitty}/oxool
# Compatibility with integrations that use the /lool/convert-to endpoint
ProxyPass /lool https://${oxool\_communitty}/oxool
ProxyPassReverse /lool https://${oxool\_communitty}/oxool
</VirtualHost>
2. SSL termina en el proxy (Apache):¶
La config correspondiente en /etc/oxool/oxoolwsd.xml es:
<ssl desc="**SSL settings**">
<enable type="bool">false</enable>
<termination>true</termination>
</ssl>
Host virtual Apache
<VirtualHost *:443>
ServerName odfweb.dominio.edu.ar:443
Options -Indexes
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
ProxyPreserveHost On
# static html, js, images, etc. served from oxoolwsd
# browser is the client part of Collabora Online
ProxyPass /browser http://${oxool\_communitty}/browser retry=0
ProxyPassReverse /browser http://${oxool\_communitty}/browser
# WOPI discovery URL
ProxyPass /hosting/discovery http://${oxool\_communitty}/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery http://${oxool\_communitty}/hosting/discovery
# Capabilities
ProxyPass /hosting/capabilities http://${oxool\_communitty}/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities http://${oxool\_communitty}/hosting/capabilities
# Main websocket
ProxyPassMatch "/(c|ox)ool/(.\*)/ws$" ws://${oxool\_communitty}/oxool/$1/ws nocanon
# Admin Console websocket
ProxyPass /(c|l)ool/adminws ws://${oxool\_communitty}/oxool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /(c|ox)ool http://${oxool\_communitty}/oxool
ProxyPassReverse /(c|ox)ool http://${oxool\_communitty}/oxool
# Compatibility with integrations that use the /lool/convert-to endpoint
ProxyPass /lool http://${oxool\_communitty}/oxool
ProxyPassReverse /lool http://${oxool\_communitty}/oxool
</VirtualHost>
Guardamos el archivo y habilitamos este host virtual:
sudo a2ensite oxool.conf
Luego recargamos la configuración de Apache.
systemctl restart apache2
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.
Nginx¶
Crearemos un host virtual y, dependiendo de la necesidad, utilizaremos una de las siguientes configuraciones de ejemplo:
nano /etc/nginx/sites-available/oxool.conf
Sustituiremos el nombre de dominio que utilizamos para OxOffice Online. No debes olvidar crear un registro A para este subdominio en el DNS.
1. SSL en ambos extremos (Nginx):¶
La config correspondiente en /etc/oxool/oxoolwsd.xml es:
<ssl desc="**SSL settings**">
<enable type="bool">true</enable>
</ssl>
Bloque server Nginx
upstream oxool-community {
server «oxoolhost»:9980;
keepalive 32;
}
# static files
location ^~ /browser {
proxy\_pass https://oxool-community;
proxy\_set\_header Host $host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy\_pass https://oxool-community;
proxy\_set\_header Host $host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy\_pass https://oxool-community;
proxy\_set\_header Host $host;
}
# main websocket
location ~ ^/(c|ox)ool/(.\*)/ws$ {
proxy\_pass https://oxool-community;
proxy\_set\_header Upgrade $http\_upgrade;
proxy\_set\_header Connection "Upgrade";
proxy\_set\_header Host $host;
proxy\_read\_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy\_pass https://oxool-community;
proxy\_set\_header Host $host;
}
# Admin Console websocket
location ^~ /(c|ox)ool/adminws {
proxy\_pass https://oxool-community;
proxy\_set\_header Upgrade $http\_upgrade;
proxy\_set\_header Connection "Upgrade";
proxy\_set\_header Host $host;
proxy\_read\_timeout 36000s;
}
}
2. SSL termina en el proxy (Nginx):¶
La config correspondiente en /etc/oxool/oxool.xml es:
<ssl desc="**SSL settings**">
<enable type="bool">false</enable>
<termination>true</termination>
</ssl>
Bloque server Nginx
upstream oxool-community {
server «oxoolhost»:9980;
keepalive 32;
}
server {
listen 443 ssl;
server\_name odfweb.dominio.edu.ar;
ssl\_certificate /ruta/a/certificado\_ssl;
ssl\_certificate\_key /ruta/a/llave\_certificado\_ssl;
proxy\_set\_header Host $host;
proxy\_set\_header X-Forwarded-For $remote\_addr;
proxy\_set\_header X-Forwarded-Proto $scheme;
proxy\_read\_timeout 36000s;
# Archivos estáticos
location ^~ /browser {
proxy\_pass http://oxool-community;
proxy\_set\_header Host $host;
}
# Capacidades y descubrimiento WOPI
location ~ ^/hosting/(discovery|capabilities) {
proxy\_pass http://oxool-community;
proxy\_set\_header Host $host;
}
# main websocket
location ~ ^/(oxool|cool)/(.\*)/?$ {
proxy\_pass http://oxool-community;
proxy\_set\_header Host $host;
proxy\_set\_header X-Forwarded-For $remote\_addr;
proxy\_set\_header X-Forwarded-Proto $scheme;
proxy\_http\_version 1.1;
proxy\_set\_header Upgrade $http\_upgrade;
proxy\_set\_header Connection "upgrade";
proxy\_read\_timeout 36000s;
proxy\_redirect off;
}
# Mejora desempeño de recursos estáticos
location ~\* \\.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
proxy\_pass http://oxool-community;
proxy\_set\_header Host $host;
expires 30d;
add\_header Cache-Control "public, immutable";
access\_log off;
}
Guardamos el archivo y verificamos la configuración de Nginx.
nginx -t
Si no hay errores, recargamos Nginx.
systemctl reload nginx
Conexión a Nextcloud¶

Inicia sesión en Nextcloud como administrador: Hacemos clic en Nombre de usuario en la esquina superior derecha de la pantalla → + Aplicaciones Buscamos Nextcloud Office en el lado izquierdo de la pantalla, seleccionamos Activar → ingrese la contraseña del administrador del sistema. Una vez activada esta aplicación, vamos a la configuración de Nextcloud. Hacemos clic en la pestaña Nextcloud Office de la izquierda. Tenemos que seleccionar «Use su propio servidor» e introducir el nombre de dominio de nuestro OxOffice Online incluyendo el prefijo https://, luego hacemos clic en el botón Save.
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://odfweb.dominio.edu.ar/browser/dist/admin/admin.html. La primera vez resulta necesario introducir admin como nombre de usuario y contraseña.

La clave se puede modificar desde el menu System ubicado arriba a la derecha. En caso de no querer utilizarla, se puede deshabilitarla completamente editando el archivo /etc/oxool/oxoolwsd.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 oxoolconfig to set up a secure password.">admin</password>
<logging desc="Log admin activities irrespective of logging.level">
<admin_login desc="log when an admin logged into the console" type="bool" default="true">true</admin_login>
<metrics_fetch desc="log when metrics endpoint is accessed and metrics endpoint authentication is enabled" type="bool" default="true">true</metrics_fetch>
<monitor_connect desc="log when external monitor gets connected" type="bool" default="true">true</monitor_connect>
<admin_action desc="log when admin does some action for example killing a process" type="bool" default="true">true</admin_action>
</logging>
</admin_console>
El archivo /etc/oxool/oxoolwsd.xml contiene distintos parámetros que nos puede interesar modificar 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