Setting up Radicale
A tiny server, with the actual setup work mostly in getting users and permissions right.
- 1
Run the container
A well-maintained community image handles the WSGI setup that Radicale needs to run properly behind a reverse proxy.
services: radicale: image: tomsquest/docker-radicale:latest container_name: radicale restart: unless-stopped ports: - "5232:5232" volumes: - ./data:/data - ./config:/config - 2
Create a user
Radicale authenticates against a standard htpasswd file, generated once per user.
docker exec -it radicale htpasswd -B /config/users kevin - 3
Set permissions in the rights file
The rights file controls who can read or write which collections. This is a common snag: the permission letters are case-sensitive, RW grants read-write, rw doesn't do what it looks like it should.
# config/rights [kevin-private] user: kevin collection: kevin/.* permissions: RW - 4
Add it to a client
DAVx⁵ on Android, or the built-in Calendar and Contacts settings on iOS and macOS, all take the server URL directly (http://this-server:5232/username/) along with the username and password just created.
Further reading
- Radicale documentation
Official docs covering the rights file syntax and authentication options in full.
- tomsquest/docker-radicale on GitHub
The community-maintained image used above, including its own configuration notes.