Configuration de NextCloud + ONLYOFFICE sur un seul serveur avec Docker

Bonjour, Habr ! Je vous présente la traduction de l'article «Configurer NextCloud et ONLYOFFICE sur un seul serveur avec Docker».

Il est difficile de sous-estimer l'utilité des suites bureautiques en ligne comme Google Docs et des solutions de stockage cloud dans la vie des personnes orientées vers la technologie. Les technologies se sont si largement répandues que même Microsoft, qui a dominé le marché des applications bureautiques pendant longtemps, s'est récemment concentrée sur le développement de l'application web Office 365 et sur la persuasion des utilisateurs à adopter un modèle d'abonnement pour utiliser ses services. Ceux qui s'intéressent au processus d'installation et de configuration de leur propre stockage sont invités à lire la suite.

Il y a quelque temps, nous avons exploré des solutions de stockage cloud et des suites d'applications bureautiques web open source qui pourraient facilement être mises en œuvre pour une utilisation dans les micro-entreprises. La principale motivation pour stocker toute la documentation en ligne est de réduire au minimum le volume de papier, tout en établissant des pratiques commerciales positives, malgré un faible volume d'opérations. Le revers de la médaille est que la location d'un serveur cloud pour fournir ce service est moins sécurisée que le stockage directement sur site, car vous n'avez aucun moyen d'auditer l'accès physique à votre serveur ou le trafic. Il en découle également la nécessité d'un chiffrement de bout en bout et de logiciels open source.

En tenant compte de toutes les informations disponibles sur les solutions open source, nous avons trouvé deux projets actifs (avec des commits dans les dépôts git au cours des 12 derniers mois) développés pour le stockage cloud : NextCloud et OwnCloud, ainsi qu'un unique paquet actif d'applications de bureau ONLYOFFICE. Les deux solutions de stockage cloud ont une fonctionnalité à peu près identique, et le choix de NextCloud a été basé sur l'existence de preuves qu'il peut être intégré avec ONLYOFFICE pour une interaction confortable de l'utilisateur avec le logiciel. Cependant, lorsque nous avons commencé à déployer les services, le manque d'informations sur l'intégration de ces services est devenu évident. Nous avons trouvé 3 vidéos pédagogiques sur la manière d'effectuer cette intégration :

Aucune des trois vidéos n'a répondu à la question de l'installation du service de documents ONLYOFFICE sur le même serveur physique que NextCloud avec un nginx commun. Au lieu de cela, elles ont utilisé des technologies de séparation, comme l'utilisation de ports distincts pour l'API du service de documents. Une autre alternative proposée était de déployer un serveur séparé pour le service de documents avec une configuration manuelle de l'instance nginx intégrée au service de documents pour installer la clé d'accès (une clé d'accès préalablement connue, confirmant le droit d'accès au cloud de données) et les certificats TLS. Les approches décrites ci-dessus ont été jugées non sécurisées et pas assez efficaces, c'est pourquoi nous avons intégré NextCloud, ONLYOFFICE et un nginx commun, qui répartit les requêtes par noms de domaine, à l'aide de docker-compose. Voici les informations étape par étape sur la manière de procéder.

Étape 1 : conteneur nginx

C'est une installation très simple, mais cette étape nécessite le plus de travail pour la configuration du serveur proxy inverse. Tout d'abord, nous avons créé la configuration docker-compose pour l'image nginx:stable.

version: '2'
services:
  nginx:
    image : nginx:stable
    restart: always
    volumes:
      - ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
      - ./nginx/certificates:/mycerts 
    ports:
      - 443:443
      - 80:80

Cela crée un conteneur avec les ports 80 et 443 ouverts pour un accès public, effectue le mappage de la configuration sur nginx/nginx-vhost.conf et définit le stockage pour les certificats, générés soit comme des certificats auto-signés, soit en utilisant Certbot de Let’s Encrypt dans /nginx/certificates. À cet endroit, il doit y avoir des dossiers pour office.yourdomain.com et cloud.yourdomain.com avec les fichiers fullchain1.pem et privkey1.pem dans chacun pour la chaîne de certificats et la clé privée du serveur, respectivement. Vous pouvez en savoir plus sur la manière de générer un certificat auto-signé ici. www.akadia.com/services/ssh_test_certificate.html (renommer .key et .crt en .pem fonctionne sans conversion de la structure de fichiers pour nginx).

Après cela, nous avons défini le fichier vhost. Tout d'abord, nous définissons le comportement du port 80 comme une simple redirection vers https, car nous ne voulons autoriser aucun trafic http.

server {
    listen 80;
    location / {
        return 301
            https://$host$request_uri;
    }
}

Ensuite, nous avons créé deux serveurs virtuels sur le port 443 pour nos services :

server {
    listen 443 ssl;
    server_name cloud.yourdomain.com;
    root /var/www/html;

    ssl_certificate     /mycerts/cloud.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/cloud.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app:80;
    }
}
server {
    listen 443 ssl;
    server_name office.yourdomain.com;
    root /var/www/html;

    ssl_certificate     /mycerts/office.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/office.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://onlyoffice:80;
    }
}

Étape 2 : service de documents

Nous devons maintenant ajouter le conteneur du service de documents dans notre docker-compose.yml. Il n'y a pas grand-chose à configurer ici.

services:
...
  onlyoffice:
    image: onlyoffice/documentserver
    restart: always

Mais n'oubliez pas de lier le conteneur nginx avec le service de documents :

services:
...
  nginx:
    ...
    depends_on:
      - onlyoffice

Étape 3 : NextCloud

D'abord, ajoutons de nouveaux services :

services:
...
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /data/nextcloud_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=#mettez un mot de passe ici
      - MYSQL_PASSWORD=#mettez un autre mot de passe ici
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

et ajouter le lien vers nginx :

services :
...
  nginx :
    ...
    depends_on :
      - app 

Il est maintenant temps de charger les conteneurs.

docker-compose up -d  

Après un certain temps, nginx commencera à vous rediriger vers l'interface externe de NextCloud, qui est par défaut la page de configuration. Vous devrez entrer le nom d'utilisateur et le mot de passe pour votre premier utilisateur administrateur, ainsi que les informations d'identification de la base de données que vous avez spécifiées dans docker-compose.yml. Une fois la configuration terminée, vous pourrez vous connecter. Dans notre cas, l'attente a duré près d'une minute et nécessitait une actualisation supplémentaire de la page de connexion avant que nous puissions accéder au service cloud.

Fenêtre de paramètres du service NextCloudConfiguration de NextCloud + ONLYOFFICE sur un seul serveur avec Docker

Étape 4 : connexion entre NextCloud et ONLYOFFICE

À cette étape, vous devrez installer l'application pour NextCloud qui connecte la fonctionnalité d'ONLYOFFICE. Commençons par le tableau de bord des applications en haut à droite du menu. Recherchez l'application ONLYOFFICE (dans la section “Bureau et texte” ou en utilisant la recherche), installez-la et activez-la.

Après cela, allez dans Paramètres via le menu en haut à droite, et vous devriez trouver l'élément ONLYOFFICE dans le menu de gauche. Cliquez dessus. Vous devrez entrer les adresses, comme indiqué ci-dessous.

Paramètres de l'application d'intégrationConfiguration de NextCloud + ONLYOFFICE sur un seul serveur avec Docker

La première adresse est utilisée pour référencer certains fichiers js et css directement depuis l'application exécutée dans le navigateur (c'est pourquoi nous devons ouvrir l'accès au service ONLYOFFICE via nginx). La clé secrète n'est pas utilisée, car nous faisons davantage confiance à la couche d'isolation Docker qu'à une clé d'authentification permanente. La troisième adresse est utilisée par le conteneur NextCloud pour se connecter directement à l'API ONLYOFFICE, et elle utilise le nom d'hôte par défaut interne de Docker. Enfin, le dernier champ est utilisé pour permettre à ONLYOFFICE d'effectuer des requêtes de retour vers l'API NextCloud, en utilisant l'adresse IP externe ou l'adresse interne de Docker, si vous utilisez des réseaux Docker, mais dans notre cas, cela n'est pas utilisé. Veuillez vous assurer que les paramètres de votre pare-feu permettent ce type d'interaction.

Après avoir enregistré, NextCloud testera la connexion et, si tout est correct, vous montrera les paramètres liés à l'intégration - par exemple, quels types de fichiers peuvent être modifiés par cette intégration. Configurez selon vos besoins.

Étape finale : où trouver l'éditeur

Si vous retournez dans les dossiers de votre stockage cloud et que vous cliquez sur “+” pour créer un nouveau fichier, une nouvelle option pour créer un document, un tableau ou une présentation sera disponible. Avec ceux-ci, vous pourrez créer et éditer immédiatement ces types de fichiers en utilisant ONLYOFFICE.

Menu de création de fichiersConfiguration de NextCloud + ONLYOFFICE sur un seul serveur avec Docker

Annexe 1

Le contenu complet de docker-compose.yml peut être trouvé ici : https://pastebin.com/z1Ti1fTZ

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster