Skip to content

Radicale: document client setup, allow anonymous well-known discovery - #377

Open
micbar wants to merge 1 commit into
mainfrom
radicale-client-docs
Open

Radicale: document client setup, allow anonymous well-known discovery#377
micbar wants to merge 1 commit into
mainfrom
radicale-client-docs

Conversation

@micbar

@micbar micbar commented Sep 1, 2026

Copy link
Copy Markdown
Member

Closes #192

The README documented how to deploy Radicale but not how clients connect to it, so users ended up guessing URLs (and hitting the web UI or 401s). Verified the full request matrix against a stock deployment (opencloud 7.5.0 + radicale/radicale.yml), details in #192 analysis comment.

Changes

radicale/README.md(new)

client setup guide — the CalDAV/CardDAV URLs (/caldav/, /carddav/, trailing slash required: without it the proxy prefix route doesn't match and requests land on the web UI), the App-Token requirement (with the default PROXY_ENABLE_BASIC_AUTH=false account passwords are rejected with 401 while App Tokens work out of the box — verified), GNOME Online Accounts and Thunderbird walkthroughs, troubleshooting table.

config/opencloud/proxy.yaml

mark the two /.well-known/* routes unprotected: true so DAV clients can run RFC 6764 service discovery before authenticating. Previously the proxy answered 401 where discovery expects the 301 redirect. Verified:

  • anonymous GET/PROPFIND /.well-known/caldav|carddav301 to /caldav/ / /carddav/
  • Radicale serves no data on these paths: deeper paths (/.well-known/caldav/<uuid>/) → 404; path traversal (/.well-known/caldav/../../caldav/) is normalized by the router onto the protected /caldav/ route → 401
  • a client-spoofed X-Remote-User header is overwritten by the proxy on authenticated routes (accountResolver sets the header unconditionally) and is irrelevant on the well-known routes (redirect only)
  • regression: authenticated PROPFIND /caldav///carddav/ still 207 with correct current-user-principal

README.md

the "With Radicale" section now states the client URLs and links to the new guide.

Not included

Slash-less routes (/caldav without trailing slash) were tested and deliberately left out: Radicale 500s on PROPFIND for the bare script root, which is worse than the current well-defined fall-through. Documented instead.

Clients were left guessing the CalDAV/CardDAV URLs (issue #192): the
README documented how to deploy Radicale but not how to connect to it.

- Add radicale/README.md with client URLs (trailing slash required),
  the App-Token requirement (account passwords are rejected with the
  default PROXY_ENABLE_BASIC_AUTH=false), GNOME Online Accounts and
  Thunderbird walkthroughs, and troubleshooting.
- Mark the two '/.well-known/*' proxy routes as unprotected so DAV
  clients can run RFC 6764 service discovery before authenticating.
  Previously the proxy answered 401 where clients expect the 301
  redirect to /caldav/ or /carddav/. Radicale serves no data on these
  paths (deeper paths return 404, path traversal is normalized onto
  the protected routes), verified against opencloud 7.5.0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CalDAV/CardDAV URLs missing /caldav/ and /carddav/ suffix - GNOME Online-Accounts (Linux)

1 participant