Einrichtung von NextCloud + ONLYOFFICE auf einem Server mithilfe von Docker

Hallo, Habr! Ich präsentiere Ihnen die Übersetzung des Artikels „NextCloud und ONLYOFFICE auf einem einzigen Server mit Docker einrichten“.

Die Vorteile von Online-Büroanwendungen wie Google Docs und Cloud-Speichern sind für technisch orientierte Menschen kaum zu unterschätzen. Die Technologien haben sich so weit verbreitet, dass sogar Microsoft, das lange Zeit den Markt für Büroanwendungen dominiert hat, sich zuletzt auf die Entwicklung der Webanwendung Office 365 konzentriert hat und die Benutzer dazu ermutigt, auf ein Abonnementmodell umzusteigen. Wir laden alle Interessierten an dem Installations- und Konfigurationsprozess eines eigenen Speichers ein, weiterzulesen.

Vor einiger Zeit haben wir verschiedene Lösungen für Cloud-Speicher und Online-Büroanwendungen mit Open-Source-Software geprüft, die leicht in Kleinunternehmen implementiert werden können. Der Hauptgrund für die Online-Speicherung aller Dokumente ist die Minimierung des Papierverbrauchs und die Einführung positiver Geschäftspraktiken, trotz eines niedrigen Transaktionsvolumens. Die Kehrseite ist jedoch, dass das Mieten eines Cloud-Servers für diesen Dienst weniger sicher ist, als die Speicherung vor Ort im Unternehmen, da Ihnen keine Mittel zur Verfügung stehen, um den physischen Zugriff auf Ihren Server oder den Datenverkehr zu überprüfen. Folglich ist auch End-to-End-Verschlüsselung und Software mit offenem Quellcode erforderlich.

Nach Prüfung aller verfügbaren Informationen über Open-Source-Lösungen fanden wir zwei funktionierende Projekte (mit Commits im Git-Repository in den letzten 12 Monaten), die für die Cloud-Speicherung entwickelt wurden: NextCloud und OwnCloud, sowie den einzig aktiven Büroanwendungspaket ONLYOFFICE. Beide Cloud-Speicherlösungen bieten ähnliche Funktionen, und die Entscheidung, NextCloud zu wählen, basierte auf den vorhandenen Hinweisen, dass es mit ONLYOFFICE integriert werden kann, um eine komfortable Benutzererfahrung zu gewährleisten. Als wir jedoch mit der Bereitstellung der Dienste begannen, wurde der Mangel an Informationen zur Integration der oben genannten Dienste offensichtlich. Wir fanden 3 Lehrvideos zur Integration:

Keines der drei Videos beantwortete die Frage nach der Installation des ONLYOFFICE-Dokumentendienstes auf demselben physischen Server wie NextCloud mit gemeinsamem nginx. Stattdessen verwendeten sie Technologien wie die Nutzung separater Ports für den Dokumentendienst-API. Eine weitere vorgeschlagene Option war die Bereitstellung eines separaten Servers für den Dokumentendienst mit manueller Konfiguration der in den Dokumentendienst integrierten nginx-Instanz zur Installation des Zugangsschlüssels (ein zuvor bekannter Zugangsschlüssel, der das Zugriffsrecht auf die Cloud-Daten bestätigt) und der TLS-Zertifikate. Die oben beschriebenen Ansätze wurden als unsicher und nicht ausreichend effizient erachtet, weshalb wir die Integration von NextCloud, ONLYOFFICE und dem gemeinsamen nginx, der Anfragen nach Domainnamen trennt, mit docker-compose durchgeführt haben. Hier sind schrittweise Anleitungen, wie dies zu tun ist.

Schritt 1: nginx-Container

Dies ist eine sehr einfache Installation, aber dieser Schritt erfordert die meiste Arbeit 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, es mappt die Konfiguration auf nginx/nginx-vhost.conf und definiert den Speicher für die Zertifikate, die entweder als selbstsignierte Zertifikate oder mit Certbot von Let’s Encrypt in /nginx/certificates generiert wurden. An diesem Ort sollten die Ordner für office.yourdomain.com und cloud.yourdomain.com mit den Dateien fullchain1.pem und privkey1.pem für die Zertifikatkette und den privaten Schlüssel des Servers vorhanden sein. Sie können hier mehr darüber lesen, wie man ein selbstsigniertes Zertifikat generiert. www.akadia.com/services/ssh_test_certificate.html (Die Umbenennung von .key und .crt in .pem funktioniert ohne Konvertierung der Dateistruktur für nginx).

Danach haben wir die vhost-Datei definiert. Zuerst definieren wir das Verhalten des Ports 80 als einfache Umleitung nach https, da wir keinen http-Traffic 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 Container des Dokumentenservices in unsere docker-compose.yml hinzufügen. Es gibt hier nicht viel zu konfigurieren.

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

Aber vergessen Sie nicht, den nginx-Container mit dem Dokumentenservice zu verbinden:

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=#hier ein Passwort eingeben
      - MYSQL_PASSWORD=#hier ein anderes Passwort eingeben
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

und fügen einen Link zu nginx hinzu:

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

Jetzt ist es Zeit, die Container zu starten.

docker-compose up -d  

Nach einer Weile wird nginx Sie auf die externe Schnittstelle von NextCloud umleiten, die standardmäßig die Konfigurationsseite ist. Sie müssen den Benutzernamen und das Passwort für Ihren ersten Administrationsbenutzer sowie die Datenbankanmeldeinformationen eingeben, die Sie in der docker-compose.yml angegeben haben. Nachdem die Einrichtung abgeschlossen ist, können Sie sich anmelden. In unserem Fall dauerte das Warten fast eine Minute und erforderte eine zusätzliche Aktualisierung der Anmeldeseite, bevor wir auf den Cloud-Service zugreifen konnten.

Fenster der NextCloud-ServiceeinstellungenEinrichtung von NextCloud + ONLYOFFICE auf einem Server mithilfe von Docker

Schritt 4: Verbindung von NextCloud und ONLYOFFICE

In diesem Schritt müssen Sie die NextCloud-App installieren, die die Funktionalität von ONLYOFFICE verbindet. Beginnen Sie mit dem Anwendungsmanager in der oberen rechten Ecke des Menüs. Finden Sie die ONLYOFFICE-App (im Bereich „Büro und Text“ oder durch Verwendung der Suche), installieren und aktivieren Sie sie.

Gehen Sie danach über das Menü in der oberen rechten Ecke zu den Einstellungen und Sie sollten das Element ONLYOFFICE im linken Menü finden. Klicken Sie darauf. Sie müssen die Adressen wie unten angegeben eintragen.

Einstellungen der IntegrationsanwendungEinrichtung von NextCloud + ONLYOFFICE auf einem Server mithilfe von Docker

Die erste Adresse wird verwendet, um auf einige js- und css-Dateien direkt aus der im Browser ausgeführten Anwendung zuzugreifen (daher müssen wir den Zugriff auf den ONLYOFFICE-Dienst über Nginx öffnen). Der geheime Schlüssel wird nicht verwendet, da wir der Isolationsebene von Docker mehr vertrauen als dem permanenten Authentifizierungsschlüssel. Die dritte Adresse wird vom NextCloud-Container für die direkte Verbindung zur ONLYOFFICE-API verwendet und sie nutzt den standardmäßigen internen Hostnamen von Docker. Das letzte Feld wird verwendet, damit ONLYOFFICE Rückfragen an die NextCloud-API stellen kann, indem es die externe IP-Adresse oder die interne Docker-Adresse verwendet, wenn Sie Docker-Netzwerke verwenden, aber in unserem Fall wird dies nicht genutzt. 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, die mit der Integration verbundenen Einstellungen anzeigen – beispielsweise, welche Dateitypen mit dieser Integration bearbeitet werden können. Passen Sie sie nach Bedarf an.

Letzter Schritt: Wo den Editor finden

Wenn Sie in die Ordner Ihres Cloud-Speichers zurückkehren und auf „+“ klicken, um eine neue Datei zu erstellen, steht Ihnen eine neue Option zur Verfügung, um ein Dokument, eine Tabelle oder eine Präsentation zu erstellen. Mit diesen können Sie die genannten Dateitypen erstellen und sofort bearbeiten, indem Sie ONLYOFFICE verwenden.

DateierstellungsmenüEinrichtung von NextCloud + ONLYOFFICE auf einem Server mithilfe von Docker

Ergänzung 1

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

Quelle: habr.com

60GB SSD 8Gb DDR4