Como probablemente sepa, Nextcloud es una solución de almacenamiento en la nube autohospedada y OnlyOffice es un servidor de documentos de oficina en línea autohospedado. Este tutorial le mostrará cómo integrar OnlyOffice con Nextcloud , por lo que podrá editar documentos de oficina (DOCX, XLSX, PPTX, etc.) directamente desde la interfaz web de NextCloud.
Característica de la aplicación de integración Nextcloud OnlyOffice
- Editor de texto completo disponible en línea con todas las funciones de los editores de escritorio.
- 100% de fidelidad de vista, conversión, impresión y paginación.
- Le permite agregar enlaces, tablas, gráficos, insertar imágenes, formas automáticas, fórmulas, objetos de texto y manipularlos, crear listas numeradas o con viñetas.
- Edición colaborativa en tiempo real con sus compañeros de equipo:muestre los cambios al instante o solo después de guardarlos. Utilice los comentarios y el chat integrado para revisar y realizar un seguimiento de los cambios.
- Admite la edición y el almacenamiento de archivos DOCX, XLSX, PPTX y TXT. También puede guardar el archivo en otros formatos como ODT, ODS, ODP, DOC, XLS, PPT, PPS, EPUB, RTF, HTML, HTM.
- Totalmente compatible con los formatos Office Open XML:.docx, .xlsx, .pptx
- Guarda automáticamente tus archivos, para que no pierdas tu trabajo.
- Admite caracteres latinos, CJK (chino, japonés, coreano).
Requisitos
El servidor de documentos de OnlyOffice requiere al menos una CPU de 2 núcleos y 2 GB de RAM. Para que funcione sin problemas con Nextcloud, recomiendo usar un servidor con una CPU de 4 núcleos y 4 GB de RAM. Puedes comprar un poderoso VPS de Contabo con muy poco costo. Si hay muchos usuarios, debería considerar actualizar las especificaciones del servidor.
Contabo tiene centros de datos solo en Alemania. Si necesita un VPS alojado en los EE. UU., le recomiendo Turnkey Internet, que ofrece una CPU de 4 núcleos, VPS de 8 GB de RAM por 9,99 USD/mes.
Para completar esta guía, debe tener un servidor Nextcloud en funcionamiento. Si aún no lo ha hecho, lea primero el siguiente artículo para configurar el servidor Nextcloud.
- Instalar NextCloud en Ubuntu 18.04 con Nginx (LEMP Stack)
Luego lea las siguientes instrucciones para integrar OnlyOffice y Nextcloud. El servidor de documentos OnlyOffice y el servidor Nextcloud se pueden instalar en dos hosts diferentes. Comencemos.
Paso 1:Instale el servidor de documentos ONLYOFFICE en Ubuntu
El servidor de documentos OnlyOffice depende de PostgreSQL, Node.js, Redis Server, RabbitMQ server y Nginx. Los siguientes pasos se prueban en un servidor Ubuntu 18.04 pero también debería ser aplicable a las distribuciones de Linux en la familia Debian.
Instalar PostgreSQL desde el repositorio de Ubuntu
sudo apt install postgresql
Luego crea el onlyoffice
base de datos.
sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"
Crea la onlyoffice
usuario.
sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
Otorgar permiso.
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
Nota :Tanto el nombre de usuario como la contraseña deben ser onlyoffice
.
Instalar NodeJS desde el repositorio oficial
El servidor de documentos de OnlyOffice requiere la versión 8.12.0+ de nodejs, pero la versión en el repositorio de Ubuntu está desactualizada, por lo que necesitaremos instalar la última versión LTS (12.13.1) de Node.js desde el repositorio ascendente.
Agregue el repositorio Node.js.
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
Instale Node.js.
sudo apt install nodejs -y
Verifique la versión de Node.js.
node -v
Salida de muestra:
v12.13.1
Instalar servidor Redis y Rabbitmq
sudo apt install redis-server rabbitmq-server
Comprueba su estado.
systemctl status redis-server systemctl status rabbitmq-server
Debería ver que están activos (en ejecución) . Si rabbitmq-server
no se pudo iniciar, eso se debe principalmente a la falta de memoria en la máquina o al nombre de host no válido. El servidor Redis escucha en 127.0.0.1:6379
. RabbitMQ escucha en 0.0.0.0:25672
y 0.0.0.0:4369
Instalar servidor de documentos OnlyOffice
Agregue el repositorio de OnlyOffice con el siguiente comando.
echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
Importar clave pública de OnlyOffice.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
Actualice el índice del paquete local e instale el servidor de documentos de OnlyOffice. Tenga en cuenta que onlyoffice-documentserver
el paquete instalará nginx-extras
como una dependencia, por lo que si se está ejecutando un servidor web Apache, primero debe detenerlo.
sudo apt update sudo apt install onlyoffice-documentserver
Durante el proceso de instalación, se le pedirá que ingrese la contraseña de PostgreSQL para onlyoffice. Ingrese "solo oficina" (sin comillas dobles).
También debe aceptar los términos de la licencia de Microsoft para poder instalar fuentes principales TrueType de Microsoft.
Se instalará un bloque de servidor Nginx como /etc/nginx/conf.d/ds.conf
. (En realidad es un enlace simbólico a /etc/onlyoffice/documentserver/nginx/ds.conf
.) El servidor de documentos de OnlyOffice es una aplicación web de nodejs y Nginx actúa como proxy inverso. /var/www/onlyoffice/documentserver/
es el directorio raíz web.
Una vez finalizada la instalación, ingrese la dirección IP pública de su servidor en el navegador web, debería ver "Document Server se está ejecutando"
Para verificar el número de versión del servidor de documentos, puede usar el siguiente comando.
apt search onlyoffice-documentserver
Salida de muestra.
onlyoffice-documentserver/squeeze,now 5.4.1-39 amd64 [installed] online viewers and editors for text, spreadsheet and presentation files.
Paso 2:habilitar HTTPS para el servidor de documentos
Para conectar NextCloud al servidor de documentos de OnlyOffice, este último debe ejecutarse en modo HTTPS (tanto el servidor de Nextcloud como los navegadores de los usuarios deberán ponerse en contacto con el servidor de documentos). Los siguientes pasos muestran cómo obtener e instalar el certificado TLS de Let's Encrypt.
Primero, necesitamos editar el archivo de bloque del servidor OnlyOffice Nginx.
sudo nano /etc/nginx/conf.d/ds.conf
Agregamos una directiva server_name como se muestra a continuación. No olvide establecer un registro DNS A para onlyoffice.your-domain.com
.
include /etc/nginx/includes/http-common.conf; server { listen 0.0.0.0:80; listen [::]:80 default_server; server_tokens off; server_name onlyoffice.your-domain.com; include /etc/nginx/includes/ds-*.conf; }
Guarde y cierre el archivo. Vuelva a cargar Nginx para que los cambios surtan efecto.
sudo systemctl reload nginx
Luego instale el cliente certbot (Let's Encrypt) y el complemento Nginx.
sudo apt install certbot python3-certbot-nginx
A continuación, ejecute el siguiente comando para obtener un certificado TLS gratuito mediante el complemento de Nginx.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d onlyoffice.your-domain.com
donde:
--nginx
:Use el complemento nginx.--agree-tos
:Acepto los términos del servicio.--redirect
:Forzar HTTPS por redirección 301.--hsts
: Agregue el encabezado Strict-Transport-Security a cada respuesta HTTP. Obligar al navegador a usar siempre TLS para el dominio. Protege contra la eliminación de SSL/TLS.--staple-ocsp
: Habilita el grapado OCSP. Se grapa una respuesta OCSP válida al certificado que ofrece el servidor durante TLS.
En unos segundos, verá un mensaje como el siguiente, lo que significa que el certificado TLS se obtuvo con éxito.
Visita https://onlyoffice.your-domain.com
en el navegador web para verificar que el servidor de documentos de OnlyOffice se está ejecutando correctamente en modo HTTPS.
Paso 3:Instale la aplicación de integración Nextcloud OnlyOffice
Inicie sesión en la interfaz web de Nextcloud como administrador, luego vaya a la página de aplicaciones de Nextcloud, haga clic en Office & Text
pestaña en el panel izquierdo. Encontrará la aplicación OnlyOffice. Descárgalo y habilítalo.
Después de eso, vaya a la página de Configuración de Nextcloud, seleccione ONLYOFFICE
en el panel izquierdo e ingrese el nombre de dominio de OnlyOffice en el campo Dirección del servicio de edición de documentos.
Después de guardar la configuración anterior, debería poder crear documentos, hojas de cálculo y archivos de presentación dentro de Nextcloud haciendo clic en el botón más (+). Se abrirá una pestaña separada para editar.
También verá un nuevo elemento llamado "Abrir en OnlyOffice" en el menú contextual de los documentos de Office.
Instalación de OnlyOffice Document Server y Nextcloud en el mismo host
El servidor de documentos de OnlyOffice utiliza Nginx como servidor web.
Si tiene un servidor Nextcloud existente que se ejecuta con Nginx, entonces no hay daño a su servidor Nextcloud al instalar OnlyOffice en la misma máquina. Eliminará nginx-core
e instale nginx-extras
paquete, por lo que habrá un pequeño tiempo de inactividad, pero sus configuraciones estarán intactas.
Si tiene un servidor Nextcloud existente que se ejecuta con el servidor web Apache y desea instalar OnlyOffice en la misma máquina, entonces tiene dos opciones:
- Detenga/elimine Apache, use Nginx como servidor web para Nextcloud y OnlyOffice. Puede usar la configuración de Nextcloud Nginx en este tutorial.
- Configure Nginx como un proxy inverso para Apache.
Configuración de Nginx como proxy inverso para Apache
Si elige la segunda ruta, primero debe cambiar el número de puerto de Apache antes de instalar el servidor de documentos de OnlyOffice.
Edite el ports.conf
archivo.
sudo nano /etc/apache2/ports.conf
Encuentra la línea:
Listen 80
Cámbielo a un número de puerto diferente como 8180. Tenga en cuenta que no debe usar 8080 aquí porque el servidor de documentos de OnlyOffice necesita el puerto 8080 para iniciar su servicio de documentación.
Listen 8180
También debe cambiar el número de puerto SSL porque luego Nginx hará la terminación SSL. Encuentra la línea:
Listen 443
Cambie el número de puerto a algo como 4433.
Listen 4433
Guarde y cierre el archivo. A continuación, edite el archivo de host virtual para Nextcloud.
sudo nano /etc/apache2/sites-enabled/nextcloud.conf
La primera línea debería ser así:
<VirtualHost *:80>
Cambie el número de puerto a 8180.
<VirtualHost *:8180>
También deberíamos deshabilitar la redirección de HTTP a HTTPS agregando caracteres de comentario antes de las siguientes líneas. (Su servidor Nextcloud está usando una conexión HTTPS, ¿verdad?)
#RewriteEngine on #RewriteCond %{SERVER_NAME} =nextcloud.your-domain.com #RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
Y cambie el puerto de escucha SSL.
<VirtualHost *:443>
Cambie el puerto anterior a 4433. Guarde y cierre el archivo. Vuelva a cargar la configuración de Apache.
sudo systemctl reload apache2
Ahora Apache escucha en los puertos 8180 y 4433. Luego podemos seguir las instrucciones anteriores para instalar el servidor de documentos de OnlyOffice, que instalará Nginx en el proceso.
Una vez que el servidor de documentos OnlyOffice y Nginx estén instalados, cree un archivo de bloque de servidor Nginx para las solicitudes de proxy a Apache.
sudo nano /etc/nginx/conf.d/nextcloud-proxy.conf
Agregue las siguientes líneas al archivo. Reemplace el nombre de dominio con el suyo propio. La ruta para ssl_certificate
y ssl_certificate_key
es para los certificados emitidos por Let's Encrypt. Si usa un certificado emitido por otra CA, debe ingresar su propia ruta.
server { listen 80; server_name nextcloud.your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name nextcloud.your-domain.com; ssl_certificate /etc/letsencrypt/live/nextcloud.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nextcloud.your-domain.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.1 TLSv1.2; add_header Strict-Transport-Security max-age=15768000; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8180; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
La location / {...}
La sección redirige todas las solicitudes al servidor web Apache que escucha en el puerto 8180. Guarde y cierre el archivo. Luego pruebe la configuración de Nginx.
sudo nginx -t
Vuelva a cargar Nginx si la sintaxis es correcta.
sudo systemctl reload nginx
Ahora debería poder visitar su servidor Nextcloud como de costumbre, sin agregar un número de puerto en la URL. Si usa el siguiente comando cURL para obtener el encabezado HTTP, debería ver que el servidor front-end es Nginx.
curl -I https://nextcloud.your-domain.com
Salida de muestra:
HTTP/1.1 302 Found Server: nginx/1.11.9 Date: Tue, 14 Mar 2017 08:55:30 GMT Content-Type: text/html; charset=UTF-8
Reducción de la sobrecarga de DNS y HTTPS
Si Nextcloud y OnlyOffice están instalados en el mismo host, Nextcloud y OnlyOffice pueden comunicarse entre sí localmente, sin tener que consultar el nombre DNS público y establecer una conexión HTTPS.
Primero, debe crear un bloque de servidor Nginx que escuche en el host local para Nextcloud y OnlyOffice. Para OnlyOffice, puede editar el /etc/nginx/conf.d/ds.conf
archivo
sudo nano /etc/nginx/conf.d/ds.conf
Y agregue el siguiente bloque de servidor. Tenga en cuenta que este bloque de servidor escucha en 127.0.0.1:80
y usa onlyoffice-document-server
como nombre_servidor.
#HTTP host for internal services server { listen 127.0.0.1:80; listen [::1]:80; server_name onlyoffice-document-server; server_tokens off; include /etc/nginx/includes/ds-*.conf; }
Guarde y cierre el archivo. Luego puede editar el archivo de configuración de Nextcloud Nginx.
sudo nano /etc/nginx/conf.d/nextcloud.conf
Y agregue el siguiente bloque de servidor. También escucha en 127.0.0.1:80
y usa nextcloud
como nombre_servidor.
server { listen 127.0.0.1:80; server_name nextcloud; # Add headers to serve security related headers add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; #I found this header is needed on Ubuntu, but not on Arch Linux. add_header X-Frame-Options "SAMEORIGIN"; # Path to the root of your installation root /usr/share/nginx/nextcloud/; access_log /var/log/nginx/nextcloud.access; error_log /var/log/nginx/nextcloud.error; location = /robots.txt { allow all; log_not_found off; access_log off; } # The following 2 rules are only needed for the user_webfinger app. # Uncomment it if you're planning to use this app. #rewrite ^/.well-known/host-meta /public.php?service=host-meta last; #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json # last; location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } location ~ /.well-known/acme-challenge { allow all; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location / { rewrite ^ /index.php$uri; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~* \.(?:css|js)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; # Add headers to serve security related headers (It is intended to # have those duplicated to the ones above) add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; # Optional: Don't log access to assets access_log off; } location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Guarde y cierre el archivo. Pruebe la configuración de Nginx, luego vuelva a cargar Nginx para que los cambios surtan efecto.
sudo nginx -t sudo systemctl reload nginx
A continuación, debemos agregar un registro DNS local en /etc/hosts
archivo como el siguiente, para que el servidor pueda encontrar la dirección de onlyoffice-document-server
y nextcloud
.
127.0.0.1 localhost onlyoffice-document-server nextcloud
Guarde y cierre el archivo.
También necesitamos editar Nextcloud config.php
archivo.
sudo nano /usr/share/nginx/nextcloud/config/config.php
Añadir nextcloud
en la lista de dominios de confianza, como se muestra a continuación.
'trusted_domains' => array ( 0 => 'nextcloud.linuxbabe.com', 1 => 'nextcloud', ),
Guarde y cierre el archivo.
Ahora regrese a las páginas de configuración de la interfaz web de Nextcloud, haga clic en advanced server settings
, ingrese la dirección interna para el servidor de documentos de OnlyOffice y Nextcloud.
- http://onlyoffice-document-server/
- http://nextcloud/
Haz clic en Guardar y listo.
Cómo actualizar OnlyOffice Document Server
Cuando sale una nueva versión del servidor de documentos de OnlyOffice, simplemente usa el administrador de paquetes apt para actualizar a la nueva versión.
sudo apt update;sudo apt upgrade
Tenga en cuenta que la nueva versión anulará sus personalizaciones en /etc/nginx/conf.d/ds.conf
expediente. Recomiendo hacer una copia de seguridad de este archivo con el siguiente comando, para que pueda restaurar fácilmente sus configuraciones personalizadas.
cat /etc/nginx/conf.d/ds.conf | sudo tee /etc/nginx/conf.d/ds.conf.backup