Troubleshooting Nextcloud in Plesk mit Docker und OnlyOffice- oder Collabora-Image

Wenn Ihr Probleme bei der Konfiguration eines Docker-Images auf einem Plesk-Host habt, z.B. nach den beiden Tutorials hier:

OnlyOffice mit Docker in Plesk
Collabora Online Office mit Docker in Plesk

Dann solltet Ihr die folgenden Hinweise durchgehen und prüfen:

Hinweis 1: DNS-Resolver

Plesk Onyx ist ein Administrations-Panel für Webhosting, aber es stellt auch grundlegende Funktionen als DNS-Server zur Verfügung. Erstelle ich eine Subdomain, ist es natürlich wichtig, dass diese auch vernünftig aufgelöst wird. Deshalb sollten wir sicherstellen, dass der Plesk-Host sich auch selbst als DNS-Resolver nutzt und nicht irgendwelche Nameserver, die in der Grundkonfiguration von unserem VPS-Hoster eingetragen wurden.

Da ich nicht davon ausgehe, dass jeder seine eigenen Nameserver betreibt, sollte es in der Domain-Verwaltung beim Provider zumindest zwei A-Records geben, die auf die externe IP-Adresse Eures Plesk-Hosts zeigen:

domain.tld
*.domain.tld

zusätzlich kann und sollte es für die beiden Hostnamen auch noch AAAA-Records (IPv6) geben, wenn IPv6 auf Eurem Plesk-Host aktiv ist.

Überprüfen wir zuerst, ob die Einträge in der /etc/hosts auf unserem Server richtig sind:

cat /etc/hosts

Hier sollten auf jeden Fall diese beiden Einträge für localhost existieren:

127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost ip6-localhost ip6-loopback

zusätzlich existiert noch ein Eintrag für die externe bzw. interne IP-Adresse, wenn beim Provider NAT eingesetzt wird:

IP-Adresse hostname.domain.tld hostname

Damit sollte schon mal die Auflösung von „localhost“ funktionieren.

Welchen Nameserver Euer VPS mit Plesk nutzt, könnt Ihr mit dem folgenden Befehl prüfen:

cat /etc/resolv.conf

Ausgabe bei meinem VPS:

nameserver localhost

Als DNS-Resolver wird also der Plesk-Host selbst genutzt, gut so. 127.0.0.1 ist natürlich auch in Ordnung.
Sollte der lokale DNS-Resolver eine DNS-Abfrage nicht beantworten können, dann fragt dieser automatisch DNS-Root-Server ab.

Kommt als Ausgabe ein „fremder“ DNS-Resolver, solltet Ihr das natürlich anpassen. Dazu prüfen wir aber erst, ob die DNS-Auflösung (lokal und über DNS-Root-server) auch funktioniert:

Abfrage über DNS-Root-Server testen (bitte einen DNS-Namen einsetzen, der lokal nicht existiert, hier google.de):

dig @localhost google.de

und die dazu richtige Ausgabe dazu:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost google.de
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63090
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.de. IN A

;; ANSWER SECTION:
google.de. 300 IN A 216.58.211.99

;; AUTHORITY SECTION:
google.de. 86400 IN NS ns2.google.com.
google.de. 86400 IN NS ns1.google.com.
google.de. 86400 IN NS ns4.google.com.
google.de. 86400 IN NS ns3.google.com.

;; ADDITIONAL SECTION:
ns1.google.com. 246866 IN A 216.239.32.10
ns1.google.com. 246866 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 246866 IN A 216.239.34.10
ns2.google.com. 246866 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 246866 IN A 216.239.36.10
ns3.google.com. 246866 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 246866 IN A 216.239.38.10
ns4.google.com. 246866 IN AAAA 2001:4860:4802:38::a

;; Query time: 66 msec
;; SERVER: ::1#53(::1)

Abfrage über lokalen DNS-Resolver testen (auf dem Plesk-Host gehostete Domain oder Subdomain nutzen, hier markus-blog.de):

dig @localhost markus-blog.de

und auch hier die Ausgabe:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost markus-blog.de
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50718
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 7

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;markus-blog.de. IN A

;; ANSWER SECTION:
markus-blog.de. 7200 IN A 81.169.254.172

;; AUTHORITY SECTION:
markus-blog.de. 7200 IN NS ns3.weingaertner-it.de.
markus-blog.de. 7200 IN NS ns1.weingaertner-it.de.
markus-blog.de. 7200 IN NS ns2.weingaertner-it.de.

;; ADDITIONAL SECTION:
ns1.weingaertner-it.de. 10800 IN A 81.169.254.172
ns1.weingaertner-it.de. 10800 IN AAAA 2a01:238:4334:f00:aa8:a3a1:de08:926a
ns2.weingaertner-it.de. 10800 IN A 5.189.143.209
ns2.weingaertner-it.de. 10800 IN AAAA 2a02:c207:3002:3949::1
ns3.weingaertner-it.de. 10800 IN A 173.212.246.129
ns3.weingaertner-it.de. 10800 IN AAAA 2a02:c207:3002:2316::1

;; Query time: 0 msec
;; SERVER: ::1#53(::1)

Wenn beide Ausgaben passen, gibt es keine Probleme, wenn wir auf den lokalen DNS-Resolver umsteigen.
Dazu bearbeiten wir unsere Netzwerk-Konfig:

nano /etc/network/interfaces

suchen nach dem Eintrag dns-nameservers und passen diesen auf localhost oder 127.0.0.1 an. Konfig speichern (STRG + W) nicht vergessen.

Damit wir nicht sofort neu starten müssen, passen wir die /etc/resolv.conf an und setzen dort ebenfalls localhost oder 127.0.0.1 ein:

nano /etc/resolv.conf

darauf achten, hier heißt der Eintrag nur „nameserver“, also hinter nameserver und einem Leerzeichen localhost oder 127.0.0.1 einsetzen und speichern (STRG + W).

Nun prüfen wir mit dem folgendem Kommando, ob der lokale DNS-Resolver genutzt wird:

dig markus-blog

im unteren Abschnitt seht Ihr welcher Server zur Auflösung genutzt wird:

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)

Nun funktioniert die DNS-Auflösung auf dem Plesk-Host so, wie sich das Plesk auch vorgestellt hat 😉

Hinweis 2: Docker DNS

Docker Images nutzen von Haus aus die Einträge aus der /etc/resolv.conf, es sei denn dort steht „localhost“. Alle Einträge dieser Art werden herausgefiltert und wenn kein Eintrag übrig bleibt, dann werden dort die google-DNS-Server verwendet (8.8.8.8 und 8.8.4.4). Details dazu findet Ihr hier.

Um das zu umgehen, haben wir die Möglichkeit, beim Starten des Containers einen DNS-Resolver mitzugeben. Dazu müssen wir bei den „docker run“-Kommandos einfach das Argument --dns=IP_ADDRESS hinzufügen. Als IP-Adresse verwendet Ihr Eure externe IP-Adresse vom Plesk-Host.

Für OnlyOffice lautet das Kommando im Ganzen:

docker run -i -t -d -p 127.0.0.1:9981:80 --dns=extIP-Adresse-Plesk -e JWT_ENABLED='true' -e JWT_SECRET='your-secret-key' --restart=always onlyoffice/documentserver

und für Collabora:

docker run -t -d -p 127.0.0.1:9980:9980 --dns=extIP-Adresse-Plesk -e 'domain=subdomain\\.domain\\.com' -e 'username=Benutzername' -e 'password=Dein-Passwort' --cap-add MKNOD collabora/code

….Fortsetzung folgt…

Falls Ihr Probleme mit der Umsetzung meiner Tutorials habt, dann kommt gerne auf mich zu.

Die entsprechenden Lösungen, versuche ich dann entsprechend hier aufzuführen, damit alle davon profitieren können….

Ansonsten freue ich mich wie immer über Feedback, teilen meiner Beiträge und Anregungen für neue Beiträge…

Bis bald…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert