Carddav/caldav hinter Reverse-Proxy

Hallo Community,

ich habe mir zum ersten Mal eine Nextcloudinstallation zugelegt und bekommme zwei Fehler bei den " Sicherheits- & Einrichtungswarnungen" nicht weg.:

Dein Web-Server ist nicht richtig eingerichtet um "/.well-known/caldav" aufzulösen. Weitere Informationen findest Du in der Dokumentation.
Dein Web-Server ist nicht richtig eingerichtet um "/.well-known/carddav" aufzulösen. Weitere Informationen findest Du in der Dokumentation.

Gegebenheiten: Nextcloud auf Ubuntu-Container auf Proxmox, davor Reverseproxy. Der Reverseproxy mit apache, läuft auch auf einem Ubuntu-Container auf Proxmox. Auf dem reverseproxy läuft eine .conf mit folgendem Inhalt:

<VirtualHost *:80>
 ServerName nxc.my-sub.dyn-service.tld
 ProxyPreserveHost On
 DocumentRoot /var/www/html
 ProxyPass /.well-known !
 ProxyPass / http://192.168.xxx.yyy:80/
 ProxyPassReverse / http://192.168.xxx.yyy:80/
</VirtualHost>

Die Dokumentation ist der Meinung, ich soll das Problem auf dem Proxy lösen - klingt plausibel, auch wenn mir der Grund des Fehlers unklar ist. Die Doku schlägt vor:

RewriteEngine On
RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]

wird aber leider nicht genauer. Was habe ich gemacht:

  1. ich habe auf dem apache2 eine .htaccess angelegt mit dem vorgeschlagenen Inhalt aus der Doku.
  2. ich habe .htaccess erweitert (hab ich mir auf der nextcloud abgeschaut) um
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
 RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
</IfModule>
  1. ich habe noch ausgeführt: a2enmod rewrite

Danach fand ich in der .conf die neuen Zeilen

RewriteEngine on
RewriteCond %{SERVER_NAME} =nxc.my-sub.dyn-service.tld
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Der Fehler blieb allerdings unverändert.

  1. Ich habe die neuen Zeilen wieder auskommentiert und die empfohlenen Zeilen aus der Dokumentation direkt in die .conf eingefügt.

  2. den Teil //%{SERVER_NAME} habe ich geändert auf //192.168.xxx.yyy/var/www/nextcloud

  3. den Teil //%{SERVER_NAME} habe ich geändert auf //192.168.xxx.yyy/nextcloud

  4. auf der Nextcloud habe ich in der .conf bei den folgenden Zeilen ein /nextcloud eingeschoben - habe ich irgendwo als Lösung im Internet gesehen.

RewriteRule ^\.well-known/host-meta /nextcloud/public.php?service=host-meta [QSA,L]
RewriteRule ^\.well-known/host-meta\.json /nextcloud/public.php?service=host-meta-json [QSA,L]
RewriteRule ^\.well-known/webfinger /nextcloud/public.php?service=webfinger [QSA,L]
RewriteRule ^\.well-known/nodeinfo /nextcloud/public.php?service=nodeinfo [QSA,L]
RewriteRule ^\.well-known/carddav /nextcloud/remote.php/dav/ [R=301,L]
RewriteRule ^\.well-known/caldav /nextcloud/remote.php/dav/ [R=301,L]

Zusatzinfo:

  • jede Aktion wurde abgeschlossen mit einem service apache2 restart
  • Ich hatte auch die Fehlermeldung “Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder Sie greifen auf Nextcloud über einen vertrauenswürdigen Proxy zu…” Den habe ich problemlos durch den Eintrag des Proxyservers trusted_proxies' => ['myproxy.local'] in die config.php weg bekommen.
  • externer Zugriff per iOS-app funktioniert nicht > hängt endlos bei “Zugriff gewähren”. Sehe ich eigentlich als separates Problem um das ich mich später kümmern will, wollte es nur erwähnt haben - vielleicht ist es ja hilfreich

Ich bin jetzt mit wildem herumprobieren durch. Ich benötige jetzt zielgerichtete Hilfe. Kann mir jemand ausdeteillieren wie ich Dokumentation anwenden soll? Kann mir jemand das Grundprinzip erklären oder Hinweise geben wo ich weiter suchen soll? Eine direkte Lösung des Problems nehme ich auch sehr gerne.

Vielen Dank schon mal!
Grüße

@joergsen : Ich habe in meine .htaccess diese beiden Einträge eingefügt:

Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav

Hallo,

also apache2 kann ich schon lesen Jetzt noch die frage Läuft auf ? Ubuntu ? oder auf einem PI oder ?

ansonsten

Ist es die 18.0.?
Oder die 16 Da gab es mal eine kleine Änderung :sweat_smile:

18.x.x

<VirtualHost *:443>

    ServerName XXX.XXX.XXX.XXX <---DEINE intern
    ServerAlias nxc.my-sub.dyn-service.tld
    
DocumentRoot "/var/www/html/nextcloud"

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# SSL Konfiguration
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/nextcloud.crt
SSLCertificateKeyFile /etc/apache2/ssl/nextcloud.key
SSLProtocol All -SSLv2 -SSLv3 -TLSv1.1

<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
#Nextcloud Konfiguration
<Directory /var/www/html/nextcloud/>
Options MultiViews FollowSymLinks
AllowOverride All
Require all granted


<IfModule mod_dav.c>
Dav off
</IfModule>

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; preload"
# Header set Referrer-Policy “no-referrer” <-ab version 17 muss es ausgeklammert werden
Redirect 301 /.well-known/carddav /remote.php/dav
</IfModule>


SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
Satisfy Any

</Directory>

</VirtualHost>

Ich habs mal angepasst soweit es geht sollte dann laufen wenn es dennoch eine Meldung gibt

versuch mal dass: Sudo a2enmod ssl rewrite headers env dir mime
und dann lade den apache neu

PS:auf Port 80 würde ich den nicht laufen lassen :wink: da kannst du dann eine Infoseite hinbauen
und

SSLCertificateFile /etc/apache2/https/nextcloud.crt
SSLCertificateKeyFile /etc/apache2/https/nextcloud.key

Musst du halt anpassen je nach dem was du da machen willst letsencrypt Oder self certificate

Hallo Zusammen,

danke für die schnelle Rückmeldung! Jetzt muss ich erst mal zu testen kommen.

Nur noch schnell die Angaben zur Konfiguration, die hatte ich oben in der Prosa versteckt.

Nextcloud:
Version 18.0.3
Ubunter-Server 18.04 als LXC auf proxmox

Reverse-Proxy:
apache2
Ubunter-Server 18.04 als LXC auf proxmox

… und das alles im Heimnetz hinter einer Fritzbox.

Was sind da sonst noch für Angaben relevant? Kenne mich da noch nicht so aus.

Grüße joergsen

Hallo Im grunde wars das auch schon

Also was apache2 angeht

Das mit dem ProxyPass den brauchst du in verbindung mit der Cloud so nicht also Normal

Hallo Zusammen,

ich habe jetzt mal versucht die beiden berühmten Redirect-Zeilen an verschiedensten Stellen in den verschiedensten Formen unterzubringen. Leider ohne Erfolg.
Deshalb muss ich jetz mal konkreter nachfragen:

@eisente: Ist das die .htaccess auf der nextcloud oder auf dem proxy? Müssen die Zeilen in der Datei in einer bestimmten Struktur liegen? Wofür steht hier

“/nextcloud”

und wodurch ist es ggf. zu ersetzen. Wo in der Dateistruktur liegt die .htaccess bei dir? Müssen die Änderungen noch irgendwo aktiviert werden (ausser service apache2 restart)?

@NextGeneration: Welche Datei genau hast du da genau einkopiert? Von welchem Rechner, Nextcloud oder Proxy? Wo liegt die in der Verzeichnisstruktur? Warum liegt der Redirect innerhalb einer Modulabfrage und warum nur carddav? Überhaupt sieht die Datei deutlich anders aus als bei mir. Da kommen noch jede Menge Fragen. die a2enmod habe ich noch mal ausgeführt, hat aber auch nur gemeldet, dass die Module schon enabled sind. Was ich vergaß zu erwähnen: die ganze Zertifikatsgeschichte habe ich mit Letsencrypt zentral auf dem Reverseproxy gemacht.

Was ich auch ohne Erfolg ausprobiert habe ist: https://www.andysblog.de/nextcloud-hinter-einem-reverse-proxy-einrichtungswarnung Leider erfolglos. Auch hier stellt sich die Frage: Ist das überhaupt zielführend? Wer und wo genau ist die "für Nextcloud-betreffenden Konfigurationsdatei" ? Welche syntaktischen Möglichkeiten gibt es bei "//Ziel-Server/", bzw. was kann man da alles falsch machen?

Und schliesslich noch: Kann man sich irgendwo grundlegend zu dem Thema einlesen. Ich hab im Netz nicht wirklich was gefunden und das Nextcloud Manual bleibt auch sehr im allgemeinen.

Viele Fragen, ich weiß. Vielen Dank vorab!
Grüße joergsen

Hallo,

und dann war da noch die Empfehlung der doku das auf dem proxy zu erledigen:
https://docs.nextcloud.com/server/18/admin_manual/configuration_server/reverse_proxy_configuration.html#service-discovery

Die Zeilen
RewriteEngine On
RewriteRule ^/.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
einfach in eine .conf-Datei zu kopieren hat jedenfalls nicht geholfen.

Kann jemand erklären, wie das gemeint ist? Danke!

Ich habe diese beiden Einträge in die .htaccess im root Verzeichnis des Webservers. Somit gibt /nextcloud des Ordner an.

Hallo Zusammen,

ich gebe offiziell auf. Ich habe alles versucht, die Meldung mir diesen Zeilen weg zu bekommen, keine Chance, die Meldung bleibt. Ich komme hier ohne zusätzlichen Input erst mal nicht weiter.
Interessanterweise funktioniert es auch ohne die Zeilen sowohl Kontakte als auch Kalender sync funktioniert per Desktopclient und per iOS. Android steht noch aus, bin aber optimistisch, das es auch funktioniert.
Ich danke euch trotz für eure Hilfe und ende wie schon einige mit diesem Problem: “Das bleibt erst mal so, es funktioniert ja.”

Grüße joergsen

Hey, ich habe das selbe Problem und ich denke es ist ein Problem mit https:

Werde das bei mir mal ausprobieren.

Ich weiß auch nicht… Bekomme es einfach nicht hin diesen Fehler weg zu bekommen, dabei war er früher weg. Seitdem hab ich nur eine weitere Schicht reverse Proxy eingebaut (um auf den nextcloud Server zu leiten).
Ich denke ich habe davon einfach zu wenig Ahnung um das so leicht zu beheben…

ACH und dann gerade wenn ich aufgebe klappt es :joy:

Also ich musste bei meinem reverse Proxy, der direkt auf Nextcloud zeigt noch folgendes einfügen:

Redirect 301 /.well-known/carddav https://cloud.servermeinedomain.de/remote.php/dav
Redirect 301 /.well-known/caldav https://cloud.servermeinedomain.com/remote.php/dav

Bei mir läuft Apache mit nextcloudpi auf einem Raspberry Pi und das ist jetzt die ganze angesprochene Config, die zu Nextcloud weiter reicht:

<VirtualHost *:80>
    ServerName cloud.servermeinedomain.de
    ProxyPreserveHost On
    DocumentRoot /var/www/nextcloud
  <Directory /var/www/nextcloud/>
    Options +FollowSymlinks
    AllowOverride All
    <IfModule mod_dav.c>
      Dav off
    </IfModule>
    LimitRequestBody 0
    SSLRenegBufferSize 10486000
  </Directory>
Redirect 301 /.well-known/carddav https://cloud.servermeinedomain.de/remote.php/dav
Redirect 301 /.well-known/caldav https://cloud.servermeinedomain.de/remote.php/dav
</VirtualHost>

und vorne dran geht eine Anfrage über meinen Main server noch durch diesen reverse Proxy und leitet zur Config oben weiter:

<VirtualHost *:80>
    ServerName cloud.servermeinedomain.de
    DocumentRoot /var/www/html
    Redirect permanent / https://cloud.servermeinedomain.de/
</VirtualHost>

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
    ServerName cloud.servermeinedomain.de
    ProxyPreserveHost On
    ProxyPass / http://192.168.178.71/
    ProxyPassReverse / http://192.168.178.71/
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/cloud.servermeinedomain.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cloud.servermeinedomain.de/privkey.pem
  </VirtualHost>
</IfModule>

Hoffe das hilft dir! :wave:t4: