| Another CalDav server I can recommend is Radicale.
It's written in python and designed in a pretty modular way,
enabling authentication and authorization (and more) plugins. Data is saved in plain text files and I track/backup it using git. Over the time I've accumulated some interesting modifications: - Authentication runs with pam on the host system. - To enable sharing of calendars I run a periodic script symlinking the calendars to all authorized users. Unfortunately this suffers from combinatiorial explosion. - Using a rights plugin with custom CalDav Attributes and a modified web plugin I added
support for access Control Lists. - To enable public calendars you give read permissions to the `public` user using ACL.
Then a nginx hack gives blanket acces for read operations: location /public {
proxy_pass http://127.0.0.1:{%RADICALE_PORT%};
include proxy_params;
proxy_set_header Authorization "Basic {%RADICALE_PUBLIC_AUTH%}";
proxy_hide_header Authorization;
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Methods "GET, OPTIONS, PROPFIND";
add_header Access-Control-Allow-Headers "Depth";
limit_except GET OPTIONS PROPFIND { deny all; }
}
These public calendars are can be viewed on a web calendar (https://gitlab.nomagic.uk/popi/js_calendar_from_ics)I should probably write a blog post about the setup. |