Hallo, Habr! Ich präsentiere Ihnen die Übersetzung des Artikels .
Die Vorteile von Online-Büropaketen wie Google Docs und Cloud-Speichern sind für technisch orientierte Personen kaum zu überschätzen. Die Technologien sind so weit verbreitet, dass selbst Microsoft, das seit langem den Markt für Büroanwendungen dominiert, sich in letzter Zeit auf die Entwicklung der Webanwendung Office 365 und die Überzeugung der Nutzer, auf ein Abonnementmodell für eigene Dienste umzusteigen, konzentriert hat. Alle, die sich für den Prozess der Installation und Einrichtung eines eigenen Speichers interessieren, sind herzlich eingeladen, weiterzulesen.
Vor einiger Zeit haben wir Lösungsansätze für Cloud-Speicher und Open-Source-Webanwendungen untersucht, die sich leicht für den Einsatz in Kleinstunternehmen implementieren lassen. Die Hauptmotivation, sämtliche Dokumentation online zu speichern, besteht darin, den Papierverbrauch auf ein Minimum zu reduzieren und positive Geschäftspraktiken einzuführen, auch wenn das Geschäftsvolumen klein ist. Die Kehrseite der Medaille ist jedoch, dass die Anmietung eines Cloud-Servers für diesen Service weniger sicher ist als die Speicherung direkt im Unternehmen, da Sie keine Möglichkeit haben, den physikalischen Zugriff auf Ihren Server oder den Datenverkehr zu auditieren. Daher sind auch End-to-End-Verschlüsselung und Open-Source-Software erforderlich.
Nach Berücksichtigung aller verfügbaren Informationen über Open-Source-Lösungen haben wir zwei aktive Projekte (mit Commits in Git-Repositories der letzten 12 Monate) gefunden, die für die Cloud-Speicherung entwickelt wurden: NextCloud und OwnCloud, sowie das einzige aktive Büroanwendungspaket ONLYOFFICE. Beide Cloud-Speicherlösungen bieten vergleichbare Funktionen, und die Entscheidung für NextCloud basierte auf dem Nachweis, dass es mit ONLYOFFICE integriert werden kann, um eine komfortable Benutzererfahrung zu gewährleisten. Allerdings wurde der Mangel an Informationen zur Integration der genannten Dienste offensichtlich, als wir mit dem Einsatz der Dienste begannen. Wir haben 3 Lehrvideos gefunden, die zeigen, wie man die Integration durchführt:
Keines der drei Videos hat die Frage beantwortet, wie der ONLYOFFICE-Dokumentenservice auf demselben physischen Server wie NextCloud mit gemeinsamem nginx installiert wird. Stattdessen wurden Technologien zur Trennung wie die Verwendung separater Ports für die API des Dokumentendienstes verwendet. Eine andere vorgeschlagene Option war die Bereitstellung eines separaten Servers für den Dokumentenservice mit einer manuellen Konfiguration des in den Dokumentenservice integrierten nginx-Instanz zur Einrichtung des Zugangsschlüssels (ein im Voraus bekannter Zugangsschlüssel, der das Zugriffsrecht auf die Datencloud bestätigt) und der TLS-Zertifikate. Die oben beschriebenen Ansätze wurden als unsicher und nicht effizient genug erachtet, weshalb wir die Integration von NextCloud, ONLYOFFICE und dem gemeinsamen nginx durchgeführt haben, der Anfragen anhand von Domainnamen mithilfe von docker-compose trennt. Hier sind schrittweise Informationen dazu, wie dies durchgeführt wird.
Schritt 1: nginx-Container
Dies ist eine sehr einfache Installation, aber dieser Schritt erfordert den größten Arbeitsaufwand zur Konfiguration des Reverse Proxy-Servers. Zuerst haben wir eine docker-compose-Konfiguration für das nginx:stable-Image erstellt.
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
Dies erstellt einen Container mit den Ports 80 und 443, die für den öffentlichen Zugriff geöffnet sind, mappt die Konfiguration auf nginx/nginx-vhost.conf und definiert den Speicherort für Zertifikate, die entweder als selbstsignierte Zertifikate oder mit Certbot von Let’s Encrypt in /nginx/certificates generiert werden. An diesem Ort sollten Ordner für office.yourdomain.com und cloud.yourdomain.com vorhanden sein, mit den Dateien fullchain1.pem und privkey1.pem in jedem für die Zertifikatskette und den privaten Schlüssel des Servers. Sie können hier mehr darüber lesen, wie man ein selbstsigniertes Zertifikat generiert. (Das Umbenennen von .key und .crt in .pem funktioniert ohne Umwandlung der Dateistruktur für nginx).
Anschließend haben wir die vhost-Datei definiert. Zuerst definieren wir das Verhalten des Ports 80 als einfaches Redirect auf https, da wir keinen http Verkehr zulassen möchten.
server {
listen 80;
location / {
return 301
https://$host$request_uri;
}
}
Dann haben wir zwei virtuelle Server auf Port 443 für unsere Dienste erstellt:
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;
}
}
Schritt 2: Dokumentenservice
Jetzt müssen wir den Dokumentenservice in unsere docker-compose.yml hinzufügen. Hier gibt es nicht viel zu konfigurieren.
services:
...
onlyoffice:
image: onlyoffice/documentserver
restart: always
Aber vergessen Sie nicht, den nginx-Container mit dem Dokumentenservice zu verknüpfen:
services:
...
nginx:
...
depends_on:
- onlyoffice
Schritt 3: NextCloud
Zuerst fügen wir neue Dienste hinzu:
Dienste:
...
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- /data/nextcloud_db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=#geben Sie hier ein Passwort ein
- MYSQL_PASSWORD=#geben Sie hier ein anderes Passwort ein
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
depends_on:
- db
- onlyoffice
restart: always
und fügen Sie einen Link zu nginx hinzu:
Dienste:
...
nginx:
...
depends_on:
- app
Jetzt ist es Zeit, die Container zu starten.
docker-compose up -d
Nach einer kurzen Wartezeit wird nginx beginnen, Sie auf die öffentliche Schnittstelle von NextCloud weiterzuleiten, die standardmäßig die Konfigurationsseite ist. Dort müssen Sie den Benutzernamen und das Passwort für Ihren ersten Administrationsbenutzer sowie die Datenbankanmeldeinformationen eingeben, die Sie in der docker-compose.yml festgelegt haben. Nachdem die Konfiguration abgeschlossen ist, können Sie sich anmelden. In unserem Fall dauerte das Warten fast eine Minute und erforderte ein zusätzliches Aktualisieren der Anmeldeseite, bevor wir in den Cloud-Dienst einsteigen konnten.
Einstellungsfenster des NextCloud-Dienstes
Schritt 4: Verbindung zwischen NextCloud und ONLYOFFICE herstellen
In diesem Schritt müssen Sie die NextCloud-App installieren, die die Funktionen von ONLYOFFICE integriert. Lassen Sie uns im oberen rechten Bereich des Menüs mit dem Dashboard der Anwendungen beginnen. Suchen Sie die App ONLYOFFICE (unter "Büro und Text" oder durch Verwendung der Suche), installieren und aktivieren Sie sie.
Navigieren Sie anschließend über das Menü in der oberen rechten Ecke zu den Einstellungen, und Sie sollten den Punkt ONLYOFFICE im linken Menü finden. Klicken Sie darauf. Es ist erforderlich, die Adressen wie unten angegeben einzugeben.
Einstellungen der Integrationsanwendung
Die erste Adresse wird verwendet, um direkt auf einige JS- und CSS-Dateien aus der im Browser gestarteten Anwendung zuzugreifen (dafür müssen wir den Zugriff auf den ONLYOFFICE-Dienst über nginx ermöglichen). Der geheime Schlüssel wird nicht verwendet, da wir der Docker-Isolationsschicht mehr vertrauen als einem dauerhaften Authentifizierungsschlüssel. Die dritte Adresse wird vom NextCloud-Container verwendet, um direkt mit der ONLYOFFICE-API zu kommunizieren, und verwendet den standardmäßigen internen Hostnamen aus Docker. Das letzte Feld wird dazu verwendet, dass ONLYOFFICE Rückfragen an die NextCloud-API unter Verwendung der externen IP-Adresse oder der internen Docker-Adresse stellen kann, wenn Sie Docker-Netzwerke nutzen, aber in unserem Fall wird dies nicht verwendet. Stellen Sie sicher, dass Ihre Firewall-Einstellungen diese Arten von Interaktionen zulassen.
Nach dem Speichern wird NextCloud die Verbindung testen und, falls alles korrekt ist, Ihnen die Einstellungen anzeigen, die mit der Integration verbunden sind – beispielsweise, welche Dateitypen mit dieser Integration bearbeitet werden können. Passen Sie die Einstellungen nach Bedarf an.
Letzter Schritt: Wo Sie den Editor finden
Wenn Sie zu den Ordnern Ihres Cloud-Speichers zurückkehren und auf "+" klicken, um eine neue Datei zu erstellen, steht Ihnen eine neue Option zur Verfügung, mit der Sie ein Dokument, eine Tabelle oder eine Präsentation erstellen können. Mit diesen können Sie die jeweiligen Dateitypen erstellen und sofort mit dem Bearbeiten beginnen, indem Sie ONLYOFFICE verwenden.
Datei erstellen Menü
Ergänzung 1
Den vollständigen Inhalt von docker-compose.yml finden Sie hier:
Quelle: habr.com
