Konfigurieren von NextCloud + ONLYOFFICE auf demselben Server mit Docker

Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels "Einrichten von NextCloud und ONLYOFFICE auf einem einzelnen Server mit Docker" .

Die Vorteile von Online-Office-Suite-Paketen wie Google Text & Tabellen und Cloud-Speicher im Leben technisch orientierter Menschen sind kaum zu unterschätzen. Technologien sind so weit verbreitet, dass sich sogar Microsoft, das seit langem den Markt für Büroanwendungen dominiert, kürzlich darauf konzentriert hat, die Office 365-Webanwendung zu entwickeln und Benutzer davon zu überzeugen, auf ein Abonnementmodell für die Verwendung ihrer eigenen Dienste umzusteigen. Diejenigen, die an der Installation und Konfiguration ihres eigenen Speichers interessiert sind, sind zu cat eingeladen.

Vor einiger Zeit haben wir Cloud-Speicherlösungen und Open-Source-Office-Suite von Webanwendungen überprüft, die für den Einsatz in Kleinstunternehmen problemlos implementiert werden können. Die Hauptmotivation für die Online-Speicherung aller Dokumentationen besteht darin, das Volumen des Papierworkflows zu minimieren und trotz des geringen Betriebsvolumens positive Geschäftspraktiken umzusetzen. Die Kehrseite der Medaille ist, dass das Mieten eines Cloud-Servers zur Bereitstellung dieses Dienstes weniger sicher ist als das direkte Speichern auf dem Gelände, da Sie keine Möglichkeit haben, den physischen Zugriff auf Ihren Server oder den Datenverkehr zu überwachen. Folglich sind auch End-to-End-Verschlüsselung und Open-Source-Software erforderlich.

Unter Berücksichtigung aller verfügbaren Informationen zu Open Source-Lösungen haben wir zwei bestehende Projekte (mit Commits in Git-Repositories in den letzten 12 Monaten) für den Cloud-Speicher gefunden: NextCloud und OwnCloud sowie die einzige aktive Office-Anwendungssuite ONLYOFFICE. Beide Tools für den Cloud-Speicher verfügen über dieselbe Funktionalität. Die Entscheidung für NextCloud beruhte auf dem Vorhandensein von Beweisen dafür, dass es für eine komfortable Benutzerinteraktion mit der Software in ONLYOFFICE integriert werden kann. Als wir jedoch mit der Bereitstellung von Diensten begannen, wurde der Mangel an Informationen zur Integration der oben genannten Dienste offensichtlich. Wir haben 3 Tutorial-Videos zur Integration gefunden:


Keines der drei Videos beantwortete die Frage der Installation des ONLYOFFICE-Dokumentendienstes auf demselben physischen Server wie NextCloud mit gemeinsam genutztem Nginx. Stattdessen verwendeten sie Separationstechnologien wie die Verwendung separater Ports für den API-Dokumentendienst. Eine weitere vorgeschlagene Option war die Bereitstellung eines separaten Servers für den Dokumentendienst mit manueller Konfiguration der im Dokumentdienst integrierten nginx-Instanz, um den Zugriffsschlüssel (einen zuvor bekannten Zugriffsschlüssel, der den Zugriff auf die Datenwolke bestätigt) und TLS-Zertifikate zu installieren. Die oben genannten Ansätze wurden als nicht sicher und nicht effektiv genug angesehen. Daher haben wir NextCloud, ONLYOFFICE und Common Nginx integriert, die Anforderungen nach Domainnamen mithilfe von Docker-Compose gemeinsam nutzen. Hier finden Sie schrittweise Informationen dazu.

Schritt 1: Nginx-Container


Dies ist eine sehr einfache Installation, aber dieser Schritt erfordert die meiste Arbeit, um den Reverse-Proxy-Server zu konfigurieren. Zuerst haben wir die 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 

Dadurch wird ein Container mit den für den öffentlichen Zugriff geöffneten Ports 80 und 443 erstellt, die Konfiguration wird auf nginx / nginx-vhost.conf abgebildet und der Speicher für Zertifikate definiert, die als selbstsignierte Zertifikate oder mithilfe des Let's Go Encrypt-Zertifikats von / nginx / certificates generiert wurden. Dieser Speicherort sollte Ordner für office.yourdomain.com und cloud.yourdomain.com mit den Dateien fullchain1.pem und privkey1.pem für die Zertifikatkette bzw. den privaten Schlüssel des Servers enthalten. Weitere Informationen zum Generieren eines selbstsignierten Zertifikats finden Sie unter www.akadia.com/services/ssh_test_certificate.html (das Umbenennen von .key und .crt in .pem funktioniert ohne Konvertieren der Dateistruktur für nginx).

Danach haben wir die vhost-Datei definiert. Zunächst definieren wir das Verhalten von Port 80 als einfache Umleitung zu https, as Wir möchten keinen http-Verkehr zulassen

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

Dann haben wir zwei virtuelle Server an 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 Dokumentendienstcontainer zu unserer docker-compose.yml hinzufügen. Hier gibt es nichts Besonderes zu konfigurieren.

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

Vergessen Sie jedoch nicht, den Nginx-Container dem Dokumentendienst zuzuordnen:

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

Schritt 3: NextCloud


Zuerst fügen wir neue Dienste hinzu:

 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 

und füge den Link zu nginx hinzu:

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

Jetzt ist es Zeit, die Container zu laden.

 docker-compose up -d 

Nach einer Weile leitet nginx Sie zum NextCloud-Frontend weiter, der Standardkonfigurationsseite. Sie müssen den Benutzernamen und das Kennwort für Ihren ersten Administratorbenutzer sowie die Datenbankanmeldeinformationen eingeben, die Sie in docker-compose.yml angegeben haben. Nach Abschluss der Konfiguration können Sie sich anmelden. In unserem Fall dauerte das Warten fast eine Minute und erforderte eine zusätzliche Aktualisierung der Anmeldeseite, bevor wir in den Cloud-Dienst eintreten konnten.

Fenster "NextCloud-Diensteinstellungen"
Bild

Schritt 4: Verbinden von NextCloud und ONLYOFFICE


In diesem Schritt müssen Sie die Anwendung für NextCloud installieren, die die ONLYOFFICE-Funktionalität verbindet. Beginnen wir mit dem Anwendungsbedienfeld in der oberen rechten Ecke des Menüs. Suchen Sie die ONLYOFFICE-Anwendung (im Abschnitt „Office & Text“ oder über die Suche), installieren und aktivieren Sie sie.

Gehen Sie danach über das Menü in der oberen rechten Ecke zu Einstellungen, und Sie müssen das ONLYOFFICE-Element im linken Menü finden. Geh hinein. Sie müssen die Adressen wie unten angegeben registrieren.

Einstellungen für Integrationsanwendungen
Bild

Die erste Adresse wird verwendet, um direkt aus der im Browser ausgeführten Anwendung auf einige JS- und CSS-Dateien zu verlinken (aus diesem Grund müssen wir den Zugriff auf den ONLYOFFICE-Dienst über nginx öffnen). Der private Schlüssel wird nicht verwendet, da wir der Docker-Isolationsschicht mehr vertrauen als dem permanenten Authentifizierungsschlüssel. Die dritte Adresse wird vom NextCloud-Container verwendet, um eine direkte Verbindung zur ONLYOFFICE-API herzustellen, und verwendet den internen Standardhostnamen von Docker. Nun, das letzte Feld wird verwendet, damit ONLYOFFICE mithilfe einer externen IP-Adresse oder einer internen Docker-Adresse Anforderungen an die NextCloud-API zurücksenden kann, wenn Sie Docker-Netzwerke verwenden. In unserem Fall wird dies jedoch nicht verwendet. Stellen Sie sicher, dass Ihre Firewall-Einstellungen diese Art von Interaktionen zulassen.

Nach dem Speichern testet NextCloud die Verbindung und zeigt Ihnen, wenn alles korrekt ist, die Einstellungen für die Integration an - beispielsweise, welche Dateitypen durch diese Integration bearbeitet werden können. Passen Sie nach Belieben an.

Der letzte Schritt: Wo soll man nach dem Editor suchen?


Wenn Sie zu den Ordnern Ihres Cloud-Speichers zurückkehren und auf "+" klicken, um eine neue Datei zu erstellen, steht Ihnen eine neue Option zum Erstellen eines Dokuments, einer Tabelle oder einer Präsentation zur Verfügung. Mit ihrer Hilfe können Sie diese Dateitypen mit ONLYOFFICE erstellen und sofort bearbeiten.

Menü zum Erstellen von Dateien
Bild


Zusatz 1


Den vollständigen Inhalt von docker-compose.yml finden Sie hier: https://pastebin.com/z1Ti1fTZ

Source: https://habr.com/ru/post/de463629/


All Articles