Nextcloud Domain wechseln - Wechsel zu NGINX Reverse Proxy

Szenario:

Ihr habt eine Nextcloud unter beispieldomain.com und habt euch eine andere Domain gekauft, cooledomain.com. Jetzt wollt ihr eure Nextcloud darüber erreichbar machen. Dazu müsst ihr ein paar Sachen an mehreren Stellen ändern.

Da ich momentan nicht die Möglichkeit habe, hier eine vollständige Anleitung zu schreiben, hier die Kurzfassung, ohne große Erklärungen:

  • wenn vorher per certbot und apache ein Zertifikat genutzt wurde:
  • Pfad dafür finden und Zertifitkat mit certbot löschen oder besser noch “revoken”
  • dann in Apache Befehl a2dissite im Apache Pfad unter sites-enabled die Seite mit dem Zertifikat deaktivieren
  • jetzt entweder neues Zertifitkat mit neuer (/abgewandelter sites-available config) Seite erstellen oder auf NGINX Reverse Proxy (nrp) wechseln:
  • in NGINX Reverse Proxy nun auf eure Seite verlinken, SSL anstellen, dort auch Zertifikat verwalten usw.

ACHTUNG:

wenn ihr in eurer nextcloud config z.B. unter /var/www/nextcloud/config/

  'overwrite.cli.url' => 'https://cooledomain.com',
  'overwriteprotocol' => 'https',

aktiviert habt, dann müsst ihr trotzdem in nrp http wählen!

Was zu Problemen führen kann und bei mir in der Apache2 Config der aktuellen Seite aktiviert war:

RewriteEngine on
RewriteCond %{SERVER_NAME} =beispieldomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

so wird https immer erzwungen, was aber in der nextcloud config siehe oben auch geregelt wird. Diese Zeilen haben bei mir zu Problemen mit nrp geführt und die Seite war über SSL nicht erreichbar.
Allerdings geht keine SSL Verbindung von nrp zu nextcloud, wenn ihr nun mal wie beschrieben das Zertifikat entfernt habt.

Nach außen könnt ihr dennoch “Force SSL” anstellen, lediglich die Kommunikation eures Reverse Proxy zur Nextcloud im Heimnetz ist unverschlüsselt. (Das geht sicher auch eleganter, aber ich verwalte lieber alle Zertifikate an einem Ort, nrp…)

CalDav und CardDav

Hier habe ich ein halbes Jahr gebraucht, um das Problem richtig in den Griff zu bekommen.
Bei mir war jetzt eine ganze Weile in der Nextcloud Übersicht das Problem:

"Dein Webserver ist nicht richtig konfiguriert, um “/.well-known/caldav” aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation :arrow_upper_right:.
Dein Webserver ist nicht richtig konfiguriert, um “/.well-known/carddav” aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation :arrow_upper_right:.
"

Exkurs

Zuerst habe ich den Fehler in /var/www/nextcloud/.htaccess vermutet, doch die Konfiguration für meine NC ist eigentlich korrekt.
Der Fehler liegt aber daran (wie hier beschrieben ist: Reverse proxy — Nextcloud latest Administration Manual latest documentation), dass ein Reverse Proxy diese Weiterleitung standardmäßig nicht weiterreicht.
Da in der Dokumentation nicht steht wie man es macht, habe ich es von Apache umschreiben müssen, die Lösung lautet:

location = /.well-known/carddav {
  return 301 $scheme://$host/remote.php/dav/;
}

location = /.well-known/caldav {
  return 301 $scheme://$host/remote.php/dav/;
}

Diese Zeilen müsst ihr einfach bei NGINX RP in die “Custom Nginx Configuration” einfügen:

Nun sollte das auch auf Apple Geräten super funktionieren, bei Android geht es auch so ganz gut, trotz der Fehlermeldungen.

HINWEIS:

Seit dem Wechsel habe ich Probleme mit Collabora Office CODE Server:

Bei mir kamen dann nämlich folgende Fehler sekündlich:
GuzzleHttp\Exception\ConnectException: cURL error 35: error:0A00010B:SSL routines::wrong version number (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://mydomain.com/apps/richdocumentscode/proxy.php?req=/hosting/capabilities
Außerdem ist dann in Administratoreinstellungen → Nextcloud Office der Hinweis versehen, dass sich nicht mit dem Server verbunden werden kann! Dies lässt sich temporär reduzieren auf ca. 1 Fehlermeldung pro Minute, indem man Nextcloud Office und/oder Collabora Office deaktiviert, aber natürlich löst das kein Problem.

Eine Option ist, einen separaten Collabora Online Server zu installieren.
Leider habe ich keinen richtigen Fix momentan.

EDIT:
Collabora Online ist nach einigen Updates später wieder funktionstüchtig gewesen, was genau das Problem war, weiß ich nicht.