Nextcloud CardDAV and CalDAV discovery with DNS records
Posted on 2022-02-17 in Software
I use a self-hosted Nextcloud instance to hold a lot of my personal data, and that includes my contacts and calendars. Recently I had to reinstall DAVx5 on my phone, and I was surprised that the Nextcloud account was failing to be added.
The DAVx5 error logs showed that it was making requests to the /.well-known/caldav
and
/.well-known/carddav
URLs, as described in RFC
6764. Nextcloud was returning
proper 301 HTTP responses, checked in a web browser, that redirected to the actual WebDAV
endpoint, so it looks like the problem was that DAVx5 wasn't properly following them.
Browsing the DAVx5 documentation on service discovery they mention that the DAV standard also supports using SRV and TXT DNS records pointing to the endpoints to be used for CardDAV and CalDAV, and I decide to give it a go as it sounded easier than further debugging DAVx5 or digging into Nextcloud's and/or the webserver's configuration.
I added the following DNS records to fidelramos.net
:
_caldavs._tcp 10800 IN SRV 0 1 443 cloud.fidelramos.net.
_caldavs._tcp 10800 IN TXT "path=/remote.php/dav/"
_carddavs._tcp 10800 IN SRV 0 1 443 cloud.fidelramos.net.
_carddavs._tcp 10800 IN TXT "path=/remote.php/dav/"
The path
I find by following /.well-known/caldav
and /.well-known/carddav
URLs in my
Nextcloud instance.
Once the DNS records were in place DAVx5 connected successfully, but I had to use
fidelramos.net
as the base URL, instead of cloud.fidelramos.net
as before.