Bonjour, Habr! Je vous présente la traduction de l'article
"Configuration de NextCloud et ONLYOFFICE sur un seul serveur avec Docker" .
Il est difficile de sous-estimer les avantages des packages de suite bureautique en ligne tels que Google Docs et le stockage cloud dans la vie des personnes axées sur la technologie. Les technologies sont devenues si répandues 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 sur la convaincre les utilisateurs de passer à un modèle d'abonnement en utilisant leurs propres services. Ceux qui sont intéressés par le processus d'installation et de configuration de leur propre stockage sont invités à cat.
Il y a quelque temps, nous avons examiné des solutions de stockage dans le cloud et une suite bureautique open source d'applications Web qui pourraient être facilement mises en œuvre pour une utilisation dans des microentreprises. La principale motivation pour le stockage de toute la documentation en ligne est de minimiser le volume de flux de travail papier et de mettre en œuvre des pratiques commerciales positives, malgré le faible volume des 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 direct sur place, car vous n'avez aucun moyen de vérifier l'accès physique à votre serveur ou le trafic. Par conséquent, un chiffrement de bout en bout et un logiciel open source sont également requis.
En tenant compte de toutes les informations disponibles sur les solutions open source, nous avons trouvé deux projets existants (avec des validations dans les référentiels git au cours des 12 derniers mois) conçus pour le stockage cloud: NextCloud et OwnCloud, et la seule suite bureautique active ONLYOFFICE. Les deux installations de stockage en nuage ont approximativement 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 confortable des utilisateurs avec le logiciel. Cependant, lorsque nous avons commencé le déploiement des services, le manque d'informations sur l'intégration des services ci-dessus est devenu apparent. Nous avons trouvé 3 vidéos de tutoriel sur la façon d'intégrer:
Aucune des trois vidéos n'a répondu à la question de l'installation du service de document ONLYOFFICE sur le même serveur physique que NextCloud avec nginx partagé. Au lieu de cela, ils ont utilisé des technologies de séparation telles que l'utilisation de ports séparés pour le service de documents api. Une autre option proposée consistait à déployer un serveur distinct 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écédemment connue qui confirme l'accès au cloud de données) et les certificats TLS. Les approches ci-dessus ont été considérées comme non sûres et pas assez efficaces, nous avons donc intégré NextCloud, ONLYOFFICE et nginx commun, qui partage les demandes par nom de domaine, en utilisant docker-compose. Voici des informations étape par étape sur la façon de procéder.
Étape 1: conteneur Nginx
Il s'agit d'une installation très simple, mais cette étape nécessite le plus de travail pour configurer le 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 à l'accès public, mappe la configuration à nginx / nginx-vhost.conf et définit le magasin pour les certificats générés en tant que certificats auto-signés ou en utilisant le certificat Let's Go Encrypt de / nginx / certificats. Cet emplacement doit contenir des dossiers pour office.votredomaine.com et cloud.votredomaine.com avec respectivement les fichiers fullchain1.pem et privkey1.pem pour la chaîne de certificats et la clé privée du serveur. 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 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, comme 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 documentation
Nous devons maintenant ajouter le conteneur de service de document à 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 d'associer le conteneur nginx au service de document:
services: ... nginx: ... depends_on: - onlyoffice
Étape 3: NextCloud
Nous ajoutons d'abord 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 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 le frontend 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 et 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 pouvez vous connecter. Dans notre cas, l'attente a pris près d'une minute et a nécessité une mise à jour supplémentaire de la page de connexion avant de pouvoir accéder au service cloud.
Fenêtre des paramètres du service NextCloud Étape 4: connexion de NextCloud et ONLYOFFICE
À 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. Trouvez l'application ONLYOFFICE (dans la section «Office & texte» ou en utilisant la recherche), installez-la et activez-la.
Après cela, allez dans Paramètres via le menu dans le coin supérieur droit, et vous devrez trouver l'élément ONLYOFFICE dans le menu de gauche. Allez-y. Vous devrez enregistrer les adresses comme indiqué ci-dessous.
Paramètres d'application d'intégration La première adresse est utilisée pour établir un lien vers certains fichiers js et css directement à partir de l'application exécutée dans le navigateur (c'est pourquoi nous devons ouvrir l'accès au service ONLYOFFICE via nginx). La clé privée n'est pas utilisée car nous faisons davantage confiance à la couche d'isolation Docker qu'à la clé d'authentification permanente. 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 que ONLYOFFICE puisse faire des demandes à l'API NextCloud en utilisant une adresse IP externe ou une adresse Docker interne si vous utilisez des réseaux Docker, mais dans notre cas, cela n'est pas utilisé. Assurez-vous que vos paramètres de pare-feu autorisent ces types 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ù chercher l'éditeur
Si vous revenez dans les dossiers de votre stockage cloud et cliquez sur «+» pour créer un nouveau fichier, une nouvelle option sera disponible pour créer un document, un tableau ou une présentation. Avec leur aide, vous allez créer et éditer immédiatement ces types de fichiers en utilisant ONLYOFFICE.
Menu de création de fichiers Addition 1
Le contenu complet de docker-compose.yml peut être trouvé ici:
https://pastebin.com/z1Ti1fTZ