Nextcloud bietet neben dem Speichern von Dateien auch noch erweiterte Funktionen wie z.B. die Verwaltung von Kontakten und Kalendern. Ebenso sind Online-Office-Funktionalitäten mit der eigenen Cloud-Lösung möglich: Hier gibt es die Alternativen ONLYOFFICE und Collabora. Für welche Lösung man sich hier entscheidet, ist zunächst einmal Geschmackssache.
Zum Thema ONLYOFFICE gab es bereits einen Artikel in diesem Blog. Die hier gezeigte Lösung hatte allerdings einen entscheidenden Nachteil: Die Office-Funktionalitäten waren nur verfügbar, wenn man über das lokale Netzwerk (LAN) auf die eigene Cloud zugegriffen hat. Das Bearbeiten von Dokumenten über das Internet war auf diese Art und Weise nicht möglich, da beim Bearbeiten von Dokumenten immer direkt auf die IP zugegriffen wurde, auf der ONLYOFFICE installiert wurde. Diese LAN-IP war über das Internet natürlich nicht erreichbar.
In diesem Artikel soll es daher wieder mal um die Einrichtung von ONLYOFFICE mittels Docker unter Nextcloud gehen. Dieses Mal sollen jedoch keine Einschränkungen für die Benutzung des Online-Office gelten: Somit ist dann der Zugriff sowohl über das lokale Netzwerk, also auch über das Internet möglich.
Als Grundlage dient wie immer der Artikel Nextcloud auf Ubuntu Server 18.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban.
Update-Historie (letztes Update 21.12.2021)- 21.12.2021:
- Virtueller Host für OnlyOffice: Hinzufügen der listen-Direktive für IPv6.
- 18.06.2021:
- Aufruf von acme.sh mit Parameter „server“, so dass Zertifikate über Let’s Encrypt bezogen werden.
- 03.02.2020:
- Cipher Suite DHE-RSA-AES256-GCM-SHA384 entfernt.
- 07.12.2019:
- Troubleshooting: Hinweise bzgl. X-Frame-Options hinzugefügt.
- 05.09.2019:
- Hinweise hinzugefügt, falls acme.sh statt Certbot verwendet wird.
- 23.12.2018:
- Zeilenangaben für das Übertragen der SSL-Einstellungen in die ssl.conf hinzugefügt.
- 19.12.2018:
- Die SSL-Konfiguration wird nun in das Verzeichnis /etc/nginx/snippets/ssl.conf ausgelagert, ansonsten kam es z.T. zu Problemen mit den Setzen der HTTP-Header.
- 12.11.2018:
- Die SSL-Konfiguration wird nun unter /etc/nginx/conf.d/ssl.conf gespeichert/ausgelagert.
Inhalt
Zweite (Sub-)Domain für ONLYOFFICE
Ich gehe in diesem Artikel davon aus, dass der eigene Server, auf dem Nextcloud bereits läuft, über die DynDNS-Domain meindomain.de erreichbar ist. DynDNS sorgt hier dafür, dass die öffentliche IP-Adresse des Routers auf eine Domain gemappt wird. Im Router wird die Domain dazu in den DynDNS-Einstellungen hinterlegt. Leider unterscheidet sich das Vorgehen von Router zu Router, daher würde eine detaillierte Anleitung für verschiedene Router-Modelle dem Umfang des Artikels sprengen.
Voraussetzung für ONLYOFFICE ist nun eine zweite (Sub-)Domain, über die der Dokumenten-Server später erreichbar sein wird. Als Beispiel nehme ich hier einfach die Domain onlyoffice.meinedomain.de. Diese zweite Domain muss dabei ebenfalls auf die öffentliche IP-Adresse des Routers „zeigen“, ist sozusagen auch eine zweite (oder besser gesagt alternative) DynDNS-Domain.
Mehrere DynDNS-Domains mittels CNAME
Und genau das ist hier das Problem. In fast allen Router-Modellen kann nur ein DynDNS-Anschluss mit nur einer Domain festgelegt werden. Die Lösung für dieses Problem stellt ein sog. CNAME-Eintrag für eine zweite (Sub-)Domain dar. Mittels CNAME wird einfach ausgedrückt ein alternativer Name für eine Domain hinterlegt: Der CNAME-Eintrag der Office-Domain muss daher die bereits vorhandene DynDNS-Domain sein.
Wo kann man diesen CNAME-Eintrag nun hinterlegen? Dies passiert normalerweise in der Domain-Verwaltung des Webspace-Providers. Auch hier unterscheidet sich das Vorgehen von Anbieter zu Anbieter, gute Erfahrungen konnte ich hier allerdings mit All-Inkl.com (Affiliate-Link) machen.
Hier loggt man sich zunächst im Kundenportal (KAS) ein und legt eine neue Subdomain an. Dazu findet man im Menü den Eintrag Subdomain. Über den Punkt Neue Subdomain anlegen kann hier eine neue Subdomain beantragt werden. Hier kann man alle Einstellungen einfach übernehmen, da diese Domain später nicht auf den Webspace, sondern die öffentliche IP-Adresse des eigenen Routers zeigen wird.

Um nun noch den CNAME-Eintrag für die neue Subdomain hinzuzufügen, muss man die Domain-Einstellungen unter Tools > DNS-Einstellungen bearbeiten. Hier sieht man dann die eigene Domain, über die auch der DynDNS-Anschluss läuft (meinedomain.de). Mit einem Klick auf Bearbeiten kann diese Domain modifiziert werden. Hier klickt man dann auf den Punkt neuen DNS Eintrag erstellen. Folgende Einstellungen sind hier vorzunehmen:
- Name: Der Name der Subdomain (hier also onlyoffice.meinedomain.de).
- Typ/Prio.: CNAME
- Data: Hier wird die eigentliche DynDNS-Domain eingetragen (also meinedomain.de).

Nach einem Klick auf Speichern werden die Änderungen übernommen.
SSL-Zertifikat für die neue Domain hinzufügen
Damit die Verbindung zu ONLYOFFICE stets verschlüsselt, also über HTTPS abläuft, muss für die neue Subdomain noch ein SSL-Zertifikat über Let’s Encrypt erzeugt werden. Dazu wird das bereits für Nextcloud verwendete Zertifikat modifiziert, indem wir dieses Zertifikat um eine weitere (Sub-)Domain erweitern. Hierfür sind keine Änderungen an den virtuellen Hosts von nginx erforderlich. Ebenfalls müssen bereits vorhandene Diffie-Hellman-Parameter (siehe Beschreibung) nicht neu erzeugt werden und können aus der bestehenden Installation übernommen werden.
Certbot
Wenn für die Generierung der Zertifikate Certbot zum Einsatz kommt, dann reicht hier folgender Befehl auf der Kommandozeile, um neue Zertifikate für beide (Sub-)Domains auszustellen:
certbot certonly --webroot -w /var/www/letsencrypt -d meinedomain.de -d onlyoffice.meinedomain.de --rsa-key-size 4096
Wichtig ist hier die Angabe aller (Sub-)Domains mit dem Parameter -d. Nach diesem Befehl werden die Zertifikats-Dateien unter /etc/letsencrypt/live/meinedaomin.de erneuert. Nicht wundern, hier wird nicht für jede (Sub-)Domain ein Zertifikat erzeugt, sondern nur ein Zertifikat, welches für mehrere Domains ausgestellt ist.
acme.sh
Falls acme.sh für die Generierung der Zertifikate verwendet wird, sollten zunächst die Grundlagen zu acme.sh aus dem Artikel Let’s Encrypt Zertifikate mit acme.sh und nginx entnommen werden.
Der konkrete Befehl zum Erzeugen der Zertifikate sieht in diesem Fall dann so aus:
acme.sh --issue -d meinedomain.de -d onlyoffice.meinedomain.de --server letsencrypt --keylength 4096 -w /var/www/letsencrypt --key-file /etc/letsencrypt/meinedomain.de/key.pem --ca-file /etc/letsencrypt/meinedomain.de/ca.pem --cert-file /etc/letsencrypt/meinedomain.de/cert.pem --fullchain-file /etc/letsencrypt/meinedomain.de/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
Hier werden dann ebenfalls alle (Sub-)Domains mittels des Parameters -d angegeben und in einem einzigen Zertifikat „verpackt“.
Auslagern der SSL-Einstellungen aus dem virtuellen Host für Nextcloud
Für die neue Domain muss nun natürlich ein neuer virtueller Host angelegt werden. Dieser zielt wieder auf SSL ab, daher sind hier auch sämtliche SSL-Einstellungen wie ssl_certificate, ssl_protocols, ssl_ciphers, etc. notwendig. Damit wir diese nicht doppelt pflegen müssen (im Gateway-Host und im virtuellen Host für ONLYOFFICE), lagern wir diese Anweisungen für SSL einfach aus.
Vorher sollten alle virtuellen Hosts gesichert werden, falls beim Umzug etwas schief gehen sollte.
Dazu erstellen wir zunächst einen neuen Ordner, in dem die SSL-Einstellungen gespeichert werden sollen:
mkdir /etc/nginx/snippets
In diesem Ordner erstellen wir anschließend eine neue Datei speziell für allgemeine SSL-Einstellungen, die für alle (Sub-)Domains gelten sollen.
Hinweis: Diese ausgelagerten Einstellungen dürfen nicht im selben Ordner wie die restlichen vHosts (/etc/nginx/conf.d) gespeichert werden, da es ansonsten Probleme mit dem Setzen der HTTP-Header gibt.
In diese Datei werden nun die Anweisungen übernommen, die für die SSL- und Header-Einstellungen zuständig sind. In diesem konkreten Beispiel (siehe hier) sind die Zeilen 32-95 im Gateway-Host betroffen. Dieser Block wird nun aus dem Gateway-Host kopiert und in die ssl.conf eingefügt.
nano /etc/nginx/snippets/ssl.conf
In diesem Beispiel sind es die folgenden Inhalte.
# Certificates used ssl_certificate /etc/letsencrypt/live/meinedomain.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/meinedomain.de/privkey.pem; # Not using TLSv1 will break: # Android <= 4.4.40 # IE <= 10 # IE mobile <=10 # Removing TLSv1.1 breaks nothing else! # TLSv1.3 is not supported by most clients, but it should be enabled. ssl_protocols TLSv1.2 TLSv1.3; # Cipher suite from https://cipherli.st/ # Max. security, but lower compatibility ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384'; # Cipher suite from https://wiki.mozilla.org/Security/Server_Side_TLS #ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; # (Modern) cipher suite from https://mozilla.github.io/server-side-tls/ssl-config-generator/ #ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; # Diffie-Hellman parameter for DHE ciphersuites, recommended 4096 bits ssl_dhparam /etc/nginx/ssl/dhparams.pem; # Use multiple curves. # secp521r1: Not supported by Chrome # secp384r1: Not supported by Android (DAVdroid) ssl_ecdh_curve secp521r1:secp384r1:prime256v1; # Server should determine the ciphers, not the client ssl_prefer_server_ciphers on; # OCSP Stapling # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; # This should be chain.pem # See here: https://certbot.eff.org/docs/using.html ssl_trusted_certificate /etc/letsencrypt/live/meinedomain.de/chain.pem; resolver 192.168.178.1; # SSL session handling ssl_session_timeout 24h; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # # Add headers to serve security related headers # # HSTS (ngx_http_headers_module is required) # In order to be recoginzed by SSL test, there must be an index.hmtl in the server's root add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload;"; add_header X-Content-Type-Options "nosniff"; add_header Referrer-Policy "no-referrer"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Remove X-Powered-By, which is an information leak fastcgi_hide_header X-Powered-By;
Im nächsten Schritt werden nun diese SSL-Einstellungen aus dem Gateway-Host entfernt. Beispielweise also wieder die Zeilen 32-95. Damit die SSL-Einstellungen nun auch für den Gateway-Host gelten, wird nun statt dem entfernten Block einfach folgende Zeile mit übernommen:
include /etc/nginx/snippets/ssl.conf;
Wichtig ist hier v.a., dass die Anweisungen nicht doppelt aufgeführt sind (einmal im Gateway-Host direkt und einmal durch den Include). Daher müsen die eigentlichen SSL-Anweisungen auch aus dem Gateway-Host entfernt werden.
Anschließend starten wir den Webserver neu:
service nginx restart
Nun sollte man zunächst einmal testen, ob alle vorhandenen Web-Anwendungen (wie z.B. Nextcloud) noch wie erwartet funktionieren. Erst wenn diese Überprüfung erfolgreich war, sollte man hier weitermachen.
Virtuellen Host für ONLYOFFICE hinzufügen
Alles funktioniert noch? Gut! Dann weiter…
Im nächsten Schritt wird für die neue Subdomain ein eigener vHost hinzugefügt:
nano /etc/nginx/conf.d/onlyoffice.meinedomain.de.conf
Der Inhalt ist hier recht übersichtlich:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name onlyoffice.meinedomain.de; # Include SSL configuration include /etc/nginx/snippets/ssl.conf; # # Configuration for OnlyOffice # location / { proxy_pass https://192.168.178.60:4433; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Proto $scheme; } }
Die SSL-Einstellungen haben wird ja zuvor ausgelagert, so dass diese nun in diesem zweiten vHost einfach wiederverwendet werden können.
Wichtig bei der Angabe des proxy_pass:
- Für die Verbindung zur Maschine, auf der später ONLYOFFICE laufen wird, nutzen wir ebenfalls HTTPS. Wenn dies der gleiche Rechner ist, auf dem auch Nextcloud schon läuft, könnte man hier auch einfach auf HTTP setzen, da die Kommunikation dann nur Rechner-intern abläuft (dazu später mehr).
- Die IP ist hier die lokale IP-Adresse des Rechners, auf dem ONLYOFFICE später laufen wird. Dies kann also die IP der Maschine sein, auf der auch der Webserver (und z.B. Nextcloud) läuft, oder auch eine andere Maschine im LAN.
- Als Port habe ich hier 4433 angegeben. Dies ist besonders wichtig, wenn ONLYOFFICE auf dem gleichen Rechner installiert wird, auf dem auch der Webserver/Nextcloud läuft. Der Standard-Port für HTTPS 443 wäre hier schon (durch den Gateway-Host) belegt, also muss man auf einen anderen Port ausweichen.
Installation und Einrichtung ONLYOFFICE
Nachdem nun sämtliche Voraussetzungen erfüllt sind, kann es an die Installation von ONLYOFFICE gehen. Ich bevorzuge hier den Weg über Docker, da eine komplett manuelle Installation sehr aufwendig ist. Hier ist es auch egal, auf welcher Maschine ONLYOFFICE installiert wird. Entweder man installiert das Online-Office direkt auf dem Rechner, auf dem auch Nextcloud bereits läuft, oder man nimmt eine zweite Maschine (oder VM), auf der dann nur ONLYOFFICE betrieben wird.
Docker sollte auf jeden Fall bereits installiert sein. Fall nicht, sollte dieser Schritt wie im Artikel Docker auf Ubuntu Server nun nachgeholt werden.
Alle folgenden Schritte müssen auf der Maschine ausgeführt werden, auf der ONLYOFFICE installiert werden soll.
Vorbereitungen für die Installation
Die Verbindung zu ONLYOFFICE sollte aus Sicherheitsgründen immer verschlüsselt, also über HTTPS ablaufen. Durch den vHost für ONLYOFFICE ist die Verbindung über das Internet auch bereits verschlüsselt. Bleibt nur der Verbindungsweg vom Webserver auf die Maschine, auf der das Online-Office später laufen wird (also die Verbindung im lokalen Netzwerk). Diese Verbindung sollte ebenfalls verschlüsselt werden, damit auch LAN-intern stets sichere Verbindungen aufgebaut wird.
Wenn ONLYOFFICE auf dem gleichen Rechner gehostet wird, auf dem schon Nextcloud und der Webserver laufen, ist dieser Schritt eigentlich optional, da hier nur eine Rechner-interne Verbindung zustande kommt. Trotzdem empfehle ich diese Schritte auszuführen, besonders wenn die Office-Lösung und der Webserver/Nextcloud auf unterschiedlichen Maschinen installiert werden.
Da wir hier ja nur mit einer IP-Adresse arbeiten (die beim proxy_pass angegeben wird), können wir hierfür kein Let’s Encrypt Zertifikat erstellen, da diese Zertifikate nicht auf IP-Adressen, sondern nur auf Domains ausgestellt werden können. Daher greifen wir hier auf ein selbst signiertes Zertifikat zurück.
Dieses wird mit folgenden Befehlen erzeugt:
mkdir -p /app/onlyoffice/DocumentServer/data/certs cd /app/onlyoffice/DocumentServer/data/certs openssl genrsa -out onlyoffice.key 4096 openssl req -new -key onlyoffice.key -out onlyoffice.csr openssl x509 -req -days 3650 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt openssl dhparam -out dhparam.pem 4096 chmod 400 onlyoffice.key chmod 400 onlyoffice.crt chmod 400 onlyoffice.csr chmod 400 dhparam.pem
- Beim Befehl openssl req -new -key onlyoffice.key -out onlyoffice.csr wird man nach dem „Common Name“ gefragt (Common Name (e.g. server FQDN or YOUR name)). Hier ist einfach die IP des lokalen Systems anzugeben (in diesem Fall 192.168.178.60). Ebenso kann man ein „challenge password“ angeben. Dieses kann man einfach leer lassen (einfach mit Enter bestätigen).
- Achtung: Die Erzeugung der sog. Diffie-Hellmann-Parameter mit einer Länge von 4096 Bit (openssl dhparam -out dhparam.pem 4096) kann u.U. sehr lange dauern. Auf schwacher Hardware kann das schon einmal mehrere Stunden in Anspruch nehmen. Wer nicht so lange warten möchte, kann die Schlüssel-Länge auf 2048 Bit reduzieren (openssl dhparam -out dhparam.pem 2048).
- Das Zertifikat hat eine Gültigkeit von 3650 Tagen (10 Jahre). Hier kann bei Bedarf auch eine andere Gültigkeitsdauer angegeben werden.
Installation ONLYOFFICE
Die Installation beschränkt sich dann dank Docker auf einen einzigen Befehl:
docker run --name=ONLYOFFICEDOCKER -i -t -d -p 4433:443 -e JWT_ENABLED='true' -e JWT_SECRET='geheimes-secret' --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver
Hier gilt es folgende Punkte zu beachten:
- Den Container nennen wir hier ONLYOFFICEDOCKER, damit dieser später über diesen Namen und nicht über eine kryptische ID angesprochen werden kann.
- Da bereits der Webserver auf Port 443 lauscht (wenn ONLYOFFICE auf dem gleichen Rechner gestartet wird), müssen wird hier auf einen alternativen Port ausweichen. Der Parameter -p 4433:443 sorgt hier dafür, dass der Port 4433 des Docker-Hosts auf den Port 443 innerhalb des Docker-Containers gemappt wird. Wichtig ist hier, dass dieser Port (4433) mit demjenigen übereinstimmt, der beim proxy_pass im vHost für ONLYOFFICE angegeben wurde.
- Die nächsten zwei Parameter (-e JWT_ENABLED=’true‘ -e JWT_SECRET=’geheimes-secret‘) erhöhen die Sicherheit, da zur Kommunikation mit dem Container ein sog. JSON Web Token benötigt wird. Im Grunde genommen handelt es sich dabei um ein Passwort (geheimes-secret – hier sollte man natürlich ein eigenes Passwort wählen), welches später in Nextcloud hinterlegt werden muss, damit die Verbindung zu ONLYOFFICE aufgebaut werden kann. Dies verhindert, dass der ONLYOFFICE-Container „unbemerkt“ von anderen Verbindungen genutzt werden kann.
- Mit —restart=always wird der Container bei jedem Systemstart automatisch gestartet.
- Mit dem letzten Parameter (-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver) wird ein sog. Volume definiert: Alle Dateien, die im Verzeichnis /app/onlyoffice/DocumentServer/data des Hosts liegen, werden innerhalb des Containers im Verzeichnis /var/www/onlyoffice/Data onlyoffice/documentserver bereitgestellt. Diese Funktion wird benötigt, damit der Container das zuvor erzeugte Zertifikat finden und nutzen kann.
Nun wird das entsprechende Docker-Image heruntergeladen und auch gleich gestartet.

Nach dem Starten des Containers läuft ONLYOFFICE bereits. Wenn man nun im Browser die Domain onlyoffice.meinedomain.de oder die IP-Adresse der jeweiligen Maschine (dann aber mit dem alternativen Port 4433) aufruft, sollte folgende Seite erscheinen:

Einbinden von ONLYOFFICE in Nextcloud
Nachdem ONLYOFFICE läuft, geht es nun mit der eigenen Nextcloud weiter, damit hier Online-Office-Funktionalitäten hinzugefügt werden können.
Die passende App findet man dabei im Nextcloud App Store in der Kategorie Büro & Text:

Wenn die App aktiviert wurde, können die Einstellungen nun in der Admin-Oberfläche von Nextcloud unter dem Punkt ONLYOFFICE angepasst werden (damit alle Einstellungen angezeigt werden, muss man auf den Punkt Erweiterte Servereinstellungen klicken).

- Serviceadresse der Dokumentbearbeitung: Hier wird die Subdomain angegeben, die wir extra für ONLYOFFICE angelegt habe, in diesem Beispiel also https://onlyoffice.meinedomain.de.
- Geheimer Schlüssel (freilassen, um zu deaktivieren): Hier ist das JWT-Token anzugeben, welches beim Starten des Docker-Containers angegeben wurde (geheimes-secret).
- Alle anderen Felder kann man leer lassen.
Nach einem Klick auf Speichern sollte eine Meldung erscheinen, dass die Einstellungen erfolgreich übernommen wurden.
Anschließend können Office-Dokumente ganz einfach direkt in der Cloud bearbeitet werden:

Update von ONLYOFFICE
Von Zeit zu Zeit erscheint ein neues Docker-Image für ONLYOFFICE. Leider ist es etwas umständlich herauszufinden, welche Version gerade installiert ist und ob es eine neue Container-Version gibt.
Um zu ermitteln, welche Version aktuell installiert ist, öffnet man am besten ein beliebiges Office-Dokument. Mit der Info-Schaltfläche wird die installierte Version von ONLYOFFICE angezeigt:

Die Version des aktuellsten Images kann nun über Docker Hub (eine Art Suche für Docker-Images) ermittelt werden. Dazu sucht man einfach nach onlyoffice und lässt sich dann die Tags anzeigen. Schneller geht es über diesen Direktlink. Hier werden dann alle Versionen des Images angezeigt:

Zwar werden in der ONLYOFFICE-Hilfe nur drei Versionsnummern angezeigt, allerdings sollte man auch anhand des Datums sehen können, wenn eine neue Version des Containers bereitsteht.
Das Update selbst kann man dann in wenigen Schritten durchführen:
Zunächst wird der aktuelle Container gestoppt und entfernt:
docker stop ONLYOFFICEDOCKER docker rm ONLYOFFICEDOCKER
ONLYOFFICEDOCKER ist hier der Name des Containers, den wir beim ersten Start angegeben haben. Hier könnte man auch die ID des Containers angeben (kann man mit docker ps ermitteln).
Optional: Bei der Arbeit mit Docker bleiben oft Reste auf dem System zurück (z.B. alte, ungenutzte Container). Gerade wenn auf dem System ausschließlich ONLYOFFICE per Docker betrieben wird, empfiehlt es sich, das komplette Docker-System zu bereinigen. Dazu werden einfach folgende Befehle ausgeführt:
docker system prune -a docker image prune -a docker container prune
Anschließend wird die neuste Version des Containers heruntergeladen und über den bekannten Befehl gestartet:
docker pull onlyoffice/documentserver docker run --name=ONLYOFFICEDOCKER -i -t -d -p 4433:443 -e JWT_ENABLED='true' -e JWT_SECRET='geheimes-secret' --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver
Beim zweiten Befehl ist hier nur wichtig, dass genau das gleiche JWT_SECRET wie schon beim Start des Containers angegeben wird, ansonsten kann nach dem Update keine Verbindung mehr von Nextcloud hergestellt werden.
Troubleshooting
Generelle Fehlersuche
Manchmal kann es vorkommen, dass ONLYOFFICE nicht wie erwartet funktioniert. Bei dem System sind ziemlich viele Komponenten beteiligt (Webserver, Nextcloud, Docker-Container), so dass man zunächst einmal das Problem eingrenzen sollte.
Zunächst sollte immer erst die Subdomain für ONLYOFFICE aufgerufen werden: onlyoffice.meinedomain.de
Erscheint hier nicht die Übersichtsseite von ONLYOFFICE, dann tritt das Problem wohl auf dem Verbindungsweg vom Internet zum Webserver auf. Dann sollten zunächst einmal die Logs des Webservers kontrolliert werden (auf der Maschine, wo der Gateway-Host zu finden ist und auch Nextcloud installiert ist).
nano /var/log/nginx/error.log
Hier sollten dann Fehlermeldungen zu finden sein, mit den man das Problem weiter eingrenzen kann.
Wenn die Seite erreichbar ist, aber ONLYOFFICE trotzdem nicht funktioniert, sollte in diesem Fall zunächst einmal das Nextcloud-Log überprüft werden (in der Admin-Oberfläche von Nextcloud unter Protokollierung).
Falls hier auch nichts auffälliges zu sehen ist, sollten die Logs des Docker-Containers überprüft werden:
docker logs ONLYOFFICEDOCKER
Hier sind dann u.U. Hinweise zu finden, dass ein benötigter Dienst nicht gestartet werden konnte. In diesem Fall hilft es meistens, den Rechner, auf dem ONLYOFFICE läuft, einfach mal neu zu starten.
Erst wenn dies auch zu keinen neuen Erkenntnissen führt, kann man sich auch auf die Kommandozeile des Containers selbst einloggen. Dazu einfach auf der Docker-Maschine folgenden Befehl ausführen:
sudo docker exec -it ONLYOFFICEDOCKER bash
Auf der Kommandozeile des Containers kann dann eine detaillierte Fehlersuche stattfinden. Mit folgendem Befehl kann man beispielsweise die Webserver-Logs einzusehen:
nano /var/log/nginx/error.log
Um die Kommandozeile des Containers wieder zu verlassen, reicht folgender Befehl:
exit
Spezifische Fehler
Das Öffnen eines Dokuments resultiert in einem leeren Browser-Fenster, obwohl der Document Server läuft
Dieser Fehler äußert sich meist so, dass der Document Server anscheinend ordnungsgemäß gestartet wurde und der Aufruf der OnlyOffice-Domain im Browser (https://onlyoffice.meinedomain.de) eine entsprechende Meldung anzeigt.
Allerdings können in Nextcloud keine Dokumente geöffnet werden – das Browser-Fenster bleibt einfach leer.
Hier werfen wir zunächst einen Blick in die Developer-Konsole des Browsers (F12). Hier wird vermutlich eine Fehlermeldung angezeigt, die auf ein Problem mit den „X-Frame-Options“ hinweist:
Laden verboten durch X-Frame-Options: „SAMEORIGIN“ von „https://onlyoffice.meinedomain.de/5.4.2-46//web-apps/apps/…46&lang=de-DE&customer=ONLYOFFICE&frameEditorId=iframeEditor“, Website erlaubt keine quellübergreifende (cross-origin) Frames von „https://meinedomain.de/nextcloud/apps/onlyoffice/169?filePath=test.ods“
Die Ursache ist dabei, dass der Header X-Frame-Options beim Aufruf der OnlyOffice-Domain gesetzt wurde. Dieser darf für den virtuellen Host, der für die OnlyOffice-Domain zuständig ist, nicht gesetzt werden.
Die Lösung besteht nun dain, die Stelle zu finden, an der dieser Header für die OnlyOffice-Domain gesetzt wird. Dazu durchsucht man den vHost für OnlyOffice und alle inkludierte Konfigurationen. Eine entsprechende Zeile kann dann beispielsweise folgendermaßen aussehen:
add_header X-Frame-Options "SAMEORIGIN" always;
Diese Anweisung ist dann für die OnlyOffice-Domain zu entfernen.
Nach den Änderungen und einem Neustart des Webservers kann es nun noch sein, dass der Browser-Cache einmal geleert werden muss. Anschließend sollten sich OnlyOffice-Dokumente über Nextcloud öffnen und bearbeiten lassen.
Fazit
Es sind schon einige Schritte notwendig, um ONLYOFFICE in Verbindung mit Nextcloud zum Laufen zu kriegen. Dennoch lohnt es sich, da man nun direkt in der eigenen Cloud ein Online-Office nutzen kann. Wer vorher beispielsweise Google Docs verwendet hat, wird sich auch bei ONLYOFFICE sehr schnell zurechtfinden – und das ohne die neugierigen Blicke von Google & Co, da alle Daten sicher in der eigenen Nextcloud gespeichert sind.
Weiterführende Artikel
- Nextcloud auf Ubuntu Server 18.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban
- Ubuntu Server 18.04 LTS als Hyper-V Gastsystem installieren und optimal einrichten
- Docker auf Ubuntu Server
- Nextcloud: Online-Office mit Collabora
Hallo Jan,
super Anleitungen + Erklärungen die du hier veröffentlichst! Gefällt mir sehr und hat mir schon viel weitergeholfen. Danke dafür.
Nun zu meinem Anliegen: bin derzeit am Verzweifeln weil die zweite Subdomain mit OnlyOffice nicht zum Laufen gebracht werden will.
Kurz zu meiner Konfiguration:
Habe nach deiner Anleitung Nextcloud 16 auf Ubuntu Server 18.04 mit nginx, mariadb, acme.sh, redis, fail2ban etc installiert. Des Weiteren habe ich WordPress, den Coturn-Server, Onlyoffice(im localnetwork) zum laufen gebracht. Gestern habe ich dann einige Updates (NC + NC-Apps + Ubuntu Updates) installiert und daraufhin die Domainadresse gewechselt (nach deiner Anleitung – anderer Artikel). Habe die .conf-Dateien alle angepasst, die Domainnamen ausgetauscht, dann aber über Certbot statt acme.sh neue Certificates von LE geholt (war schon spät und wollte mir das System nicht noch mehr zerschießen bevor ich schlafen gehe => Deswegen nach dieser Anleitung halt neue Certs von Certbot). Hat auch funktioniert, da ein grünes Vorhängeschloss in der URL-Leiste zu finden ist.
Zur Domain: Habe eine „Subdomain“ hier nun: h.meinedomain.de als meine Domain für nextcloud,wp, etc. verwendet und nun eine zweite Subdomain o.meinedomain.de auf meine Fritzbox eingerichtet (mit gleicher Dyndns-Adresse wie für Nextclout,…, aber halt für OnlyOffice).
Nach dem Umzug habe ich Nextcloud wieder funktionsfähig gemacht und dabei sind Probleme, Probleme und noch mehr Probleme entstanden. Der Coturn-Server-Test (in NC) ging seit dem nicht mehr (obwohl die turnserver.conf angepasst wurde). Also: deinstalliert, neuinstalliert + konfiguriert, in NC alle aktiven Apps deaktiviert, aktiviert. Nun scheint der Coturn-Server und die anderen Apps wieder zu funktionieren, eine Bestätigung von NC habe ich aber seit dem nicht mehr bekommen bei dem OO-Test. Aber er macht was er soll, auch wenn NC es nicht so anzeigt.
WordPress, etc. läuft auch alles. Nur krieg ich den Wurm bei der 2ten Subdomain für OnlyOffice nicht zum laufen. Bekomme meist ein: „502 Bad Gateway“ oder ein (glaube es war) „403 Forbidden“ Status zu sehen bzw. auch ab und an gar keine Verbindung. Liegt das nun daran das ich eine zweite Subdomain nutze, während NC16 auf einer anderen Subdomain läuft und nicht auf der Main-Domain oder liegt das an meinen Konfigurationen oder…? Habe auch schon Docker einmal komplett reinstalliert und die ONLYOFFICEDOCKER ebenfalls mehrfach gelöscht und neuinstalliert. Bin momentan echt für jeden Tipp zu haben. ;D
Grüße,
Kevin
Hallo Jan,
nochn kleiner Edit: über die Dockerlogs sieht man das da was im Zusammenspiel mit nginx nicht ganz rund läuft. Hast du da vielleicht ne Idee?
root@weekend:/home/party# docker logs ONLYOFFICEDOCKER
* Starting PostgreSQL 9.5 database server [ OK ]
* Starting RabbitMQ Messaging Server rabbitmq-server [ OK ]
Starting redis-server: redis-server.
Starting supervisor: supervisord.
* Starting periodic command scheduler cron [ OK ]
* Starting nginx nginx [fail]
Generating AllFonts.js, please wait…Done
ds:docservice: stopped
ds:docservice: started
ds:converter: stopped
ds:converter: started
* Reloading nginx configuration nginx [fail]
==> /var/log/onlyoffice/documentserver/converter/err.log /var/log/onlyoffice/documentserver/converter/out.log /var/log/onlyoffice/documentserver/docservice/err.log /var/log/onlyoffice/documentserver/docservice/out.log /var/log/onlyoffice/documentserver/gc/err.log /var/log/onlyoffice/documentserver/gc/out.log /var/log/onlyoffice/documentserver/metrics/err.log /var/log/onlyoffice/documentserver/metrics/out.log /var/log/onlyoffice/documentserver/spellchecker/err.log /var/log/onlyoffice/documentserver/spellchecker/out.log <==
[2019-06-13T13:10:42.527] [WARN] nodeJS – start cluster with 1 workers
[2019-06-13T13:10:42.535] [WARN] nodeJS – worker 689 started.
[2019-06-13T13:10:43.217] [WARN] nodeJS – Express server starting…
[2019-06-13T13:10:43.289] [WARN] nodeJS – Express server listening on port 8080 in production-linux mode
Grüße
Kevin
bin eben nochmal dein Troubleshooting durchgegangen.
vi var/log/nginx/error.log:
2019/06/13 16:56:22 [error] 7517#7517: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 194.xx.xx.54, server: o.meinedomain.de, request: „GET / HTTP/2.0“, upstream: „https://192.xx.xx.39:4433/“, host: „o.meinedomain.de“
und ausm ONLYOFFICEDOCKER-Container:
nano /var/log/nginx/error.log:
2019/06/13 16:56:03 [emerg] 697#697: SSL_CTX_use_PrivateKey_file(„/var/www/onlyoffice/Data/certs/onlyoffice.key“) failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
2019/06/13 16:56:29 [emerg] 4466#4466: SSL_CTX_use_PrivateKey_file(„/var/www/onlyoffice/Data/certs/onlyoffice.key“) failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
also liegt es an den Zertifikaten?
Hi Kevin,
sorry, dein ursprünglicher Kommentar (glaube ich) ist im Spam-Filter gelandet, daher musste ich diesen erst manuell freigeben. Wenn dein Kommentar nicht direkt angezeigt wird, dann brauchst du diesen nicht mehrfach zu posten, ich versuche hier mindestens einmal am Tag rein zu schauen und gebe Kommentare ggf. manuell frei.
So, zu deinem Problem:
Sieht wirklich so aus, als ob es ein Problem mit den Zertifikaten gäbe (nicht die Let’s Encrypt Zertifikate, sondern die self-signed Zertifikate, die du für OnlyOffice brauchst).
Daher würde ich mal probieren, diese neu zu erzeugen (einfach die Schritte aus dem ersten Code-Block hier ausführen). Danach den OO-Container nochmal komplett neu herunter laden (wie hier beschrieben).
Danach einfach mal die Office-Domain im Browser eingeben und sehen was passiert.
Gruß,
Jan
Hi Jan,
danke für deine Hilfe. Hat super funktioniert. Läuft würd ich sagen ;D Waren tatsächlich die Zertifikate. Habe erst docker bereinigt (mit rm und prune -a, etc.), bevor ich die Schritte oben nochmal durchgegangen bin und hat dann ohne Probleme funktioniert.
Zu dem Kommentar: Sorry, hab mich nur gewundert, weil die Kommentare die ich über ein öffentliches bzw halb-öffentliches Wlannetz (Uni-Wlan) mit Uni-Computern abgeschickt habe, wurden nie angezeigt, während die über VPN mit eigenem Mac von Daheim doch „manchmal“ angezeigt wurden. Hatte dann aber auch keine Lust mehr da weiter herum zu probieren und als dann eine Email mit Freibier (perfekt bei dem Wetter!!) reinkam, war ich auch schon wieder weg ;D
Danke nochmal ;D
Grüße
Kevin
Vielen Dank für diese Anleitung, sie ist wie deine anderen Anleitungen auch wirklich sehr gut. Vor allem auch deien Erklärungen sind super!
Ich habe bei mir jetzt auch OO über Docker am laufen und es funktioniert gut!
Mir ist jetzt allerdings aufgefallen, dass seit der Installation von Docker (und OO) mehrere beam.smp Prozesse am laufen sind und diese auch ohne das onlyoffice aktiv genutz wird mit rund 20% CPU Auslastung laufen.
Ist das bei dir auch so?
Hi,
ich finde bei mir schon einige beam.smp Prozesse, aber diese brauchen nicht wirklich CPU-Leistung.
Auch denke ich nicht, dass dies direkt mit OO zu tun hat. Schau dir mal diesen Link an, vielleicht findest du ja eine Lösung wegen der hohen CPU-Last.
Gruß,
Jan
Ich habe auch gerade das beam.smp Thema. Konstant 80% aufwärts. Hast du je eine Lösung gefunden?
Hi,
da das Problem anscheinend mit RabbitMQ zusammen hängt (siehe Link): Hast du RabbitMQ auf dem Docker-Host-System installiert? Ansonsten vielleicht mal einen Issue bei OnlyOffice erstellen?
Gruß,
Jan
Hallo Jan,
danke für den Tipp.
Da ich die Domain über spdyn am laufen habe und die kein C-Name anbieten habe ich eine zweite Sub-Domain eingerichtet (nextcloud läuft auch über eine Subdomain) die auf meinen Server zeigt.
Also als Beispiel so:
Nextcloud nc.spdyn.de
Onlyoffice office.spdyn.de
immer wenn ich „office.spdyn.de“ aufrufe werde ich zu „nc.spdyn.de“ weitergeleitet. Und bekomme einen 403 Fehler. Ich habe schon verschiedene Sachen ausprobiert. Mal ist es dann ein 404 oder 502 Fehler aber die Willkommensseite von Onlyoffice habe ich noch nie zu Gesicht bekommen. Ich habe auch verschiedene Browser ausprobiert.
Weißt du wieder Rat?
Danke schonmal
Hi Marvin,
eine Weiterleitung reicht hier nicht aus, es muss wirklich ein CNAME-Eintrag sein: Beide Domains müssen auf die gleiche IP verweisen.
Vielleicht ein Tipp: Du könntest für die Office-Domain ja eine Domain von einem Anbieter nehmen, der CNAME unterstützt (z.B. dynv6.com). Das fällt auch nicht weiter auf, da Cloud-Nutzer diese Domain ja nie zu Gesicht bekommen.
Gruß,
Jan
Hallo Jan,
ich habe auch keine Weiterleitung eingerichtet sondern eine 2. Domain die auf die auf die selbe IP zeigt. Trotzdem wird immer von „office.spdyn.de“ auf „nc.sydyn.de“ weitergeleitet.
Hi,
damit die Domains unterschieden werden, benötigst du zwei vHosts. Welcher vHost von einem Request „getroffen“ wird, wird über den server_name festgelegt.
Du benötigst also einen vHost für office.spdyn.de und einen für nc.spdyn.de.
Wenn hier auch korrekte Weiterleitungen von HTTP auf HTTPS erfolgen sollen, dann sind es natürlich vier vHosts.
Gruß,
Jan
Hallo Jan,
in diesem Tutorial wird ja noch Certbot verwendet, bei der Einrichtung von NC bist du mittlerweile ja auf acme.sh umgestiegen. Kann ich hier dennoch Certbot nutzen (auch, wenn das sicherlich nicht sonderlich elegant ist), oder gibt es etwas, was definitiv dagegen spricht?
Lg
Hi,
nein, gegen Certbot spricht eigentlich nichts, wenn es bei dir richtig funktioniert.
Ich würde nur davon abraten, certbot und acme.sh parallel zu nutzen.
Gruß,
Jan
HI Jan,
wie würde denn der genaue befehle anstatt für certbot für acme.sh aussehen?
Grüße
Hallo Flo,
eigentlich genau so wie in diesem Artikel beschrieben.
Gruß,
Jan
Dann fordert mich ubuntu auf certbot zu installieren!? Ist das richtig?
Grüße
Achsooo ;0)
Dann kann ich den Punkt weglassen,weil ich ihn ja bereits in deiner nextcloud Anleitung bzw. Letsencrypt Anleitung durchgeführt habe, das hat mich etwas verwirrt!
Aber Nochmal, nicht das wir aneinander vorbei reden…
– Nextcloud läuft (mit acme.sh) HowTo:
https://decatec.de/home-server/nextcloud-auf-ubuntu-server-18-04-lts-mit-nginx-mariadb-php-lets-encrypt-redis-und-fail2ban/
Jetzt möchte ich
– OnlyOffice draufpacken > HowTo:
https://decatec.de/home-server/nextcloud-online-office-mit-onlyoffice-mit-eigener-subdomain/
im Abschnitt
„SSL-Zertifikat für die neue (Sub) Domain hinzufügen“
des Only Office HowTo’s beschreibst du ..
„Dazu wird das bereits für Nextcloud verwendete Zertifikat modifiziert,“
aber das hast du ja nicht in deinem oben verlinkten HowTo beschrieben (oder)
https://decatec.de/linux/lets-encrypt-zertifikate-mit-acme-sh-und-nginx/
hier haben wir es für die Domain erstellt und nicht für die SubDomain, noch haben wir es geändert
ich hab irgendwie das Gefühl das ich auf dem Schlauch steh ^^ sry dafür
aber mir geht es um folgende Befehlszeile..
certbot certonly –webroot -w /var/www/letsencrypt -d meinedomain.de -d onlyoffice.meinedomain.de –rsa-key-size 4096
und die müsste für acme.sh so aussehen.. (?)
1. acme.sh –issue -d meinedomain.de –keylength 4096 -w /var/www/letsencrypt –key-file /etc/letsencrypt/onlyoffice.meinedomain.de/key.pem –ca-file /etc/letsencrypt/onlyoffice.meinedomain.de/ca.pem –cert-file /etc/letsencrypt/onlyoffice.meinedomain.de/cert.pem –fullchain-file /etc/letsencrypt/onlyoffice.meinedomain.de/fullchain.pem –reloadcmd „sudo /bin/systemctl reload nginx.service“
ist es nicht sinnvoller (solltest du acme generell certbot mittlerweile vorziehn?) die Parts aus den HowTos entsprechend auf acme umzustellen, damit deine ganzen wirklich sehr sehr gut erklärten Anleitungen so perfekt zusammenpassen wie du sie erklärst? ^^ Jan das soll keine Kritik sein, wer solche Hammer Hilfestellungen für Noobs (wie mich) stellt, hat sich eh schon mehr mühe gegeben als viele andere, sein Wissen zu vermitteln! soll nur ein Verbesserungsvorschlag für Noobs wie mich sein, die versuchen deine verschiedenen Anleitungen zu kombinieren (und dabei was lernen möchten)
bzw. das erbeten um Hilfe, weil ich nicht weiter komme!
alternativ bin ich auch schon für tips auf den richtigen weg sehr dankbar ;O)
Vielen Dank im voraus
Grüße Der Flo
Hi Flo,
guter Einwand. Ich habe zwar versucht, alle Artikel, in denen Zertifikate erzeugt werden müssen, auf acme.sh umzustellen, dieser ist mir jedoch wohl durch die Lappen gegangen.
Habe dem Artikel mal ein Update verpasst. Nun sollte es verständlicher sein.
Gruß,
Jan
Hallo Jan,
ich habe keine Weiterleitung gemacht sondern eine 2. Domain eingerichtet die auf die auf die selbe IP zeigt und aktualisiert wird. Aber immer wenn ich in den Browser „office.spdyn.de“ eingebe wird auf „nc.sydyn.de“ weitergeleitet.
Hallo Marvin,
ich vermute mal, dass in dem vHost für nc.sydyn.de die Angabe „default_server“ angegeben ist.
Das bedeutet dann, dass alle Requests, die zwar bei deinem Server ankommen, aber keinem vHost eindeutig zugeordnet werden können, zu diesem default Server weitergeleitet werden.
Kontrolliere doch mal, ob die server_name Angaben in deinen vHosts korrekt sind.
Gruß,
Jan
Hi Jan,
in bin inzwischen soweit komplet auf OMV zu verzichten und alles über NC laufen zu lassen, dann muss ich eben Samaba manuell installieren und konfigurieren. Aber das ist erstmal nicht mein Problem.
Mein Aktuelles Problem ist Folgendes:
Ich habe inzwischen zwei Tage lang deine, wie immer super ausführliche Anleitung, immer und immer wieder befolgt, aber komme immer wieder zum selben Ergebnis…
Wenn ich bei NC in den App-Einstellungen für OnlyOffice die Daten eingebe, erscheint immer der Fehler :
„Fehler beim Anschließen (Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.)“.
Wenn ich absichtlich ein falsches Passwort eingebe, sagt er korrekt dass ich ein falsches Passwort benutze, wenn ich meine lokale Ip eingebe mit Port 4433 kommt die Fehlermeldung: „Fehler beim Anschließen (cURL error 60: SSL certificate problem: self signed certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html))“.
Wenn ich meine Subdomain eingebe, dann erscheint erstere Fehlermeldung.
Mein Nginx-Log ist sauber, auser zwei „Infos“.
Im Dockerlog zeigt er mir allerdings folgenden Fehler an, den ich leider nicht zu deuten schaffe, könntest du mir einen Tipp geben?
„[2019-08-12T21:12:39.498] [ERROR] nodeJS – error downloadFile:url=https://nc.lv-w.de/apps/onlyoffice/empty?doc=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY3Rpb24iOiJlbXB0eSJ9.qgt5Oq2uKcK4_8_lKYRNJp2SuxWwfOdp8lRybZ6qCvg;attempt=3;code:EPROTO;connect:null;(id=conv_check_341152751_docx)
Error: write EPROTO 140671834888000:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:../deps/openssl/openssl/ssl/s23_clnt.c:802:
at WriteWrap.afterWrite [as oncomplete] (net.js:868:14)“.
Mit freundlichen Grüßen
Leo W.
Hallo Leo,
die Fehlermeldung im Container sehen so aus, als ob sie etwas mit der Verbindung über HTTPS (also NC -> Docker) zu tun hätten.
Hast du diese Schritte durchgeführt und auch darauf geachtet, dass der proxy_pass im vHost für OnlyOffice über HTTPS abgewickelt wird?
Gruß,
Jan
Ja, eigentlich habe ich alles genau so gemacht. Und wenn ich über den Browser onlyoffice.domain.de aufrufe wird mir das zu der Domain zugehörige Zertifikat angezeigt und wenn ich über ip:4433 drauf zugreife dann wird mir das selbstgemachte Zertifikat für die IP angezeigt.
Ich habe einmal meine normale Domain als default_server, darüber läuft aber nur Let’s Encrypt. Dann habe ich eine nc.domain.de und eine onlyoffice.domain.de. Die Nginx configs sehen so aus:
domain.de:
„server {
listen 80 default_server;
listen [::]:80 default_server;
server_name domain.de;
root /var/www;
location ^~ /.well-known/acme-challenge {
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
}
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2;
server_name domain.de;
include /etc/nginx/snippets/ssl.conf;
location = / {
# Disable access to the web root, otherwise nginx will show the default site here.
deny all;
}
}“
nc.domain.de:
„upstream php-handler {
server unix:/run/php/php7.3-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name nc.domain.de;
# Enforce HTTPS
# Use this if you always want to redirect to the DynDNS address (no local access).
return 301 https://$server_name$request_uri;
# Use this if you also want to access the server by local IP:
#return 301 https://$server_addr$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name nc.domain.de;
# Include SSL configuration
include /etc/nginx/snippets/ssl.conf;
# Path to the root of your installation
root /var/www/nextcloud;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you’re planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
# The following rule is only needed for the Social app.
# Uncomment it if you’re planning to use this app.
#rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
location = /.well-known/carddav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;
# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
location / {
rewrite ^ /index.php$request_uri;
}
location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all;
}
location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
# Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
# Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}
# Adding the cache control header for js, css and map files
# Make sure it is BELOW the PHP block
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control „public, max-age=15778463“;
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read into
# this topic first.
add_header Strict-Transport-Security „max-age=15768000; includeSubDomains; preload;“;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection „1; mode=block“;
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
# Optional: Don’t log access to assets
access_log off;
}
location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$request_uri;
# Optional: Don’t log access to other assets
access_log off;
}
}“
und die onlyoffice.domain.de:
„server {
listen 443 ssl http2;
server_name onlyoffice.domain.de;
# Include SSL configuration
include /etc/nginx/snippets/ssl.conf;
#
# Configuration for OnlyOffice
#
location / {
proxy_pass https://192.168.178.27:4433;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
}
}“
Hallo Leo,
sieht eigentlich alles soweit ganz gut aus. Unter der Konfiguration zu OnlyOffice musst du dann einfach nur die Domain https://onlyoffice.domain.de eingeben.
Wenn das dann immer noch nicht funktioniert, würde ich den kompletten Container zu OnlyOffice mal löschen und neu pullen.
Was mir sonst noch aufgefallen ist: Auf deiner Website wird der HSTS Header doppelt gesetzt und damit ignoriert. Das kannst du vielleicht auch gleich mit ändern.
Gruß,
Jan
Könnte es daran liegen, dass Nextcloud bzw PHP keinen Zugriff auf andere Verzeichnisse als die eigenen hat?
Hi Leo,
nein, dran kann es eigentlich nicht liegen.
Ich habe OnlyOffice die Tage mal nach dem Tutorial auf einem Test-System eingerichtet und da hat es funktioniert. Ich kann bei deinem Setup, so wie du es mir geschildert hast, keinen Fehler entdecken. Kontrollier doch bitte nochmals alle Schritte. Das hast du ja sicher schon getan, aber irgend eine Kleinigkeit scheint hier nicht zu passen.
Gruß,
Jan
Ich habe die lösung gefunden, und wie so oft ist sie so easy dass ich dirchdrehen könnte. Der einfachheit halber habe ich auf die „Diffie-Hellman-Parameter“ verzichtet, weil ich zu faul war für meinen Testserver die paar minuten zu warten. Dass ich dafür dann Tage voller Verzweiflung investieren muss bis es Funktioniert habe ich mir natürlich nicht gedacht -.-. Den doppelten HSTS-Header habe ich nebenbei auch gefunden :D also jetzt läuft alles genau so wie gewünscht ;) Danke noch mal für die Super anleitung ;)
Hallo Leo,
OK, dann war das wirklich nur eine Kleinigkeit.
Auf jeden Fall danke für die Rückmeldung. Super, dass nun alles wie gewünscht funktioniert.
Gruß,
Jan
Den docker habe ich schon mehrfach neu gepullt, aber keine Änderung….
Ich finde keine doppelten Einträge, bin ich blind?
Gruß
Leo
Hallo Jan,
vielen Dank für deine Mühen. Ich hätte ohne deine Anleitung das sicherlich nicht so schnell zum Laufen gebracht.
Meine Frage:
In deiner Nextcloud-Anleitung ist die Nextcloud über meinedomain.de/nextcloud erreichbar. Ich würde mein System gerne folgendermaßen strukturieren:
meinedomain.de –> WordPress
meinedomain.de/nextcloud –> Nextcloud
meinedomain.de/onlyoffice –> Onlyoffice
meinedomain.de/sonstirgendwas –> sonstirgendwas
Ist das technisch möglich oder muss ich zwangsweise für z.B. onlyoffice eine subdomain anlegen?
Besten Dank schonmal für deine Antwort :)
Hallo Lorenz,
also für OnlyOffice wirst du eine Subdomain (oder eine gesonderte Domain) brauchen, da man dies meines Wissens nach nicht über ein „Unterverzeichnis“ abbilden kann.
Alles andere ist nur eine Sache der vHost-Konfiguration.
Gruß,
Jan
Besten Dank Jan,
ich werde dann einfach für alle anderen Dienste außer WordPress eine Subdomain anlegen. Brauche ich dann überhaupt den Gatway-Host oder kann ich das alles über seperate vHosts machen?
Grüße,
Lorenz
Hallo Lorenz,
in diesem Fall brauchst du keinen Gateway-Host, da sich alle Hosts durch den Domain-Namen unterscheiden. Ohne Gateway-Host wird das Setup meiner Meinung nach auch einfacher und übersichtlicher.
Gruß,
Jan
Hello again,
bis zum restart von nginx unter dem Anleitungspunkt „Auslagern der SSL-Einstellungen aus dem virtuellen Host für Nextcloud“
hat Nextcloud noch funktioniert^^, leider komm ich jetzt weder auf onlyoffice noch auf die eigentliche nextcloud.
ab
„Virtuellen Host für ONLYOFFICE hinzufügen“ – „Installation ONLYOFFICE (+docker install)“
ist irgendwas nicht richtig gelaufen
aus der [nano /var/log/nginx/error.log] erhalte ich folgende Infos
muss ich an der Firewall noch was freigeben? Oder wo hab ich was verdaddelt?
2019/09/05 17:49:10 [error] 6144#6144: *11 access forbidden by rule, client: 186.220.101.33, server: meinedomain, request: „HEAD / HTTP/1.1“, host: „onlyoffice.meinedomain“
2019/09/05 17:49:19 [error] 6144#6144: *14 access forbidden by rule, client: 22.130.64.159, server: meinedomain, request: „HEAD / HTTP/1.1“, host: „onlyoffice.meinedomain“
2019/09/05 17:49:29 [error] 6144#6144: *15 access forbidden by rule, client: 70.7.87.74, server: meinedomain, request: „GET / HTTP/1.1“, host: „onlyoffice.meinedomain“
2019/09/05 17:50:17 [error] 6144#6144: *17 access forbidden by rule, client: 199.219.240.82, server: meinedomain, request: „HEAD / HTTP/1.1“, host: „onlyoffice.meinedomain“
2019/09/05 17:51:10 [error] 6144#6144: *20 access forbidden by rule, client: 91.120.227.91, server: meinedomain, request: „GET / HTTP/1.1“, host: „onlyoffice.meinedomain“
2019/09/05 17:51:51 [error] 6144#6144: *24 access forbidden by rule, client: 51.60.112.42, server: meinedomain, request: „GET / HTTP/1.1“, host: „meinedomain“
2019/09/05 17:59:00 [error] 6144#6144: *48 access forbidden by rule, client: 186.240.120.108, server: meinedomain, request: „GET / HTTP/1.1“, host: „meinedomain“
2019/09/05 17:59:00 [error] 6144#6144: *47 access forbidden by rule, client: 186.240.120.108, server: meinedomain, request: „GET / HTTP/1.1“, host: „meinedomain“
2019/09/05 17:59:47 [error] 6144#6144: *50 access forbidden by rule, client: 186.240.120.108, server: meinedomain, request: „GET / HTTP/1.1“, host: „meinedomain“
2019/09/05 17:59:55 [error] 6144#6144: *52 access forbidden by rule, client: 186.240.120.108, server: meinedomain, request: „GET / HTTP/1.1“, host: „meinedomain“
2019/09/05 18:00:43 [error] 6144#6144: *54 access forbidden by rule, client: 186.240.120.108, server: meinedomain, request: „GET / HTTP/1.1“, host: „meinedomain“
2019/09/05 18:05:26 [error] 6144#6144: *55 open() „/etc/nginx/html/robots.txt“ failed (2: No such file or directory), client: 143.9.142.186, server: meinedomain, request: „GET /robots.txt HTTP/1.1“, host: „meinedomain“
2019/09/05 18:05:30 [error] 6144#6144: *55 access forbidden by rule, client: 143.9.142.186, server: meinedomain, request: „GET / HTTP/1.1“, host: „meinedomain“
2019/09/05 18:08:04 [emerg] 6542#6542: open() „/etc/nginxs/snippets/ssl.conf“ failed (2: No such file or directory) in /etc/nginx/conf.d/meinedomain.conf:35
2019/09/05 18:19:28 [emerg] 1799#1799: unexpected „E“ in /etc/nginx/snippets/ssl.conf:19
2019/09/05 19:33:50 [emerg] 1825#1825: unexpected „E“ in /etc/nginx/snippets/ssl.conf:19
aber woher kommen die IP’s? kann es sein, das der DynDns abieter mir da was wegblockt? ich konnte bei ihm auch den Cname Eintrag nicht finden, aber nachdem Domain + Subdomain auf die gleiche IP zeigten, hätte es ja passen müssen, oder? leider kann ich bei selfhost nicht wirklich hilfreiche infos zu Cname finden!
Grüße und danke
Der Flo
Hi Flo,
die letzten Fehlermeldungen weisen darauf hin, dass es wohl Fehler in den Config-Dateien von nginx gibt.
Bitte hier mal „nginx -t“ ausführen und die Fehler beheben. Danach können wir weiter sehen.
Gruß,
Jan
Hallo Jan,
vielen Dank für Deine tolle Seite und die vielen Anleitungen. Ich habe eine Frage und eine Bitte:
1. Vorgehensweise
Ich möchte NICHT das onlyoffice direkt von außen ansprechbar ist (z.B. direkt über die Clients) sondern nur innerhalb von Nextcloud bzw. innerhalb der Clients ÜBER den externen nextcloud-login. nexcloud & onlyoffice laufen geplant auf derselben Maschine.
Frage: -> kann ich dann das ganze Zertifikate-Gedöns von der onlyoffice-Anleitung weglassen, bzw. wie muss ich dann bei der onlyoffice-installation abweichend vorgehen? Bei dem YT-Video vom Hersteller fehlt ja der vServer- und Zertifikate-Ansatz komplett: https://www.onlyoffice.com/de/connectors-nextcloud.aspx
So soll das mal bei mir aussehen:
meinedomain.de –> Joomla (auf Basis deiner WordPress-Anleitung)
meinedomain.de/cloud –> Nextcloud (nach Anleitung)
meinedomain.de/sonstiges–> Sonstiges
2. Backup
Du hast schon Artikel zum Thema Backup geschrieben. Die einzelnen Lösungen stehen allerdings jeweils für sich und decken „nur“ z.B. MariaDB ab. Gibt es eine „globale“ Lösung für die „/var/www“-Anwendungen die du so schön beschrieben hast? Mein Traum wäre es z.B. das jede Nacht um 3 Uhr Nexcloud, MariaDB und Joomla in den Maintance-Modus gehen, alle Ordner nacheinander auf die Backup-Platte gesichert werden, Backups die älter als 7 Tage sind gelöscht werden und danach alles wieder online geht. Danach laufen dann die inkrementellen Backups von back-in-time an.
vg Thomas
Hallo Thomas,
1. Ich glaube, dass du hier etwas verwechselst: Der OnlyOffice-Server vom Hersteller ist an sich erst einmal nicht mit Nextcloud kompatibel. Für Nextcloud brauchst du den Docker-Container, dieser funktioniert dann auch nur in Verbindung mit Nextcloud, also genau das, was du gerne hättest. Allerdings brauchst du hier eine zweite Subdomain (z.B. onlyoffice.meinedomain.de). Ohne zweite Domain geht es leider nicht.
2. Ich habe ja hier meine Nextcloud Backup-/Restore-Skripts zur Verfügung gestellt. Das kann man natürlich noch nach Belieben „aufbohren“.
Meine Backup-Strategie sieht momentan so aus, dass ich mehrere Skripts pro Anwendung erstellt habe (z.B. je ein Skript für eine Nextcloud-Instanz). Diese Skripts werden dann von einem allgemeinen Backup-Skript aufgerufen. Die Sicherungen (der Anwendungs-Skripts) werden dann im Anschluss vom Backup-Skript nochmals mittels Borg Backup (deduplicating, verschlüsselt, komprimiert) gesichert. Durch Borg Backup läuft das Ganze nach dem Erstellen des ersten Backups auch rasend schnell ab, so dass ich kaum Downtimes habe.
Hier könntest du das Ganze auch so erweitern, dass z.B. auch Joomla mitgesichert wird.
Gruß,
Jan
Hallo Jan,
erstmal vielen Dank für deine vielen Tutorials zum Thema Home-Server.
Bisher hat auch alles gut geklappt, allerdings bin ich hier auf ein Problem gestoßen. Und zwar wird beim Aufruf eines Dokuments aus Nextcloud OnlyOffice nicht geöffnet. In der Browser-Konsole erscheint folgende Fehlermedlung:
onlyoffice.*****.de./:1 Refused to frame ‚https://onlyoffice.*****.de./‘ because it violates the following Content Security Policy directive: „frame-src ’none'“.
Ich habe zu dem Fehler auch bereits ein wenig recherchiert, leider habe ich aber keine Lösung gefunden.
Folgendes ist mir bekannt:
-OnlyOffice ist über onlyoffice.*****.de erreichbar
-Nextcloud erkennt ob OnlyOffice gestartet ist, da nach einem reboot eine Fehlermeldung erscheint, wenn man ein Dokument öffnet und der docker-Container noch nicht fertig gestartet ist
-In den unter dem Punkt „Troubleshooting“ beschriebenen Logs ist leider nichts relevantes.
Vielleicht kannst du mir ja weiterhelfen!
Vielen Dank!
Gruß,
Johannes
Hallo Johannes,
wie hast du denn die Content-Security-Policy im Webserver (nginx) konfiguriert, bzw. wie sieht hier die entsprechende Konfiguration aus?
Gruß,
Jan
Hallo Jan,
vielen Dank für deine schnelle Rückmeldung!
Ich weiß nicht genau was du mit Kofiguration der Content-Security-Policy meinst, diese wurde eigentlich nie direkt konfiguiert. Eigentlich habe ich einfach 1 zu 1 deine Anleitungen für Nextcloud mit MariaDB, PHP, … und OnlyOffice abgearbeitet.
Im Folgenden findest du meine Config-Dateien, dazu noch ein paar Anmerkungen:
-ssl.conf:
-X-Frame-Options habe ich versucht abzuändern (https://help.nextcloud.com/t/integrating-onlyoffice-and-nextcloud-12-0-4/25461/11): add_header X-Frame-Options „ALLOW-FROM https://*****.de/nextcloud/“ always;
-Ich habe versucht die X-Frame-Options gänzlich zu entfernen (https://github.com/ONLYOFFICE/onlyoffice-nextcloud/issues/25)
-onlyoffice.****.de.conf
-Ich habe es auch hier mit „add_header X-Frame-Options „ALLOW-FROM https://*****.de/nextcloud/“ always;“ probiert, außerdem mit „add_header X-Frame-Options „ALLOW-FROM localhost:443″ always;“
Ich hoffe da war jetzt die benötigte Konfiguration dabei. Vielen Dank für die Unterstützung!
Gruß, Johannes
——ssl.conf—–
# Certificates used
ssl_certificate /etc/letsencrypt/*****.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/*****de/key.pem;
# Not using TLSv1 will break:
# Android <= 4.4.40
# IE <= 10
# IE mobile <=10
# Removing TLSv1.1 breaks nothing else!
# TLSv1.3 is not supported by most clients, but it should be enabled.
ssl_protocols TLSv1.2 TLSv1.3;
# Cipher suite from https://cipherli.st/
# Max. security, but lower compatibility
ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384';
# Cipher suite from https://wiki.mozilla.org/Security/Server_Side_TLS
#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
# (Modern) cipher suite from https://mozilla.github.io/server-side-tls/ssl-config-generator/
#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
# Diffie-Hellman parameter for DHE ciphersuites, recommended 4096 bits
ssl_dhparam /etc/nginx/ssl/dhparams.pem;
# Use multiple curves.
ssl_ecdh_curve secp521r1:secp384r1;
# Server should determine the ciphers, not the client
ssl_prefer_server_ciphers on;
# OCSP Stapling
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
# This should be ca.pem
# See here: https://certbot.eff.org/docs/using.html
ssl_trusted_certificate /etc/letsencrypt/*****de/ca.pem;
# This is the local DNS server (e.g. the IP of the Router if it is used as DNS server in the local network)
resolver 192.168.178.1;
# SSL session handling
ssl_session_timeout 24h;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
#
# Add headers to serve security related headers
#
# HSTS (ngx_http_headers_module is required)
# In order to be recoginzed by SSL test, there must be an index.hmtl in the server's root
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload;" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Robots-Tag none always;
add_header X-Download-Options noopen always;
add_header X-Permitted-Cross-Domain-Policies none always;
add_header Referrer-Policy no-referrer always;
add_header X-Frame-Options "SAMEORIGIN" always;
# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
—–onlyoffice.****.de.conf—–
server {
listen 443 ssl http2;
server_name onlyoffice.*****.de;
# Include SSL configuration
include /etc/nginx/snippets/ssl.conf;
#add_header X-Frame-Options "ALLOW-FROM https://*****.de/nextcloud/" always;
#add_header X-Frame-Options "ALLOW-FROM localhost:443" always;
#
# Configuration for OnlyOffice
#
location / {
proxy_pass https://192.168.178.50:4433;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
—–*****.de.conf—–
upstream php-handler {
server unix:/run/php/php7.2-fpm.sock;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name *****.de 192.168.178.50;
root /var/www;
location ^~ /.well-known/acme-challenge {
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
}
location / {
# Enforce HTTPS
# Use this if you always want to redirect to the DynDNS address (no local access).
return 301 https://$server_name$request_uri;
# Use this if you also want to access the server by local IP:
#return 301 https://$server_addr$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name *****.de 192.168.178.50;
include /etc/nginx/snippets/ssl.conf;
location = / {
# Disable access to the web root, otherwise nginx will show the default site here.
deny all;
}
#
# Nextcloud
#
location ^~ /nextcloud/ {
# Set max. size of a request (important for uploads to Nextcloud)
client_max_body_size 10G;
# Besides the timeout values have to be raised in nginx' Nextcloud config, these values have to be raised for the proxy as well
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
send_timeout 3600;
proxy_buffering off;
proxy_request_buffering off;
proxy_max_temp_file_size 10240m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:82;
proxy_redirect off;
}
location ^~ /hochzeit/ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
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_pass http://127.0.0.1:83;
proxy_redirect off;
}
# These two location blocks are needed, otherwise you'll get warnings in the Nextcloud admin UI later on
location = /.well-known/carddav {
return 301 $scheme://$host/nextcloud/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/nextcloud/remote.php/dav;
}
# Well-known URL for Webfinger
# Regardless of this rule, you'll get a warning in the admin UI when the social app is not installed
location = /.well-known/webfinger {
return 301 $scheme://$host/nextcloud/public.php?service=webfinger;
}
location ~ /(ocm-provider|ocs-provider)/ {
return 301 $scheme://$host/nextcloud/$1/;
}
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
client_max_body_size 100M;
location ~ ^/phpmyadmin/(.+\.php)$ {
allow 192.168.178.0/24;
deny all;
try_files $uri =404;
root /usr/share/;
fastcgi_pass php-handler;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_param PHP_VALUE "open_basedir=/var/www:/tmp/:/usr/share/phpmyadmin:/usr/share/php:/etc/phpmyadmin/
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 3600";
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
}
—–*****.de_nextcloud.conf—–
server {
listen 127.0.0.1:82;
server_name 127.0.0.1;
# Path to the root of your installation
root /var/www/;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ^~ /nextcloud {
# set max upload size
client_max_body_size 10G;
fastcgi_buffers 64 4K;
# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
location /nextcloud {
rewrite ^ /nextcloud/index.php;
}
location ~ ^\/nextcloud\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all;
}
location ~ ^\/nextcloud\/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^\/nextcloud\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|ocm-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
# Important: disable HTTPS, otherwise no log in will be possible!
#fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
# Raise timeout values.
# This is especially important when the Nextcloud setup runs into timeouts (504 gateway errors)
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_connect_timeout 600;
fastcgi_request_buffering off;
# Pass PHP variables directly to PHP.
# This is usually done in the php.ini. For more flexibility, these variables are configured in the nginx config.
# All the PHP parameters have to be set in one fastcgi_param. When using more 'fastcgi_param PHP_VALUE' directives, the last one will override all the others.
fastcgi_param PHP_VALUE "open_basedir=/var/www:/tmp/:/dev/urandom:/proc/meminfo:/hdd1/nextcloud/nextcloud_data:/hdd1/nextcloud/nextcloud_external_data
upload_max_filesize = 10G
post_max_size = 10G
max_execution_time = 3600
max_input_time = 3600
output_buffering = off";
# Make sure that the real IP of the remote host is passed to PHP.
fastcgi_param REMOTE_ADDR $http_x_real_ip;
}
location ~ ^\/nextcloud\/(?:updater|ocs-provider|ocm-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~ ^\/nextcloud\/.+[^\/]\.(?:css|js|woff2?|svg|gif)$ {
try_files $uri /nextcloud/index.php$request_uri;
proxy_set_header Cache-Control "public, max-age=15778463";
# Add headers to serve security related headers
# Use 'proxy_set_header' (not 'add_header') as the headers have to be passed through a proxy.
proxy_set_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload;";
proxy_set_header X-Content-Type-Options nosniff;
proxy_set_header X-XSS-Protection "1; mode=block";
proxy_set_header X-Robots-Tag none;
proxy_set_header X-Download-Options noopen;
proxy_set_header X-Permitted-Cross-Domain-Policies none;
proxy_set_header Referrer-Policy no-referrer;
# Optional: Don't log access to assets
access_log off;
}
location ~ ^\/nextcloud\/.+[^\/]\.(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /nextcloud/index.php$request_uri;
# Optional: Don't log access to other assets
access_log off;
}
}
}
Hallo Johannes,
ich kann hier eigentlich keinen Fehler in der Konfiguration feststellen.
Funktioniert das bei dir nur in Firefox nicht, in anderen Browsern aber schon (siehe https://github.com/ONLYOFFICE/onlyoffice-nextcloud/issues/25)?
Dieser Issue ist ja noch offen, kann also sein, dass es hier ein generelles Problem gibt. Evtl. beobachte mal den Issue auf GitHub.
Nachvollziehen kann ich den Fehler auf meinen Instanzen nicht, hier funktioniert OnlyOffice einwandfrei (auch mit Firefox).
Gruß,
Jan
Hallo Jan,
alles klar, dann scheinen die Konfigurationen schonmal soweit zu passen. Es funktioniert nicht in den Browsern Chrome und Firefox, bei beiden der gleiche beschriebene Fehler.
Dann wird es wahrscheinlich ein allgemeines Problem sein. Bei Gelgenheit werde ich mir das einfach nochmal näher anschauen. Trotzdem vielen Dank für die Unterstützung!
Gruß, Johannes
Hallo,
ich habe gerade als zusatz neben Nextcloud auch OnlyOffice installiert.
Über die Sub-domain ist die Willkommensseite auch erreichbar.
Die Verbindung von Nextcloud zu Onlyoffice wurde auch erfolgreich in den Einstellungen der Nextcloud aktzeptiert.
Jetzt habe ich alle „Datei-Endungen“ versuchsweise aktiviert doch kein Dokument wird über die Cloud geöffnet. Im Firefox bleibt die Seite leer, im Chrome wird angezeigt „sub.meine-domain.de hat die Verbindung abgelehnt“.
Die Einzige Dateienderung die sich ohne probleme öffnen lässt ist die „*.md“.
Ich weiß nicht woher die Endung kommt.
Weißt du wo der Fehler liegen kann ?
Hi Bastian,
ist hier irgendwas in den Logs (Nextcloud/Webserver) ersichtlich?
Vielleicht auch mal die Develper-Console im Browser checken (F12).
Gruß,
Jan
Es schein was mit den X-Frame-Options zu tun zu haben. Habe das selbe Problem seit dem Update auf Nextcloud 17.
Hier der Fehler aus der Konsole:
Refused to display ‚https://onlyoffice.beispiel.de/v5.2.8-24//web-apps/apps/spreadsheeteditor/main/index.html?_dc=5.2.8-24&lang=de&customer=ONLYOFFICE&frameEditorId=iframeEditor‘ in a frame because it set ‚X-Frame-Options‘ to ’sameorigin‘.
Hallo Andreas,
seltsam, diese Problem hat hier die Tage schon ein anderer Leser gehabt. Ich kann es jedoch nicht nachvollziehen (NC 17 und aktuellster OnlyOffice-Container).
Funktioniert das mit allen Browsern nicht, oder nur mit einem speziellen?
Gruß,
Jan
Hallo Jan,
es betrifft alle Browser.
Gruß Andreas
Hallo Andreas,
schau mal hier (meine Antwort auf eine ähnliche Anfrage).
Ich bleibe bei dem Thema dran und werde noch einiges ausprobieren, um dem Problem auf die Schliche zu kommen.
Gruß,
Jan
Hallo Jan, im Nextcloud Log kann ich so nichts entdecken.
Im Nginix Web log steht dafür sehr viel drin.
Ich sende dir die log mal per mail.
Hi,
habe mir mal die Arbeit gemacht und das onlyoffice nochmal komplett neu installiert und es geht immer noch nicht.
Hallo Bastian,
anscheinend gibt es hier ein generelles Problem bei OnlyOffice. Ich habe die Tage eine Test-Instanz aufgesetzt und kann den Fehler immer noch nicht nachvollziehen. Für mich ist es daher momentan ein Rätsel.
Hast du schon mal den kompletten Browser-Cache geleert?
Gruß,
Jan
Hallo Jan,
dank deiner Hilfe, läuft mein Nextcloud Server. Collabora hatte ich auch laufen. Jetzt wollte ich Onlyoffice testen. Jedoch bekomme ich immer wieder beim Aktivieren im Nextcloudserver diesen Fehler:
Fehler beim Anschließen (cURL error 60: SSL certificate problem: self signed certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html))
Was ich für die Lösung getan habe:
docker Onlyoffice nach Anleitung gelöscht
Zertifikate gelöscht
Zertifikate neu erstellt
Docker neuerstellt.
Leider ohne erfolgt.
Hi,
die OnlyOffice-Domain muss über ein gültiges Zertifikat erreichbar sein. Wenn das aus irgend einem Grund nicht klappen sollte, kannst du noch ausprobieren, folgendes in der config.php von Nextcloud hinzuzufügen:
'onlyoffice' =>
array (
'verify_peer_off' =>TRUE,
),
);
Dies würde ich allerdings eher als Workaround sehen. Ziel sollte generell sein, eine ordentliche Verbindung mittels HTTPS zu ermöglichen.
Gruß,
Jan
Hallo,
ich habe auch das Problem das in Firefox nichts angezeigt wird.
In Chrome steht : meinedomain.de hat die Verbindung abgelehnt.
Habe den Browsercache geleert… brachte aber nichts.
Bei Druck auf F12 in Firefox steht folgender Fehler : Laden verboten durch X-Frame-Options: „SAMEORIGIN“ von „https://onlyoffice.meinedomain.de/5.4.2-46//web-apps/apps/…46&lang=de-DE&customer=ONLYOFFICE&frameEditorId=iframeEditor“, Website erlaubt keine quellübergreifende (cross-origin) Frames von „https://meinedomain.de/nextcloud/apps/onlyoffice/169?filePath=test.ods“
Hallo Andre,
von diesem Problem haben schon mehrere Leute berichtet, leider kann ich das Problem auf meinen Instanzen nicht nachvollziehen.
Kannst du mal folgendes ausprobieren:
Füge mal im vHost für OnlyOffice direkt im location-Block (also unter der Zeile mit dem Einbinden der SSL-Optionen) folgende Zeile ein:
add_header X-Frame-Options "ALLOW-FROM https://nextclouddomain.de/" always;
Wenn das nicht geht, dann noch folgende Zeile im location-Block für „/“:
proxy_set_header X-Frame-Options "ALLOW-FROM https://nextclouddomain.de/";
Bei jeder Änderung nginx neu starten!
Wenn das alles noch nichts hilft: Wie sieht die Konfiguration von OnlyOffice in der Nextcloud-Admin-UI genau aus?
Gruß,
Jan
Hallo,
erstmal Danke für die schnelle Antwort.
Beides hat leider nicht funktioniert.
In der Konfiguration für OnlyOffice habe ich lediglich die Serviceadresse für die Dokumentenbearbeitung eingetragen sowie den geheimen Schlüssel.
Ansonsten habe ich nichts eingetragen.
Was auffällt… Nachdem ich deine beiden Codezeilen hinzugefügt habe konnte ich Onlyoffice über die Serveradresse aus dem Internet erreichen. Ging vorher nur lokal über die IP.
Innerhalb Nextcloud ist jedoch weiterhin keine Datei anzeigbar.
Gruß
Hallo Andre,
was ich mit den OnlyOffice-Optionen in der Admin-UI meine (dazu die „Erweiterten Serveroptionen“ aufklappen):
Sieht das bei dir genau so aus?
Gruß,
Jan
Serviceadresse der Dokumentbearbeitung: https://onlyoffice.meinedomain.de/
Serviceadresse der Dokumentbearbeitung für interne Anforderungen vom Server: Hab ich nichts eingetragen. Steht aber in grau folgendes :https:///
Serveradresse für interne Anforderungen vom Dokumentbearbeitung-Service:
Hab ich nichts eingetragen. Steht aber in grau folgendes :https://meinedomain.de/nextcloud/
Vielleicht sollte ich noch erwähnen dass ich deine Anleitungen 1:1 übernommen habe mit einer Ausnahme.
nextcloud_data liegt bei mir auf dem Raid. Nicht in /var/.
Weiß nicht ob das wichtig ist.
Gruß
Hi Andre,
nein, das sollte eigentlich keine Rolle spielen. Aus der Sicht von Nextcloud ist dies ja einfach eine beliebiges Verzeichnis.
Wie sehen die Einstellungen in der Nextcloud-Admin-UI bzgl. OnlyOffice aus?
Gruß,
Jan
Serviceadresse der Dokumentbearbeitung :
https://onlyoffice.meinedomain.de/
Serviceadresse der Dokumentbearbeitung für interne Anforderungen vom Server:
https:/// (steht schon da ohne das ich etwas eingetragen habe)
Serveradresse für interne Anforderungen vom Dokumentbearbeitung-Service:
https://meinedomain.de/nextcloud/ (steht schon da ohne das ich etwas eingetragen habe)
Ich hoffe das hilft dir weiter.
Gruß
Hallo Andre,
was passiert, wenn du unter „Serveradresse für interne Anforderungen vom Dokumentbearbeitung-Service“ einfach „https://meinedomain.de/“ eingibst?
Ansonsten sieht das gut aus, der Fehler muss irgendwo anders liegen.
Gruß,
Jan
Wenn ich das eintrage und auf Speichern drücke erscheint folgende Fehlermeldung in Nextcloud.
„Fehler beim Anschließen (Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.)“
Gruß
Hallo Andre,
ja, das habe ich mir fast gedacht. Dann muss das /nextcloud doch hinten dran mit aufgeführt werden.
Mit welcher Domain hast du es vor kurzem mit „add_header“ bzw. „proxy_set_header“ (X-Frame-Options) probiert?
Gruß,
Jan
Hallo,
ich habe es jeweils einmal mit https://meinedomain.de sowie mit https://meinedomain.de/nextcloud versucht.
Hat beides nicht funktioniert.
Gruß
Für alle, die noch das Problem haben, dass sich Dokumente nicht über Nextcloud öffnen lassen (leeres Browser-Fenster):
Ich habe den Artikel im Abschnitt „Troubleshooting“ erweitert, der genau dieses Problem adressiert. Vielleicht ist es ja für den einen oder anderen hilfreich.
Gruß,
Jan
Hallo Jan,
auch ich danke wieder einmal für die tolle Anleitung.
Leider wird mir das selbstsignierte Zertifikat beim einbinden in die Nextcloud zum Verhängnis. Es wird keine Verbindung aufgebaut wegen diesem.
Die „Lösung“ des ausschalten der Verifikation kommt nicht in Frage.
Hab es auch mit mehrmaligen neu aufsetzen versucht, ohne Erfolg.
Nun wollte ich versuchen es auf dem selben Server mit eigener Domain (nicht Sub-Domain) zum laufen zu bekommen. Nur scheitere ich da an der VHost konfiguration.
Ich habe den Text-Schnipsel aus der /etc/nginx/snippets/ssl.conf wieder in die normale VHost von Nextcloud eingefügt und auch in die VHost von onlyoffice (dort natürlich die Pfade angepasst für SSL). Danach wollte ich die Zertifakte erstellen lassen mit acme.sh.
Da bekomme ich leider die Meldung:
Verifying: meine_onlyoffice_domain:Verify error:Invalid response from http://meine_onlyoffice_domain/.well-known/acme-challenge/************
Nun meine Fragen:
Wie muss die VHost für onlyoffice aussehen, damit sie neben nextcloud läuft.
Muss ich weitere Änderungen vornehmen, da ich Ubuntu/Nginx/Nextcloud in einer VM nach deinen super Anleitungen aufgebaut habe?
Lg
Maik
Hallo Maik,
eines vorweg: Ob OnlyOffice nun auf der gleichen, oder einer anderen Maschine läuft, ist nicht relevant. Auch, wenn es auf der gleichen Maschine läuft, solltest du die selbst signierten HTTPS-Zertifikate nutzen. Diese gelten dann nur für den Verbindungsweg nginx <-> OnlyOffice (Docker). Mit deinem Vorhaben werden sich die Probleme also nicht von selbst lösen.
Für die Generierung der Zertifikate über Let’s Encrypt brauchst du ebenfalls einen vHost, der auf deine (Office-)Domain auf Port 80 lauscht. Dies funktioniert analog zum Let’s Encrypt-vHost für Nextcloud, nur dass der server_name hier anders lauten muss.
Bevor du hier weitere Anläufe unternimmst das Zertifikat zu generieren (hier gibt es ein Rate Limit, d.h. nach zu vielen Versuchen wird die Domain für einige Zeit gesperrt), gehe lieber anders vor:
Leg mal im entsprechenden Verzeichnis (/var/www/letsencrypt/.well-known/acme-challenge/) einfach eine Text-Datei an (z.B. test.txt – Inhalt beliebig). Dann rufst du mal http://office.meinedomain.de/.well-known/acme-challenge/test.txt im Browser auf (HTTP, nicht HTTPS). Hier sollte die Datei dann angezeigt werden. Falls nicht, dann check mal das error.log von nginx. Hier sollte dann stehen, wo er nach dieser Datei sucht. Dies sollte einen Hinweis darauf geben, was bei dir nicht funktioniert.
Erst, wenn du per Browser auf die Datei zugreifen kannst, solltest du nochmals versuchen, die Zertifikate über Let’s Encrypt zu generieren.
Gruß,
Jan
Danke das Du dir die Zeit nimmst.
Nach aufruf von http://office.meinedomain.de/.well-known/acme-challenge/test.txt kommt im Browser: Cannot GET /.well-known/acme-challenge/test.txt
In der Log steht dazu:
„/etc/nginx/html/.well-know/acme-challenge/test.txt“ failed (2: No such file or directory), client: ***.***.***.***, server: meinenextclouddomain.de, request: „GET /.well-know/acme-challenge/test.txt HTTP/2.0“, host: „meinenextclouddomain.de“
Ich habe es noch einmal nach deiner Anleitung gemacht, bekomme nach wie vor keine Verbindung in der Nextcloud hin. Nun erscheint immer: GetConvertedUri on check error: Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.
Ich habe den Fehler nun auch beheben können.
Wer auch diese Meldung bekommt:
GetConvertedUri on check error: Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.
geht in diesen Ordner rein (nur als Root möglich):
/var/lib/docker/overlay2/**langer Ordnername aus Zahlen und Buchstaben/merged/etc/onlyoffice/documentserver
dort öffnet man die dateil default.json und such nach: „rejectUnauthorized“:
dieses stellt man von „true“ auf „false“ (ohne die „“).
Hallo Jan
Nun habe ich nur noch ein Problem.
Der Server wird ja local betrieben.
Außerhalb meines Netzwerkes (zbs. im Handynetz) kann ich meine Dokumente bearbeiten. Bin ich im eigenen Netzwerk unterwegs bekomme ich beim öffnen von Dokumenten die Meldung: ONLYOFFICE ist zurzeit nicht erreichbar. Bitte wende Dich an Deinen Administrator
Hast du noch einen Tip wie ich ich das lösen könnte?
gruß
Maik
Hi Maik,
also die Problemlösung mit der default.json ist ein denke ich nur ein Workaround. Dass OnlyOffice außerhalb des lokalen Netzwerks nicht genutzt werden kann, ist sicherlich ein Folgefehler dieses Workarounds.
Ich würde hier beim Zertifikat ansetzen: Lt. Log sucht er hier in /etc/nginx/html nach der entsprechenden Datei unter .well-known/acme-challenge. Das ist meiner Meinung nach hier nicht korrekt, er sollte unter /var/www/letsencrypt danach suchen. Daher tippe ich mal auf einen Fehler in den vHosts, die beim Zugriff auf .well-known/acme-challenge beteiligt sind. Hier also nochmal anhand der vHost checken, warum er hier auf /etc/nginx/html zugreifen will.
Gruß,
Jan
Hey,
bei mir kommt folgende Fehlermeldung beim hinterlegen in der Nextcloud.
Fehler beim Anschließen (cURL error 51: SSL: no alternative certificate subject name matches target host name ‚office-xxxxxx.spdns.de‘ (see http://curl.haxx.se/libcurl/c/libcurl-errors.html))
Was kann das sein?
Hallo Florian,
die Fehlermeldung sagt aus, dass etwas mit dem Zertifikat nicht passt. Anscheinend passt hier der Domain-Name nicht zum Namen (oder alternativen Namen) der Domain.
Gruß,
Jan
Hallo Jan,
danke für die schnelle Antwort. Muss ich irgendetwas anders machen, wenn ich mit zwei Domains arbeite statt mit einer Subdomain? Nextcloud ist wie in deinem Beispiel: Nextcloud auf Ubuntu Server 18.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban eingerichtet.
Vielen Dank
Gruß Florian
Hi Florian,
du brauchst auf jeden Fall 2 (Sub-)Domains, die auf deinen Anschluss (DnyDNS) verweisen.
Da die meisten Router nur einen DynDNS-Anschluss zulassen, brauchst du für die zweite Domain einen CNAME-Eintrag auf die erste („normale“) DynDNS-Domain. Das kannst du oftmals über die Verwaltung des Domain-Anbieters einstellen/konfigurieren.
Dann muss der Webserver auch entsprechend konfiguriert werden, so dass das jeweils passende Zertifikat für die Domain ausgeliefert wird.
Mehr gibt es hier eigentlich nicht zu beachten.
Gruß,
Jan
Moin Jan,
man kann dir garnicht oft genug loben für deine guten Anleitungen.
Im Grunde genommen läuft der Documentserver und auch die vorher installierte Nextcloud.
Mein Problem ist nur, dass ich den Documentserver nur über das LAN aufrufen kann.
Ich besitze leider während der Testphase noch keine eigene Domain und habe mir zwei subdomains von einem freund geliehen.
Setup:
Nextcloud erreichbar unter wolke.leihdomain.de/nextcloud
OpenOffice hat die Domain office.leihdomain.de bekommen.
office.leihdomain.de weißt via CNAME auf wolke.leihdomain.de.
Rufe ich jetzt office.leihdomain.de im browser auf, wechselt er zu wolke.leihdomain.de und zeigt dann aber Fehler 403 forbidden an.
(Der Fehler ist in soweit richtig, wenn wolke.leihdomain.de aufgerufen wird, da ja die nginx testseite deaktiviert wurde)
In der office.leihdomain.de.conf ist unter server_name auch der richtige domain name eingetragen und unter proxypass proxy_pass https://192.168.178.19:4433;
Irgendwie fehlt eine Art „Link“ von der Domain zum Documentserver.
Habe ich den include Befehl an einer falschen Position eingesetzt? ( Bisher unter dem ersten server Eintrag im GatewayHost)
Oder fehlt ein Eintrag im Gatewayhost? Hier ist ja auch ein Nexcloudeintrag drin aus dem Nextcloudtutorial.
Das Einzige was ich währen der Installation ändern musste war unter /etc/nginx/snippets/ssl.conf
das „/live/“ aus den SSL pfaden zu löschen und die Keys in Zeile 2 und 41 zuändern das es chain.pem und privkey.pem bei mir nicht gibt, da sie laut dem acme.sh befehl aus dem Nextcloud Tutorial anders heißen.
Grüße
Andreas
Hallo Andreas,
du brauchst hier auf jeden Fall (neben dem Gateway-Host) einen weiteren vHost, der exklusiv für die Office-Domain zuständig ist. Im Gateway-Host darf dann nichts von der Office-Domain enthalten sein (also server_name, etc).
Auf diese Weise sollte kein Redirect mehr von der Cloud-Domain auf die Office-Domain stattfinden.
Gruß,
Jan
Hallo Jan,
nachdem ich noch mal eine Nacht drüber geschlafen habe und mir nochmal alle Hosts angeschaut habe, habe ich feststellen müssen, dass der Gatewayhost leer war… Hier lag das Problem.
Hi Andreas,
alles klar, danke für die Rückmeldung.
Manchmal ist es eben gut, mal eine Nacht drüber zu schlafen. ;-)
Gruß,
Jan
Hallo Jan,
danke für das super Tutorial. Der Onlyoffice Server funktioniert(„Document Server is running“) intern über IP oder URL mit :4433 wie auch extern über URL + :4433. Was nicht funktioniert ist Onlyoffice in Nextcloud hinzuzufügen. Ich erhalte immer die Meldung „cURL error 28: Connection timed out after 60001 milliseconds“. Die URL mit :4433 anzugeben oder den Token von 30 Stellen auf 8 Stellen zu kürzen(könnte ja auch ein Problem sein) hat zu keiner Änderung geführt. Kann ich irgendwie überprüfen warum er in den Timeout läuft?
Noch eine weitere Frage: Welche Leistung empfiehlst du wenn man zu hause „professionell“ einen Nextcloud Server betreiben will? Wie viel Leistung sollte ein z.B. NUC haben damit der 1Gbit/s Internet Anschluss die Limitierung ist und nicht die Hardware.
Gruss
Philippe
Hallo Philippe,
hier würde ich einen Blick in die Logs (Nextcloud, nginx und Docker-Container) werfen. Dann findet man zumindest heraus, auf „welcher Schicht“ das Problem auftritt.
Vielleicht hilft auch dieser Thread weiter.
Eine generelle Empfehlung bzgl. Leistung eines Heim-Servers kann ich leider nicht abgeben, hier kommt es darauf an, was hier alles betrieben werden soll. Auch wenn es nur Nextcloud ist, kommt es darauf an, welche Apps genutzt werden sollen.
Gruß,
Jan
Danke schonmal für deine diversen Tutorials – super gut erklärt, habe schon einiges geschafft ;)
allerdings habe ich probleme ein gültiges Zertifikat zu nutzen:
bei mir läuft die NextCloud auf einem anderen Webhoster, Onlyoffice bei DigitalOcean
Ich habe direkt eine subdomain (erfolgreich) mit einem acme.sh SSL Zertifikat und nginx am laufen, https://onlyoffice.MEINEDOMAIN.TLD funktioniert dann auch
wenn ich allerdings https://onlyoffice.MEINEDOMAIN.TLD:4433 in NextCloud eintragen will, meckert er wegen des selbst signierten Zertifikats, NextCloud hätte gerne ein echtes.
Kein Problem, dachte ich, aber:
Habe schon auf diverse Arten versucht mein https://onlyoffice.MEINEDOMAIN.TLD Zertifikat zu kopieren / konvertieren und in /app/onlyoffice/DocumentServer/data/certs zu nutzen, aber er erkennt das Zertifikat nicht als gültig…hast du eventuell Tipps, wie man das bewerkstelligen kann?
Nachdem das für diese Domain ausgestellt ist müsste das doch funktionieren oder?
Besten Dank,
Nils
Hi Nils,
„vor“ OnlyOffice muss der nginx sitzen, der über Let’s Encrypt gültige Zertifikate bezieht. Dieser nginx leitet dann den Request an den OnlyOffice-Container weiter (über HTTPS, dazu nutzt der Container die selbst signierten Zertifikate).
Die Domain muss dabei https://office.meinedomain.de lauten (wird auch in Nextcloud ohne Port eingebunden).
Ich hoffe, dass dich das ein Stückchen weiter bringt.
Gruß,
Jan
Hallo Jan, großartiger Artikel, bei mir läuft echt alles einwandfrei!
Allerdings hätte ich doch noch eine Frage bzw ein Problem. Ich habe jetzt OnlyOffice als Docker Image laufen und wollte nach dem gleichen prinzip eine Gitea Instanz auf einer anderen VM laufen lassen.
Ausgangssituation: NC+OO über nginx laufen auf der ip 192.168.1.20 und auf der Domain meinedomain.com bzw. onlyoffice.meinedomain.com.
Jetzt war mein eigentliche Plan, dass ich auf der 192.168.1.21 nach der folgenden Anleitung vorgehe: https://linuxize.com/post/how-to-install-gitea-on-ubuntu-18-04/
Die Gitea Instanz läuft auch und ist auf der 192.168.1.21:3000 erreichbar. Nun sollte sie auch erreichbar sein unter git.meinedomain.com, also habe ich bei meinem nginx reverseproxy auf der 192.168.67.20 eine conf angelegt für git.meinedomain.com die wie folgt aussieht:
server {
listen 443 ssl http2;
server_name git.meinedomain.com;
include /etc/nginx/snippets/ssl.conf;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
client_max_body_size 50m;
# log files
access_log /var/log/nginx/git.meinedomain.com.access.log;
error_log /var/log/nginx/git.meinedomain.com.error.log;
# Handle / requests
location / {
proxy_pass https://192.168.1.21:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Danach einen nginx service restart gemacht und versucht die domain zu erreichen unter git.meinedomain.com. Diese leitet jetzt allerdings weiter auf nur noch meinedomain.com und gibt damit wie korrekt konfiguriert einen 403 forbidden aus. Auch mit der Eingabe von git.meinedomain.com:3000 komme ich nicht an der korrekten stelle heraus. Hast du vielleicht eine Idee zu meiner Config, wo dort etwas schief laufen könnte? Ich war davon ausgegangen, dass dies nun ohne probleme laufen sollte.
Vielen Dank für deine großartigen Tutorials und ausführlichen Erklärungen!
Hallo Lukas,
was gibst du im Browser selbst ein (http://git.meinedomain.com oder https://git.meinedomain.com). Ich vermute mal einen falschen Redirect von HTTP auf HTTPS.
Gruß,
Jan
Moin Moin,
Ich habe derzeit folgendes problem wo ich mir schon den Wolf nach einer Lösung gesucht habe, aber bis jetzt nichts brauchbares gefunden habe.
Beim aufbau vom OnlyOffice zur Nextcloud bekomme ich folgende Fehlermeldung:
Fehler beim Anschließen (Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.) (version 5.6)
Im Protokoll (Weboberfläche) der Nextcloud steht folgendes:
Exception: Im Dokumentenservice ist ein Fehler aufgetreten: Error while downloading the document file to be converted.
/var/www/nextcloud/apps/onlyoffice/lib/documentservice.php – line 97:
OCA\Onlyoffice\DocumentService->ProcessConvServResponceError(„-4“)
/var/www/nextcloud/apps/onlyoffice/controller/settingscontroller.php – line 333:
OCA\Onlyoffice\DocumentService->GetConvertedUri(„https://app … 0“, „docx“, „docx“, „check_1633924725“)
/var/www/nextcloud/apps/onlyoffice/controller/settingscontroller.php – line 171:
OCA\Onlyoffice\Controller\SettingsController->checkDocServiceUrl()
/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php – line 170:
OCA\Onlyoffice\Controller\SettingsController->SaveAddress(„https://off … /“, „“, „“, „30#O6v$cqgzn!“, false)
/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php – line 99:
OC\AppFramework\Http\Dispatcher->executeController(OCA\Onlyoffi … {}, „saveAddress“)
/var/www/nextcloud/lib/private/AppFramework/App.php – line 125:
OC\AppFramework\Http\Dispatcher->dispatch(OCA\Onlyoffi … {}, „saveAddress“)
/var/www/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php – line 47:
OC\AppFramework\App::main(„SettingsController“, „saveAddress“, OC\AppFramew … {}, { _route: „o … „})
<>
OC\AppFramework\Routing\RouteActionHandler->__invoke({ _route: „o … „})
/var/www/nextcloud/lib/private/Route/Router.php – line 299:
call_user_func(OC\AppFramew … {}, { _route: „o … „})
/var/www/nextcloud/lib/base.php – line 1008:
OC\Route\Router->match(„/apps/onlyo … s“)
/var/www/nextcloud/index.php – line 38:
OC::handleRequest()
Eine Neuerstellung des Containers hat auch nichts geholfen.
Hi Bastian,
die Fehlermeldungen sind hier leider nicht sonderlich aussagekräftig. Meistens passieren solche Fehler allerdings, wenn an der Webserver-Konfiguration irgend etwas nicht passt. Daher am besten alle Schritte nochmals kontrollieren bzw. von vorn ausführen.
Gruß,
Jan
Ok – Danke – Ich habe eine kleine Umstellung vorgenommen.
1. Habe ich mir einen ReverseProxy eingerichet und die Nextcloud so umgebaut das diese direkt ohne „Unterverzeichnis“ angesprochen wird.
2. habe ich von nginx auf apache umgestellt – dort ist ein Reverse Proxy in meinen Augen wesendlich einfacher zu konfigurieren -gerade auch weil mir da geholfen worden ist – und dieser selbst alles auf apache laufen hat.
Die Nextcloud läuft problemlos – der Onlyoffice Dokumentenserver ist auch erreichbar. Nur die Verbindung untereinander hat nicht hin.
Den Docker habe ich bereits schon neu installiert – dieses ohne erfolg.
Hi Bastian,
da hilft es wohl nur, die Logs zu durchforsten, und zwar „von außen nach innen“: NC, Webserver, Docker Container.
Vielleicht bekommt man ja irgendwo einen Hinweis, was der NC an OnlyOffice nicht passt.
Gruß,
Jan
Hallo Jan,
erst mal vielen Dank, das sind wirklich unglaublich genaue und umfassende Anleitungen. Vielen Dank für die Arbeit, die du Dir machst!
Ich habe NC nach der neuesten Anleitungen aufgesetzt, das hat super funktioniert. Läuft auf next.MEINEDOMAIN.de. Diese Domain ist im Router unter DynDNS eingetragen.
OnlyOffice habe ich nun auch installiert, auf dem gleichen Server wie Nextcloud. Dafür habe ich eine zweite Subdomain: office.MEINEDOMAIN.de. Für diese zweite Subdomain habe ich beim Anbieter einen CNAME auf next.MEINEDOMAIN.de. eingetragen, das scheint soweit zu funktionieren.
office.MEINEDOMAIN.de zeigt im Browser auch die Übersichtsseite von OnlyOffice an.
Bei den Einstellungen in Nextcloud zur Integration von OnlyOffice ist ein Fehler, nämlich:
Fehler beim Anschließen (cURL error 60: SSL: no alternative certificate subject name matches target host name ‚office.MEINEDOMAIN.de‘
Ähnliche Fehler hatten schon mehrere Leute hier in den Kommentaren beschrieben, also ich weiß, das irgendetwas mit den Zertifikaten nicht passt.
Leider habe ich nach intensiver Suche in allen Einstellungen und Logs nichts gefunden.
Könnte bei der Erstellung der neuen Let’s Encrypt Zertifikaten liegen?
acme.sh –list zeigt ein Zertifikat für next.MEINEDOMAIN.de an und unter SAN_Domains steht die OnlyOffice Domain. Aber laut Anleitung sind ja alle Subdomains in einem Zertifikat verpackt, also müsste das so passen. Auch das im letsencrypt Ordner nur ein Ordner next.MEINEDOMAIN.de liegt.
Die einzige Abweichung von der Anleitung ist bei der Auslagerung der ssl.conf Datei. Alle Einstellungen sind in /etc/nginx/snippets/ssl.conf oder …/header.conf schon vorhanden, deswegne habe ich hier nichts verändert und den Abschnitt der Zertifikate # Certificates used einfach wie im vHost für Nextcloud in den vHost für OnlyOffice gepackt.
Vielleicht habe ich etwas übersehen oder vergessen oder Du hast noch eine Idee, wo ich nach dem Fehler suchen könnte?
Liebe Grüße
Amelia
Ergänzung: Es muss an den Zertifikaten liegen, Firefox sagt, es läge nur ein gültiges Zertifikat für next.MEINEDOMAIN.de vor und keins für office.MEINEDOMAIN.de, wenn ich office.MEINEDOMAIN.de eingebe…
Okay, bitte entschuldigt vielmals, ich habe inzwischen die Lösung gefunden. Wahrscheinlich habe ich zu schnell aufgegeben und hier eine riesige Frage reingeschrieben. Ich habe jetzt Pause gemacht und bin dann nochmal alles durchgegangen. Der Fehler war im vHost con OnlyOffice. Bei den Zertifikaten wurde in der OnlyOffice Anleitung nur ein RSA Zertifikat erstellt und deswegen war die Verzeichnisstruktur etwas anders, es fehlen dann die Unterordner für jeweils ecc und rsa. Die hatte ich aber im vHost angegeben, dort lagen aber nur die alten Zertifikate für die Nextcloud.
Das habe ich jetzt geändert und jetzt funktioniert alles!
Nochmals Danke an Jan!
Hi Amelia,
wie es aussieht, hast du für office.meinedomain.de kein Zertifikat ausgestellt. Entweder stellst du hier ein neues Zertifikat nur für office.meinedomain.de aus und bindest dieses dann an einen neuen vHost, der nur für die Office-Domain gilt.
Du kannst aber auch so etwas machen wie
acme.sh --issue -d next.meinedomain.de -d office.meinedomain.de ...
, dann „verpackt“ er beide Zertifikate in eine Zertifikats-Datei. Dann brauchst du dich nicht mit unterschiedlichen vHosts/Zertifikaten herum schlagen.Bei der zweiten Methode werden aber alle Domains, für die dieses Zertifikat ausgestellt ist, in den Zertifikats-Infos (z.B. im Browser) angezeigt.
Gruß,
Jan
Hallo Jan,
gibt es eine Möglichkeit Office Dokumente auf dem Raspberry mit Nextcloud anzuschauen bzw. zu bearbeiten?
Es wären höchsten zwei User, die evtl. gleichzeitig Office Dokumente öffnen.
OnlyOffice geht nur mit dem Dokumentenserver und der läuft nicht auf dem Raspi.
Colabora ist glaube ich auch nicht möglich bzw. etwas umständlicher auf dem Raspi zu installieren.
Aber vielleicht kennt sich damit jemand aus und könnte mir weiter helfen.
Vielen Dank
Grüße Marco
Hi Marco,
auf dem Raspi laufen glaube ich beide Backends nicht. Hier könnte man höchstens einen weiteren (x64-)Server nutzen, der dann OnlyOffice oder Collabora hostet. Aber dann könnte man hier ja auch gleich die Nextcloud drauf laufen lassen…
Gruß,
Jan