GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment intégrer OnlyOffice avec NextCloud sur Ubuntu

Comme vous le savez probablement, Nextcloud est une solution de stockage en nuage auto-hébergée et OnlyOffice est un serveur de documents de bureau en ligne auto-hébergé. Ce tutoriel vous montrera comment intégrer OnlyOffice avec Nextcloud , vous pourrez ainsi éditer des documents bureautiques (DOCX, XLSX, PPTX, etc.) directement depuis l'interface Web NextCloud.

Fonctionnalité de l'application d'intégration Nextcloud OnlyOffice

  • Éditeur de texte complet disponible en ligne avec toutes les fonctionnalités des éditeurs de bureau.
  • 100 % de fidélité d'affichage, de conversion, d'impression et de pagination.
  • Il vous permet d'ajouter des liens, des tableaux, des graphiques, d'insérer des images, des formes automatiques, des formules, des objets texte et de les manipuler, de créer des listes à puces ou numérotées.
  • Édition collaborative en temps réel avec vos coéquipiers :affichez les modifications instantanément ou uniquement après les avoir enregistrées. Utilisez les commentaires et le chat intégré pour examiner et suivre les modifications.
  • Prend en charge l'édition et l'enregistrement de fichiers DOCX, XLSX, PPTX, TXT. Vous pouvez également enregistrer le fichier dans d'autres formats tels que ODT, ODS, ODP, DOC, XLS, PPT, PPS, EPUB, RTF, HTML, HTM.
  • Entièrement compatible avec les formats Office Open XML :.docx, .xlsx, .pptx
  • Enregistrez automatiquement vos fichiers pour ne pas perdre votre travail.
  • Prend en charge les caractères latins, CJK (chinois, japonais, coréen).

Prérequis

Le serveur de documents OnlyOffice nécessite au moins un processeur à 2 cœurs et 2 Go de RAM. Pour le faire fonctionner correctement avec Nextcloud, je recommande d'utiliser un serveur avec un processeur 4 cœurs et 4 Go de RAM. Vous pouvez acheter un VPS puissant chez Contabo à très peu de frais. S'il y a beaucoup d'utilisateurs, vous devriez envisager de mettre à niveau les spécifications du serveur.

Contabo possède des centres de données en Allemagne uniquement. Si vous avez besoin d'un VPS hébergé aux États-Unis, je vous recommande Turnkey Internet, qui offre un processeur 4 cœurs, 8 Go de RAM VPS pour 9,99 USD/mois.

Pour compléter ce guide, vous devez disposer d'un serveur Nextcloud fonctionnel. Si vous ne l'avez pas déjà fait, veuillez lire l'article suivant pour configurer d'abord le serveur Nextcloud.

  • Installer NextCloud sur Ubuntu 18.04 avec Nginx (pile LEMP)

Lisez ensuite les instructions suivantes pour intégrer OnlyOffice et Nextcloud. Le serveur de documents OnlyOffice et le serveur Nextcloud peuvent être installés sur deux hôtes différents Commençons.

Étape 1 :Installez ONLYOFFICE Document Server sur Ubuntu

Le serveur de documents OnlyOffice dépend de PostgreSQL, Node.js, Redis Server, du serveur RabbitMQ et de Nginx. Les étapes suivantes sont testées sur un serveur Ubuntu 18.04 mais devrait également s'appliquer aux distributions Linux de la famille Debian.

Installer PostgreSQL à partir du référentiel Ubuntu

sudo apt install postgresql

Créez ensuite le onlyoffice base de données.

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

Créez le onlyoffice utilisateur.

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

Accorder l'autorisation.

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

Remarque  :Le nom d'utilisateur et le mot de passe doivent être onlyoffice .

Installer NodeJS à partir du dépôt officiel

Le serveur de documents OnlyOffice nécessite la version 8.12.0+ de nodejs, mais la version du référentiel Ubuntu est obsolète, nous devrons donc installer la dernière version LTS (12.13.1) de Node.js à partir du référentiel en amont.

Ajoutez le référentiel Node.js.

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

Installez Node.js.

sudo apt install nodejs -y

Vérifiez la version de Node.js.

node -v

Exemple de sortie :

v12.13.1

Installer le serveur Redis et Rabbitmq

sudo apt install redis-server rabbitmq-server

Vérifiez leur statut.

systemctl status redis-server

systemctl status rabbitmq-server

Vous devriez voir qu'ils sont actifs (en cours d'exécution) . Si rabbitmq-server n'a pas pu démarrer, c'est principalement à cause d'une mémoire insuffisante sur la machine ou d'un nom d'hôte invalide. Le serveur Redis écoute sur 127.0.0.1:6379 . RabbitMQ écoute sur 0.0.0.0:25672 et 0.0.0.0:4369

Installer le serveur de documents OnlyOffice

Ajoutez le référentiel OnlyOffice avec la commande suivante.

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

Importer la clé publique OnlyOffice.

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

Mettez à jour l'index de package local et installez le serveur de documents OnlyOffice. Notez que le onlyoffice-documentserver le paquet installera nginx-extras en tant que dépendance, donc si un serveur Web Apache est en cours d'exécution, vous devez d'abord l'arrêter.

sudo apt update

sudo apt install onlyoffice-documentserver

Au cours du processus d'installation, il vous sera demandé d'entrer le mot de passe PostgreSQL pour onlyoffice. Entrez "onlyoffice" (sans les guillemets doubles).

Vous devez également accepter les termes de la licence Microsoft pour installer les polices de base TrueType de Microsoft.

Un bloc de serveur Nginx sera installé en tant que /etc/nginx/conf.d/ds.conf . (C'est en fait un lien symbolique vers /etc/onlyoffice/documentserver/nginx/ds.conf .) Le serveur de documents OnlyOffice est une application Web nodejs et Nginx agit en tant que proxy inverse. /var/www/onlyoffice/documentserver/ est le répertoire racine du Web.

Une fois l'installation terminée, entrez l'adresse IP publique de votre serveur dans le navigateur Web, vous devriez voir "Document Server is running"

Pour vérifier le numéro de version du serveur de documents, vous pouvez utiliser la commande suivante.

apt search onlyoffice-documentserver

Exemple de sortie.

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

Étape 2 :Activer HTTPS pour le serveur de documents

Pour connecter NextCloud au serveur de documents OnlyOffice, ce dernier doit fonctionner en mode HTTPS (le serveur Nextcloud et les navigateurs des utilisateurs devront entrer en contact avec le serveur de documents). Les étapes suivantes montrent comment obtenir et installer le certificat Let's Encrypt TLS.

Tout d'abord, nous devons modifier le fichier de bloc du serveur OnlyOffice Nginx.

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

Nous ajoutons une directive server_name comme ci-dessous. N'oubliez pas de définir un enregistrement DNS A pour 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;
}

Enregistrez et fermez le fichier. Rechargez Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

Installez ensuite le client certbot (Let's Encrypt) et le plugin Nginx.

sudo apt install certbot python3-certbot-nginx

Ensuite, exécutez la commande suivante pour obtenir un certificat TLS gratuit à l'aide du plugin Nginx.

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

Où :

  • --nginx :Utilisez le plug-in nginx.
  • --agree-tos  :acceptez les conditions d'utilisation.
  • --redirect  :Forcer HTTPS par redirection 301.
  • --hsts  : ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.
  • --staple-ocsp  : Active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.

Dans quelques secondes, vous verrez un message comme ci-dessous, ce qui signifie que le certificat TLS a été obtenu avec succès.

Visitez https://onlyoffice.your-domain.com dans le navigateur Web pour vérifier que le serveur de documents OnlyOffice fonctionne correctement en mode HTTPS.

Étape 3 :Installez l'application d'intégration Nextcloud OnlyOffice

Connectez-vous à l'interface Web Nextcloud en tant qu'administrateur, puis accédez à la page des applications Nextcloud, cliquez sur Office & Text onglet dans le volet de gauche. Vous trouverez l'application OnlyOffice. Téléchargez-le et activez-le.

Après cela, allez sur la page Paramètres de Nextcloud, sélectionnez ONLYOFFICE dans le volet de gauche et entrez le nom de domaine pour OnlyOffice dans le champ Adresse du service d'édition de documents.

Après avoir enregistré le paramètre ci-dessus, vous devriez pouvoir créer des documents, des feuilles de calcul et des fichiers de présentation dans Nextcloud en cliquant sur le bouton plus (+). Un onglet séparé sera ouvert pour modification.

Vous verrez également un nouvel élément appelé "Ouvrir dans OnlyOffice" dans le menu contextuel des documents Office.

Installer OnlyOffice Document Server et Nextcloud sur le même hôte

Le serveur OnlyOffice Document utilise Nginx comme serveur Web.

Si vous avez un serveur Nextcloud existant fonctionnant avec Nginx, votre serveur Nextcloud n'est pas endommagé lors de l'installation d'OnlyOffice sur la même machine. Cela supprimera nginx-core et installez nginx-extras package, il y aura donc un peu de temps d'arrêt, mais vos configurations seront intactes.

Si vous avez un serveur Nextcloud existant fonctionnant avec le serveur Web Apache et que vous souhaitez installer OnlyOffice sur la même machine, vous avez deux choix :

  1. Arrêtez/supprimez Apache, utilisez Nginx comme serveur Web pour Nextcloud et OnlyOffice. Vous pouvez utiliser la configuration Nextcloud Nginx dans ce tutoriel.
  2. Configurez Nginx en tant que proxy inverse pour Apache.

Configuration de Nginx en tant que proxy inverse pour Apache

Si vous choisissez la deuxième route, vous devez d'abord modifier le numéro de port d'Apache avant d'installer le serveur de documents OnlyOffice.

Modifiez le ports.conf fichier.

sudo nano /etc/apache2/ports.conf

Trouvez la ligne :

Listen 80

Changez-le en un numéro de port différent comme 8180. Notez que vous ne devriez pas utiliser 8080 ici car le serveur de documents OnlyOffice a besoin du port 8080 pour démarrer son docservice.

Listen 8180

Vous devez également modifier le numéro de port SSL, car Nginx effectuera ultérieurement la terminaison SSL. Trouvez la ligne :

Listen 443

Remplacez le numéro de port par quelque chose comme 4433.

Listen 4433

Enregistrez et fermez le fichier. Ensuite, modifiez le fichier d'hôte virtuel pour Nextcloud.

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

La première ligne devrait ressembler à ceci :

<VirtualHost *:80>

Changez le numéro de port en 8180.

<VirtualHost *:8180>

Nous devons également désactiver la redirection HTTP vers HTTPS en ajoutant des caractères de commentaire avant les lignes suivantes. (Votre serveur Nextcloud utilise une connexion HTTPS, n'est-ce pas ?)

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

Et changez le port d'écoute SSL.

<VirtualHost *:443>

Changez le port ci-dessus en 4433. Enregistrez et fermez le fichier. Recharger la configuration Apache.

sudo systemctl reload apache2

Maintenant, Apache écoute sur les ports 8180 et 4433. Nous pouvons ensuite suivre les instructions ci-dessus pour installer le serveur de documents OnlyOffice, qui installera Nginx dans le processus.

Une fois le serveur de documents OnlyOffice et Nginx installés, créez un fichier de bloc de serveur Nginx pour envoyer les requêtes proxy à Apache.

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

Ajoutez les lignes suivantes au fichier. Remplacez le nom de domaine par le vôtre. Le chemin pour ssl_certificate et ssl_certificate_key est pour les certificats émis par Let’s Encrypt. Si vous utilisez un certificat émis par une autre autorité de certification, vous devez entrer votre propre chemin.

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

Le location / {...} redirige toutes les requêtes vers le serveur Web Apache écoutant sur le port 8180. Enregistrez et fermez le fichier. Testez ensuite la configuration de Nginx.

sudo nginx -t

Rechargez Nginx si la syntaxe est correcte.

sudo systemctl reload nginx

Vous devriez maintenant pouvoir visiter votre serveur Nextcloud comme d'habitude, sans ajouter de numéro de port dans l'URL. Si vous utilisez la commande cURL suivante pour récupérer l'en-tête HTTP, vous devriez voir que le serveur frontal est Nginx.

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

Exemple de sortie :

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

Réduire la surcharge DNS et HTTPS

Si Nextcloud et OnlyOffice sont installés sur le même hôte, alors Nextcloud et OnlyOffice peuvent se parler localement, sans avoir à interroger le nom DNS public et à établir une connexion HTTPS.

Tout d'abord, vous devez créer un bloc de serveur Nginx qui écoute sur l'hôte local pour Nextcloud et OnlyOffice. Pour OnlyOffice, vous pouvez modifier le /etc/nginx/conf.d/ds.conf fichier

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

Et ajoutez le bloc de serveur suivant. Notez que ce bloc de serveur écoute sur 127.0.0.1:80 et utilise onlyoffice-document-server comme nom_serveur.

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

Enregistrez et fermez le fichier. Ensuite, vous pouvez modifier le fichier de configuration Nextcloud Nginx.

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

Et ajoutez le bloc de serveur suivant. Il écoute également sur 127.0.0.1:80 et utilise nextcloud comme nom_serveur.

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

Enregistrez et fermez le fichier. Testez la configuration de Nginx, puis rechargez Nginx pour que les modifications prennent effet.

sudo nginx -t

sudo systemctl reload nginx

Ensuite, nous devons ajouter un enregistrement DNS local dans le /etc/hosts fichier comme ci-dessous, afin que le serveur puisse trouver l'adresse de onlyoffice-document-server et nextcloud .

127.0.0.1 localhost onlyoffice-document-server nextcloud

Enregistrez et fermez le fichier.

Nous devons également modifier le Nextcloud config.php fichier.

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

Ajouter nextcloud dans la liste des domaines de confiance comme ci-dessous.

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

Enregistrez et fermez le fichier.

Revenez maintenant aux pages de paramètres de l'interface Web Nextcloud, cliquez sur les advanced server settings , entrez l'adresse interne pour le serveur de documents OnlyOffice et Nextcloud.

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

Cliquez sur Enregistrer bouton et vous avez terminé.

Comment mettre à niveau OnlyOffice Document Server

Lorsqu'une nouvelle version du serveur de documents OnlyOffice sort, il vous suffit d'utiliser le gestionnaire de packages apt pour passer à la nouvelle version.

sudo apt update;sudo apt upgrade

Notez que la nouvelle version remplacera vos personnalisations dans le /etc/nginx/conf.d/ds.conf dossier. Je vous recommande de sauvegarder ce fichier avec la commande suivante, afin que vous puissiez facilement restaurer vos configurations personnalisées.

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

Ubuntu
  1. Comment configurer un serveur FTP avec VSFTPD sur Ubuntu 20.04

  2. Comment intégrer Alfresco à ONLYOFFICE Online Editor sur Ubuntu 14.04

  3. Comment installer NextCloud 13 sur Ubuntu 16.04

  4. Comment installer NextCloud 15 sur Ubuntu 18.04

  5. Comment intégrer Collabora Online avec Nextcloud sur Ubuntu 20.04

Comment installer NextCloud sur Ubuntu 20.04 avec Apache

Comment gérer à distance le serveur Ubuntu avec SSH

Comment configurer un serveur de messagerie avec Plesk sur Ubuntu 20.04

Comment installer Nextcloud 13 sur Ubuntu 16.04 avec Nginx

Comment intégrer OnlyOffice avec ownCloud

Comment installer Nextcloud sur Ubuntu 18.04 et 16.04