a CalDAV/CardDAV server
This software is not stable yet and things are subject to change.
cargo install --git https://github.com/lennart-k/rustical
docker run -p 4000:4000 -v YOUR_CONFIG_TOML:/etc/rustical/config.toml -v YOUR_DATA_DIRECTORY:YOUR_DATA_DIRECTORY ghcr.io/lennart-k/rustical
You can generate a default config.toml
with
rustical gen-config
There, you can customize your username, password, and app tokens. Password hashes can be generated with
rustical pwhash
The password is meant as a password you use to log in to the frontend.
Since it's sensitive information, the secure but slow hash algorithm argon2
is chosen.
I recommend to generate random app tokens for each CalDAV/CardDAV client.
These can use the faster pbkdf2
algorithm.
- CalDAV
- Support for VEVENT, VTODO, VJOURNAL
- Proper filtering for REPORT method
- comp-filter
- time-range filter
- good enough to use
- prop-filter
- ICS parsing
- Datetime parsing
- Implement PROPPATCH
- CardDAV
- Auth
- current state: RustiCal should be safe against unauthenticated request, however many routes are not checked for authorization yet
- static authentication
- Access control
- preparation for different principal types (groups)
- authentication rewrite? (argon2 is very slow for each request)
- solved through app tokens
- Web UI
- Trash bin
- Hiding calendars instead of deleting them
- Restore endpoint
- Packaging
- Ensure cargo install works
- Docker image
- Releases
- Testing such that I'm confident enough to use it myself :)
- WebDAV sync extension RFC 6578
- implement getctag see
- implement WebDAV If header
- Ensure proper routing
- Onboarding
- config generation
- usable documentation
- usable frontend
- Versioning Extensions to WebDAV: RFC 3253
- provides the REPORT method
- Calendaring Extensions to WebDAV (CalDAV): RFC 4791
- Scheduling Extensions to CalDAV: RFC 6638
- not sure yet whether to implement this
- Collection Synchronization WebDAV RFC 6578
- We need to implement sync-token, etc.
- This is important for more efficient synchronisation
- iCalendar RFC 2445
- a returned version of a resource is marked with a sync token
- the client can send the sync token to find out about changes after this sync token