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: