Einrichten von NextCloud + ONLYOFFICE auf demselben Server mit Docker

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

Es ist schwer, den Wert von Online-Office-Suiten wie Google Docs und Cloud-Speicher im Leben technikorientierter Menschen zu unterschätzen. Die Technologie ist so weit verbreitet, dass selbst Microsoft, das lange Zeit den Markt für Büroanwendungen dominiert hat, sich in letzter Zeit darauf konzentriert, die Webanwendung Office 365 zu entwickeln und Benutzer davon zu überzeugen, auf ein Abonnementmodell für die Nutzung ihrer eigenen Dienste umzusteigen. Wir laden diejenigen ein, die sich für die Installation und Konfiguration ihres eigenen Speichers unter cat interessieren.

Vor einiger Zeit haben wir uns mit Cloud-Speicherlösungen und Open-Source-Web-Office-Suiten befasst, die sich problemlos für den Einsatz in Kleinstunternehmen einsetzen lassen. Der Hauptgrund dafür, die gesamte Dokumentation online zu halten, besteht darin, den Papieraufwand auf ein Minimum zu beschränken und trotz des geringen Transaktionsvolumens gute Geschäftspraktiken umzusetzen. Die Kehrseite der Medaille ist, dass die Anmietung eines Cloud-Servers zur Bereitstellung dieses Dienstes weniger sicher ist als die direkte Speicherung auf dem Gelände des Unternehmens, da Sie keine Möglichkeit haben, den physischen Zugriff auf Ihren Server oder den Datenverkehr zu überprüfen. Daher sind auch Ende-zu-Ende-Verschlüsselung und Open-Source-Software erforderlich.

Unter Berücksichtigung aller verfügbaren Informationen zu Open-Source-Lösungen haben wir zwei aktive Projekte (mit Commits im Git-Repository der letzten 12 Monate) gefunden, die für Cloud-Speicher entwickelt wurden: NextCloud und OwnCloud sowie die einzige aktive ONLYOFFICE-Office-Suite. Beide Cloud-Speichertools verfügen über ungefähr die gleiche Funktionalität, und die Entscheidung für NextCloud basierte auf dem Vorliegen 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 der Dienste begannen, wurde deutlich, dass es an Informationen zur Integration der oben genannten Dienste mangelte. 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 einem gemeinsam genutzten Nginx. Stattdessen verwendeten sie Trennungstechniken wie die Verwendung separater Ports für die Dokumentendienst-API. Ein weiterer Vorschlag bestand darin, einen separaten Server für Document Service bereitzustellen und die in Document Service integrierte Nginx-Instanz manuell zu konfigurieren, um einen Zugriffsschlüssel (einen vorbekannten Zugriffsschlüssel, der das Recht zum Zugriff auf die Datencloud bestätigt) und TLS-Zertifikate zu installieren. Die oben genannten Ansätze galten als nicht sicher und nicht effektiv genug, daher haben wir NextCloud, ONLYOFFICE und ein gemeinsames Nginx integriert, das Anfragen mithilfe von Docker-Compose nach Domänennamen trennt. Hier finden Sie Schritt-für-Schritt-Informationen dazu.

Schritt 1: Nginx-Container

Dies ist eine sehr einfache Einrichtung, aber dieser Schritt erfordert die meiste Arbeit zur Konfiguration des Reverse-Proxy-Servers. Wir haben zunächst 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 öffentlich zugänglichen Ports 80 und 443 erstellt, die Konfiguration auf nginx/nginx-vhost.conf abgebildet und ein Speicher für Zertifikate definiert, die als selbstsignierte Zertifikate oder mithilfe des Certbots von Let's encrypt in /nginx/certificates generiert wurden. Dieser Speicherort sollte Ordner für office.yourdomain.com und cloud.yourdomain.com enthalten, jeweils mit den Dateien fullchain1.pem und privkey1.pem für die Zertifikatskette bzw. den privaten Schlüssel des Servers. Weitere Informationen zum Erstellen eines selbstsignierten Zertifikats finden Sie hier. www.akadia.com/services/ssh_test_certificate.html (Das Umbenennen von .key und .crt in .pem funktioniert ohne Konvertierung der Dateistruktur für Nginx).

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

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

Anschließend haben wir für unsere Dienste zwei virtuelle Server auf Port 443 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 Document Service Container 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 mit dem Dokumentendienst zu verknüpfen:

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

Schritt 3: NextCloud

Fügen Sie zunächst 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ügen Sie einen Link zu Nginx hinzu:

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

Jetzt geht es ans Beladen der Container.

docker-compose up -d  

Nach einer Weile leitet Nginx Sie zum NextCloud-Frontend weiter, der Standardkonfigurationsseite. Sie müssen den Benutzernamen und das Passwort für Ihren ersten Admin-Benutzer sowie die Datenbankanmeldeinformationen eingeben, die Sie in docker-compose.yml angegeben haben. Sobald die Einrichtung abgeschlossen ist, können Sie sich anmelden. In unserem Fall dauerte die Wartezeit fast eine Minute und erforderte eine zusätzliche Aktualisierung der Anmeldeseite, bevor wir uns beim Cloud-Dienst anmelden konnten.

NextCloud-DiensteinstellungsfensterEinrichten von NextCloud + ONLYOFFICE auf demselben Server mit Docker

Schritt 4: NextCloud und ONLYOFFICE verbinden

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

Gehen Sie anschließend über das Menü in der oberen rechten Ecke zu Einstellungen. Im linken Menü sollten Sie den Eintrag ONLYOFFICE finden. Gehen Sie hinein. Sie müssen die Adressen wie unten angegeben registrieren.

Einstellungen der IntegrationsanwendungEinrichten von NextCloud + ONLYOFFICE auf demselben Server mit Docker

Die erste Adresse wird verwendet, um direkt von der im Browser ausgeführten Anwendung aus auf einige JS- und CSS-Dateien zu verlinken (dies ist, was wir benötigen, um den Zugriff auf den ONLYOFFICE-Dienst über nginx zu öffnen). Der geheime Schlüssel wird nicht verwendet, da wir der Docker-Isolationsschicht mehr vertrauen als dem dauerhaften Authentifizierungsschlüssel. Die dritte Adresse wird vom NextCloud-Container verwendet, um eine direkte Verbindung zur ONLYOFFICE-API herzustellen, und verwendet den standardmäßigen internen Hostnamen von Docker. Nun, das letzte Feld wird verwendet, damit ONLYOFFICE mithilfe einer externen IP-Adresse oder einer internen Docker-Adresse, wenn Sie Docker-Netzwerke verwenden, Anfragen an die NextCloud-API zurücksenden kann. 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, Einstellungen rund um die Integration an – zum Beispiel, welche Dateitypen von dieser Integration bearbeitet werden können. Passen Sie es an, wie Sie es für richtig halten.

Der letzte Schritt: Wo finde ich den Editor?

Wenn Sie zu Ihren Cloud-Speicherordnern zurückkehren und auf das „+“ 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 Art von Dateien mit ONLYOFFICE erstellen und sofort bearbeiten.

Menü zur DateierstellungEinrichten von NextCloud + ONLYOFFICE auf demselben Server mit Docker

1-Nachtrag

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

Source: habr.com

Kommentar hinzufügen