GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come integrare OnlyOffice con NextCloud su Ubuntu

Come probabilmente saprai, Nextcloud è una soluzione di archiviazione cloud self-hosted e OnlyOffice è un server di documenti per ufficio online self-hosted. Questo tutorial ti mostrerà come integrare OnlyOffice con Nextcloud , così potrai modificare i documenti dell'ufficio (DOCX, XLSX, PPTX, ecc.) direttamente dall'interfaccia web di NextCloud.

Funzionalità dell'app di integrazione Nextcloud OnlyOffice

  • Editor di testo completo disponibile online con tutte le funzionalità degli editor desktop.
  • 100% fedeltà di visualizzazione, conversione, stampa e impaginazione.
  • Ti permette di aggiungere collegamenti, tabelle, grafici, inserire immagini, forme automatiche, formule, oggetti di testo e manipolarli, creare elenchi puntati o numerati.
  • Modifica collaborativa in tempo reale con i tuoi compagni di squadra:mostra le modifiche all'istante o solo dopo aver salvato. Usa i commenti e la chat integrata per rivedere e tenere traccia delle modifiche.
  • Supporta la modifica e il salvataggio di file DOCX, XLSX, PPTX, TXT. Puoi anche salvare il file in altri formati come ODT, ODS, ODP, DOC, XLS, PPT, PPS, EPUB, RTF, HTML, HTM.
  • Completamente compatibile con i formati Office Open XML:.docx, .xlsx, .pptx
  • Salva automaticamente i tuoi file, così non perderai il tuo lavoro.
  • Supporta i caratteri latini, CJK (cinese, giapponese, coreano).

Prerequisiti

Il server di documenti OnlyOffice richiede almeno una CPU a 2 core e 2 GB di RAM. Per farlo funzionare senza problemi con Nextcloud, consiglio di utilizzare un server con una CPU a 4 core e 4 GB di RAM. Puoi acquistare un potente VPS da Contabo con un costo molto basso. Se ci sono molti utenti, dovresti considerare di aggiornare le specifiche del server.

Contabo ha data center solo in Germania. Se hai bisogno di un VPS ospitato negli Stati Uniti, ti consiglio Turnkey Internet, che offre una CPU a 4 core, 8 GB di RAM VPS per 9,99 USD/mese.

Per completare questa guida, è necessario disporre di un server Nextcloud funzionante. Se non l'hai già fatto, leggi il seguente articolo per configurare prima il server Nextcloud.

  • Installa NextCloud su Ubuntu 18.04 con Nginx (LEMP Stack)

Quindi leggi le seguenti istruzioni per integrare OnlyOffice e Nextcloud. Il server di documenti OnlyOffice e il server Nextcloud possono essere installati su due host diversi. Iniziamo.

Passaggio 1:installa ONLYOFFICE Document Server su Ubuntu

Il server di documenti OnlyOffice dipende da PostgreSQL, Node.js, Redis Server, RabbitMQ server e Nginx. I seguenti passaggi vengono testati su un server Ubuntu 18.04 ma dovrebbe essere applicabile anche alle distribuzioni Linux della famiglia Debian.

Installa PostgreSQL dal repository di Ubuntu

sudo apt install postgresql

Quindi crea il onlyoffice banca dati.

sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"

Crea il onlyoffice utente.

sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"

Concedi l'autorizzazione.

sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"

Nota :Sia il nome utente che la password devono essere onlyoffice .

Installa NodeJS dal repository ufficiale

OnlyOffice document server richiede nodejs versione 8.12.0+, ma la versione nel repository Ubuntu è obsoleta, quindi dovremo installare l'ultima versione LTS (12.13.1) di Node.js dal repository upstream.

Aggiungi il repository Node.js.

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

Installa Node.js.

sudo apt install nodejs -y

Controlla la versione di Node.js.

node -v

Esempio di output:

v12.13.1

Installa il server Redis e Rabbitmq

sudo apt install redis-server rabbitmq-server

Controlla il loro stato.

systemctl status redis-server

systemctl status rabbitmq-server

Dovresti vedere che sono attivi (in esecuzione) . Se rabbitmq-server non è stato avviato, principalmente a causa della memoria insufficiente sulla macchina o del nome host non valido. Il server Redis è in ascolto su 127.0.0.1:6379 . RabbitMQ è in ascolto su 0.0.0.0:25672 e 0.0.0.0:4369

Installa solo server di documenti Office

Aggiungi il repository di OnlyOffice con il seguente comando.

echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list

Importa la chiave pubblica di OnlyOffice.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5

Aggiorna l'indice del pacchetto locale e installa il server di documenti OnlyOffice. Nota che il onlyoffice-documentserver il pacchetto installerà nginx-extras come dipendenza, quindi se un server Web Apache è in esecuzione, devi prima interromperlo.

sudo apt update

sudo apt install onlyoffice-documentserver

Durante il processo di installazione, ti verrà chiesto di inserire la password PostgreSQL per onlyoffice. Inserisci "onlyoffice" (senza virgolette).

Devi anche accettare i termini di licenza Microsoft per installare i caratteri TrueType Core di Microsoft.

Verrà installato un blocco del server Nginx come /etc/nginx/conf.d/ds.conf . (In realtà è un collegamento simbolico a /etc/onlyoffice/documentserver/nginx/ds.conf .) Il server di documenti OnlyOffice è un'applicazione Web nodejs e Nginx funge da proxy inverso. /var/www/onlyoffice/documentserver/ è la directory principale del Web.

Al termine dell'installazione, inserisci l'indirizzo IP pubblico del tuo server nel browser web, dovresti vedere "Document Server in esecuzione"

Per verificare il numero di versione del server di documenti, puoi utilizzare il comando seguente.

apt search onlyoffice-documentserver

Esempio di output.

onlyoffice-documentserver/squeeze,now 5.4.1-39 amd64 [installed]
  online viewers and editors for text, spreadsheet and presentation files.

Fase 2:abilitazione di HTTPS per il Document Server

Per connettere NextCloud al document server di OnlyOffice, quest'ultimo deve essere in esecuzione in modalità HTTPS (sia il server Nextcloud che i browser degli utenti dovranno entrare in contatto con il document server). I seguenti passaggi mostrano come ottenere e installare il certificato Let's Encrypt TLS.

Innanzitutto, dobbiamo modificare il file di blocco del server OnlyOffice Nginx.

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

Aggiungiamo una direttiva server_name come di seguito. Non dimenticare di impostare il record DNS A per 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;
}

Salva e chiudi il file. Ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

Quindi installa il client certbot (Let's Encrypt) e il plug-in Nginx.

sudo apt install certbot python3-certbot-nginx

Quindi, esegui il comando seguente per ottenere un certificato TLS gratuito utilizzando il plug-in Nginx.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d onlyoffice.your-domain.com

Dove:

  • --nginx :Usa il plugin nginx.
  • --agree-tos :Accetta i termini di servizio.
  • --redirect :Forza HTTPS tramite reindirizzamento 301.
  • --hsts : Aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP. Forzare il browser a utilizzare sempre TLS per il dominio. Difende dallo stripping SSL/TLS.
  • --staple-ocsp : Abilita la pinzatura OCSP. Una risposta OCSP valida viene pinzata al certificato offerto dal server durante TLS.

Entro pochi secondi, vedrai un messaggio come di seguito, il che significa che il certificato TLS è stato ottenuto con successo.

Visita https://onlyoffice.your-domain.com nel browser Web per verificare che OnlyOffice document server funzioni correttamente in modalità HTTPS.

Passaggio 3:installa l'app di integrazione Nextcloud OnlyOffice

Accedi all'interfaccia web di Nextcloud come amministratore, quindi vai alla pagina delle app Nextcloud, fai clic su Office & Text scheda nel riquadro di sinistra. Troverai l'app OnlyOffice. Scaricalo e abilitalo.

Successivamente, vai alla pagina Impostazioni Nextcloud, seleziona ONLYOFFICE scheda nel riquadro di sinistra e inserisci il nome di dominio per OnlyOffice nel campo Indirizzo del servizio di modifica dei documenti.

Dopo aver salvato l'impostazione di cui sopra, dovresti essere in grado di creare documenti, fogli di lavoro e file di presentazione all'interno di Nextcloud facendo clic sul pulsante più (+). Verrà aperta una scheda separata per la modifica.

Vedrai anche un nuovo elemento chiamato "Apri in OnlyOffice" nel menu contestuale dei documenti di Office.

Installazione di OnlyOffice Document Server e Nextcloud sullo stesso host

Il server di documenti OnlyOffice utilizza Nginx come server web.

Se hai un server Nextcloud esistente in esecuzione con Nginx, non ci sono danni al tuo server Nextcloud quando installi OnlyOffice sulla stessa macchina. Rimuoverà nginx-core e installa nginx-extras pacchetto, quindi ci sarà un po' di tempo di inattività, ma le tue configurazioni rimarranno intatte.

Se disponi di un server Nextcloud esistente in esecuzione con un server Web Apache e desideri installare OnlyOffice sulla stessa macchina, hai due scelte:

  1. Arresta/rimuovi Apache, usa Nginx come server web sia per Nextcloud che per OnlyOffice. Puoi utilizzare la configurazione di Nextcloud Nginx in questo tutorial.
  2. Configura Nginx come proxy inverso per Apache.

Configurazione di Nginx come proxy inverso per Apache

Se scegli il secondo percorso, devi prima modificare il numero di porta di Apache prima di installare il server di documenti OnlyOffice.

Modifica il ports.conf file.

sudo nano /etc/apache2/ports.conf

Trova la linea:

Listen 80

Cambialo con un numero di porta diverso come 8180. Nota che non dovresti usare 8080 qui perché il server di documenti OnlyOffice ha bisogno della porta 8080 per avviare il suo docservice.

Listen 8180

Dovresti anche cambiare il numero della porta SSL perché in seguito Nginx eseguirà la terminazione SSL. Trova la linea:

Listen 443

Cambia il numero di porta in qualcosa come 4433.

Listen 4433

Salva e chiudi il file. Quindi, modifica il file dell'host virtuale per Nextcloud.

sudo nano /etc/apache2/sites-enabled/nextcloud.conf

La prima riga dovrebbe essere così:

<VirtualHost *:80>

Cambia il numero di porta in 8180.

<VirtualHost *:8180>

Dovremmo anche disabilitare il reindirizzamento da HTTP a HTTPS aggiungendo caratteri di commento prima delle righe seguenti. (Il tuo server Nextcloud utilizza la connessione HTTPS, giusto?)

#RewriteEngine on
#RewriteCond %{SERVER_NAME} =nextcloud.your-domain.com
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

E cambia la porta di ascolto SSL.

<VirtualHost *:443>

Cambia la porta sopra in 4433. Salva e chiudi il file. Ricarica la configurazione di Apache.

sudo systemctl reload apache2

Ora Apache è in ascolto sulle porte 8180 e 4433. Possiamo quindi seguire le istruzioni precedenti per installare il server di documenti OnlyOffice, che installerà Nginx nel processo.

Una volta installati OnlyOffice document server e Nginx, crea un file di blocco del server Nginx per inoltrare le richieste ad Apache.

sudo nano /etc/nginx/conf.d/nextcloud-proxy.conf

Aggiungi le seguenti righe al file. Sostituisci il nome di dominio con il tuo. Il percorso per ssl_certificate e ssl_certificate_key è per i certificati emessi da Let's Encrypt. Se utilizzi un certificato emesso da un'altra CA, devi inserire il tuo percorso.

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;
        }
}

Il location / {...} la sezione reindirizza tutte le richieste al server Web Apache in ascolto sulla porta 8180. Salva e chiudi il file. Quindi testa la configurazione di Nginx.

sudo nginx -t

Ricarica Nginx se la sintassi è OK.

sudo systemctl reload nginx

Ora dovresti essere in grado di visitare il tuo server Nextcloud come al solito, senza aggiungere un numero di porta nell'URL. Se utilizzi il seguente comando cURL per recuperare l'intestazione HTTP, dovresti vedere che il server front-end è Nginx.

curl -I https://nextcloud.your-domain.com

Esempio di output:

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

Ridurre il sovraccarico DNS e HTTPS

Se Nextcloud e OnlyOffice sono installati sullo stesso host, Nextcloud e OnlyOffice possono dialogare tra loro in locale, senza dover interrogare il nome DNS pubblico e stabilire una connessione HTTPS.

Innanzitutto, devi creare un blocco server Nginx in ascolto sull'host locale per Nextcloud e OnlyOffice. Per OnlyOffice, puoi modificare /etc/nginx/conf.d/ds.conf file

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

E aggiungi il seguente blocco server. Nota che questo blocco server è in ascolto su 127.0.0.1:80 e utilizza onlyoffice-document-server come nome_server.

#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;
}

Salva e chiudi il file. Quindi puoi modificare il file di configurazione di Nextcloud Nginx.

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

E aggiungi il seguente blocco server. È anche in ascolto su 127.0.0.1:80 e utilizza nextcloud come nome_server.

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;
   }
}

Salva e chiudi il file. Testare la configurazione di Nginx, quindi ricaricare Nginx per rendere effettive le modifiche.

sudo nginx -t

sudo systemctl reload nginx

Successivamente, dobbiamo aggiungere un record DNS locale in /etc/hosts file come di seguito, in modo che il server possa trovare l'indirizzo per onlyoffice-document-server e nextcloud .

127.0.0.1 localhost onlyoffice-document-server nextcloud

Salva e chiudi il file.

Abbiamo anche bisogno di modificare il Nextcloud config.php file.

sudo nano /usr/share/nginx/nextcloud/config/config.php

Aggiungi nextcloud nell'elenco dei domini attendibili come di seguito.

  'trusted_domains' =>
  array (
    0 => 'nextcloud.linuxbabe.com',
    1 => 'nextcloud',
  ),

Salva e chiudi il file.

Ora torna alle pagine delle impostazioni dell'interfaccia web di Nextcloud, fai clic su advanced server settings , inserisci l'indirizzo interno per il server di documenti OnlyOffice e Nextcloud.

  • http://onlyoffice-document-server/
  • http://nextcloud/

Fai clic su Salva pulsante e il gioco è fatto.

Come aggiornare OnlyOffice Document Server

Quando esce una nuova versione di OnlyOffice document server, è sufficiente utilizzare il gestore di pacchetti apt per eseguire l'aggiornamento alla nuova versione.

sudo apt update;sudo apt upgrade

Nota che la nuova versione sovrascriverà le tue personalizzazioni in /etc/nginx/conf.d/ds.conf file. Ti consiglio di eseguire il backup di questo file con il seguente comando, così potrai ripristinare facilmente le tue configurazioni personalizzate.

cat /etc/nginx/conf.d/ds.conf | sudo tee /etc/nginx/conf.d/ds.conf.backup

Ubuntu
  1. Come configurare il server FTP con VSFTPD su Ubuntu 20.04

  2. Come integrare Alfresco con ONLYOFFICE Online Editor su Ubuntu 14.04

  3. Come installare NextCloud 13 su Ubuntu 16.04

  4. Come installare NextCloud 15 su Ubuntu 18.04

  5. Come integrare Collabora Online con Nextcloud su Ubuntu 20.04

Come installare NextCloud su Ubuntu 20.04 con Apache

Come gestire in remoto il server Ubuntu con SSH

Come configurare il server di posta elettronica con Plesk su Ubuntu 20.04

Come installare Nextcloud 13 su Ubuntu 16.04 con Nginx

Come integrare OnlyOffice con ownCloud

Come installare Nextcloud su Ubuntu 18.04 e 16.04