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

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster