Configuration de NextCloud + ONLYOFFICE sur le même serveur avec Docker

Salut Habr ! Je présente à votre attention la traduction de l'article "Configurer NextCloud et ONLYOFFICE sur un seul serveur avec Docker".

Il est difficile de sous-estimer la valeur des suites bureautiques en ligne comme Google Docs et du stockage cloud dans la vie des personnes orientées technologie. La technologie est devenue si répandue que même Microsoft, qui a longtemps dominé le marché des applications bureautiques, s'est récemment concentré sur le développement de l'application Web Office 365 et a convaincu les utilisateurs de passer à un modèle d'abonnement pour utiliser leurs propres services. Nous invitons ceux qui sont intéressés par le processus d'installation et de configuration de leur propre stockage sous cat.

Il y a quelque temps, nous avons étudié les solutions de stockage dans le cloud et les suites bureautiques Web open source qui pourraient facilement être déployées pour être utilisées dans une micro-entreprise. La principale motivation pour maintenir toute la documentation en ligne est de réduire au minimum la paperasse et de mettre en œuvre de bonnes pratiques commerciales malgré le faible volume de transactions. Le revers de la médaille est que la location d'un serveur cloud pour fournir ce service est moins sécurisée que de le stocker directement dans les locaux de l'entreprise, puisque vous ne disposez d'aucun moyen d'audit des accès physiques à votre serveur ou de votre trafic. Par conséquent, un chiffrement de bout en bout et des logiciels open source sont également requis.

En tenant compte de toutes les informations disponibles sur les solutions open source, nous avons trouvé deux projets actifs (avec des commits dans le référentiel git au cours des 12 derniers mois) développés pour le stockage cloud : NextCloud et OwnCloud, et la seule suite bureautique active ONLYOFFICE. Les deux outils de stockage cloud ont à peu près les mêmes fonctionnalités, et la décision de choisir NextCloud était basée sur l'existence de preuves qu'il peut être intégré à ONLYOFFICE pour une interaction utilisateur confortable avec le logiciel. Cependant, lorsque nous avons commencé à déployer les services, le manque d'informations sur l'intégration des services ci-dessus est devenu évident. Nous avons trouvé 3 vidéos tutorielles sur la façon d'intégrer :

Aucune des trois vidéos n'a répondu à la question de l'installation du service documentaire ONLYOFFICE sur le même serveur physique que NextCloud avec un nginx partagé. Au lieu de cela, ils ont utilisé des techniques de séparation telles que l'utilisation de ports séparés pour l'API du service de documents. Une autre suggestion consistait à déployer un serveur distinct pour Document Service, en configurant manuellement l'instance nginx intégrée à Document Service pour installer une clé d'accès (une clé d'accès pré-connue qui confirme le droit d'accéder au cloud de données) et des certificats TLS. Les approches ci-dessus ont été considérées comme peu sûres et pas assez efficaces, nous avons donc intégré NextCloud, ONLYOFFICE et un nginx commun qui sépare les requêtes par noms de domaine à l'aide de docker-compose. Voici des informations étape par étape sur la façon de procéder.

Étape 1 : conteneur nginx

Il s'agit d'une configuration très simple, mais cette étape nécessite le plus de travail pour configurer le serveur proxy inverse. Nous avons d'abord 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 au public, mappe la configuration à nginx/nginx-vhost.conf et définit un magasin pour les certificats générés en tant que certificats auto-signés ou à l'aide du certbot de Let's encrypt dans /nginx/certificates. Cet emplacement doit contenir les dossiers 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 façon 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 convertir la structure du fichier pour nginx).

Après cela, nous avons défini le fichier vhost. Nous définissons d'abord 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;
    }
}

Nous avons ensuite 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 : signification de documents

Nous devons maintenant ajouter le conteneur de service de documents à notre docker-compose.yml. Il n'y a rien de spécial à configurer ici.

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

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

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

Étape 3 : NextCloud

Tout d’abord, ajoutez 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=#put some password here
      - MYSQL_PASSWORD=#put some other password here
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

et ajoutez un 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 le frontal NextCloud, qui est la page de configuration par défaut. Vous devrez entrer le nom d'utilisateur et le mot de passe de votre premier utilisateur administrateur ainsi que les informations d'identification de la base de données que vous avez fournies 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 a nécessité une actualisation supplémentaire de la page de connexion avant de pouvoir nous connecter au service cloud.

Fenêtre des paramètres du service NextCloudConfiguration de NextCloud + ONLYOFFICE sur le même serveur avec Docker

Étape 4 : Connexion de NextCloud et d'ONLYOFFICE

A cette étape, vous devrez installer l'application pour NextCloud, qui connecte la fonctionnalité ONLYOFFICE. Commençons par le panneau de configuration de l'application dans le coin supérieur droit du menu. Recherchez l'application ONLYOFFICE (sous Office et texte ou en utilisant la recherche), installez-la et activez-la.

Après cela, dirigez-vous vers Paramètres via le menu dans le coin supérieur droit et vous devriez trouver l'élément ONLYOFFICE dans le menu de gauche. Entrez-y. Vous devrez enregistrer les adresses comme indiqué ci-dessous.

Paramètres de l'application d'intégrationConfiguration de NextCloud + ONLYOFFICE sur le même serveur avec Docker

La première adresse est utilisée pour créer un lien vers certains fichiers js et css directement depuis l'application exécutée dans le navigateur (c'est ce dont nous avons besoin pour 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'à la clé d'authentification persistante. La troisième adresse est utilisée par le conteneur NextCloud pour se connecter directement à l'API ONLYOFFICE et utilise le nom d'hôte interne par défaut de Docker. Eh bien, le dernier champ est utilisé pour qu'ONLYOFFICE puisse renvoyer des requêtes à l'API NextCloud en utilisant une adresse IP externe ou une adresse Docker interne si vous utilisez des réseaux Docker, mais cela n'est pas utilisé dans notre cas. Assurez-vous que les paramètres de votre pare-feu autorisent ce type d'interactions.

Après l'enregistrement, 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. Personnalisez comme bon vous semble.

La dernière étape : où trouver l'éditeur

Si vous revenez dans vos dossiers de stockage cloud et cliquez sur le « + » pour créer un nouveau fichier, vous aurez alors une nouvelle option pour créer un document, une feuille de calcul ou une présentation. Avec leur aide, vous créerez et pourrez immédiatement éditer ces types de fichiers à l'aide d'ONLYOFFICE.

Menu de création de fichiersConfiguration de NextCloud + ONLYOFFICE sur le même serveur avec Docker

1 add-on

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

Source: habr.com

Ajouter un commentaire