Nach Update Warning wegen well-known unter nginx

Hallo Forum,

ich habe heute meine Instanz auf NC29 aktualisiert, es scheint soweit alles/das meiste zu funktionieren, aber ich bekomme einige Warnings.
In diesem Thread möchte ich erstmal nur die Sache mit “well-known” ansprechen.

Die Instanz läuft unter einem Debian 12 (bookworm) auf x86_64 Hardware. PHP ist in Version 8.2 installiert.
Webserver ist ein nginx 1.22.1, Nextcloud liegt dabei in einem Subdir.

Seit dem Update bekomme ich diese Warnung:
Your web server is not properly set up to resolve .well-known URLs, failed on: /.well-known/caldav For more details see the documentation :arrow_upper_right:.

Vor den Update gab es diese Meldung nicht.
Ich habe mir dann die verlinkte Dokumentation angesehen und exakt den Block aus der Anleitung in die Site kopiert. Keine Änderung, die Warnung kommt trotzdem.

Kalendersynchronisation mit meinem Handy klappt aber.

Kann mir jemand sagen, worauf ich bei diesem “well-known” genau zu achten habe? Was eventuell falsch sein könnte?

Danke,
Schultze

2 Likes

Hallo,

habe exakt das gleiche Bild nach einem Update heute Morgen. Webserver ist ein nginx 1.25.4 auf einem Ubuntu 20.04 und PHP 8.1. Nextcloud liegt auch in einem subdir.

Warnung erscheint, aber Synchronisation mit dem Androiden läuft ohne Fehler.

Danke

Grauwolf

Hab auch das Problem, auf GitHub hab ich die Info bekommen das ab NC29 die Prüfung über PHP und nicht mehr durch den Browser erfolgt. Es wird dafür die overwrite.cli.url verwendet. Aber so richtig schlau bin ich daraus auch nicht geworden.

Link zur Quelle

Konnte bei mir das Problem lösen, es lag daran das ein slash hinter dav erwartet wird im Script “WellKnownUrls.php”, was ja neu sein soll bei nextcloud 29. Vorher war es bei mir ohne den letzten Slash kein Problem. Seit NC 29 ist die Prüfung wohl strenger, damit wird auch der letzte Slash geprüft, ist er nicht da gibt es die Fehlermeldung, deshalb wurde auch die Funktionalität nicht beeinträchtigt weil der slash nicht nötig ist damit es funktioniert, aber ohne wird eben der Fehler angezeigt. Hier zum nachlesen

Also statt

/remote.php/dav

Sollte es so Aussehen

/remote.php/dav/

Da ich nginx Proxy Manager vor der nextcloud habe musste ich in den advanced Einstellungen nur den Slash einfügen.

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/;
}

Grüße

2 Likes

Es scheint, als konnte eine Lösung gefunden werden, die bei meiner Installation funktioniert (nginx mit Nextcloud 29 im Subdir): [Bug]: NC29 .well-known URLs, failed on: /.well-known/caldav · Issue #45033 · nextcloud/server · GitHub

Ich habe heute auf Nextcloud 29 geupdatet und das selbe Problem. Da ich Traefik einsetze, musste ich meine Middleware anpassen:

http:
  routers:
    nextcloud:
      rule: "Host(`cloud.example.com`)"
      middlewares:
        - nextcloud-dav
        - nextcloud-info
      entrypoints:
        - https
      service: "nextcloud"

  services:
    nextcloud:
     loadBalancer:
        servers:
          - url: http://172.17.0.1:8080/
        passHostHeader: true

  middlewares:
    nextcloud-dav:
      redirectRegex:
        regex: "https://cloud.example.com/.well-known/ca(l|rd)dav(/(.*))?"
        replacement: "https://cloud.example.com/remote.php/dav/${3}"
    nextcloud-info:
      redirectRegex:
        regex: "https://cloud.example.com/.well-known/(webfinger|nodeinfo)(/(.*))?"
        replacement: "https://cloud.example.com/index.php/.well-known/${1}/${3}"

Damit hat sich das Problem mit caldav und carddav gelöst, aber Nextcloud meckert immer noch über webfinger, obwohl laut curl alles korrekt ist:

$ curl -D- -v -L http://cloud.example.com/.well-known/webfinger/ 2>&1 | egrep "(Host:|GET|location:)"
> GET /.well-known/webfinger/ HTTP/1.1
> Host: cloud.example.com
> GET /.well-known/webfinger/ HTTP/2
> Host: cloud.example.com
< location: https://cloud.example.com/index.php/.well-known/webfinger/
location: https://cloud.example.com/index.php/.well-known/webfinger/
> GET /index.php/.well-known/webfinger/ HTTP/2
> Host: cloud.example.com

Hat dazu noch jemand eine Lösung? Oder muss ich auf ein Update warten?

Ich habe das Problem gelöst. Während hinter caldav und cardav jetzt ein / sein muss, darf er nicht hinter webfinger oder nodeinfo sein. Die Middleware muss also so angepasst werden.

nextcloud-info:
      redirectRegex:
        regex: "https://cloud.example.com/.well-known/(webfinger|nodeinfo)(/(.*))?"
        replacement: "https://cloud.example.com/index.php/.well-known/${1}"
1 Like

Hallo zusammen,

ich hatte dieselbe Fehlermeldung. Nachdem ich diesen Thread dann gelesen habe, hatte ich auch zunächst die Nginx Config in Verdacht, aber dort war der Trailing Slash schon korrekt gesetzt.

Das Problem lag bei mir woanders.

Ich musste “localhost” in meine “trusted_domains” aufnehmen. In der config.php zum Beispiel:

  'trusted_domains' =>
  array (
          0 => 'cloud.mydomain.tld',
          1 => 'localhost',
  ),

Zuvor war dort nur der erste EIntrag vorhanden. Woran es genau liegt - keine Ahnung. Aber der Eintrag scheint zu helfen.

1 Like