Tree @v0.0.4 (Download .tar.gz)

Xandikos is a CardDAV/CalDAV server that backs onto a Git repository.
Xandikos (Ξανδικός or Ξανθικός) takes its name from the name of the March month in the ancient Macedonian calendar, used in Macedon in the first millennium BC.
Implemented standards
The following standards are implemented:
- RFC 4918/RFC 2518 (Core WebDAV) - implemented, except for COPY/MOVE/LOCK operations
- RFC 4791 (CalDAV) - fully implemented
- RFC 6352 (CardDAV) - fully implemented
- RFC 5397 (Current Principal) - fully implemented
- RFC 3253 (Versioning Extensions) - partially implemented, only the REPORT method and {DAV:}expand-property property
- RFC 3744 (Access Control) - partially implemented
- RFC 5995 (POST to create members) - fully implemented
- RFC 5689 (Extended MKCOL) - fully implemented
The following standards are not implemented:
- RFC 6638 (CalDAV Scheduling Extensions) - not implemented
- RFC 7809 (CalDAV Time Zone Extensions) - not implemented
- RFC 7529 (WebDAV Quota) - not implemented
- RFC 4709 (WebDAV Mount) - not implemented
- RFC 5546 (iCal iTIP) - not implemented
- RFC 4324 (iCAL CAP) - not implemented
- RFC 7953 (iCal AVAILABILITY) - not implemented
See DAV compliance for more detail on specification compliancy.
Limitations
- No multi-user support
- No support for CalDAV scheduling extensions
Supported clients
Xandikos has been tested and works with the following CalDAV/CardDAV clients:
Dependencies
At the moment, Xandikos supports Python 3.3 and higher as well as Pypy 3. It also uses Dulwich, Jinja2, icalendar, and defusedxml.
E.g. to install those dependencies on Debian:
sudo apt install python3-dulwich python3-defusedxml python3-icalendar python3-jinja2
Or to install them using pip:
python setup.py develop
Running
Testing
To run a standalone (low-performance, no authentication) instance of Xandikos, with a pre-created calendar and addressbook (storing data in $HOME/dav):
./bin/xandikos --defaults -d $HOME/dav
A server should now be listening on localhost:8080.
Note that Xandikos does not create any collections by default. You can either create collections from your CalDAV/CardDAV client, or by creating git repositories under the contacts or calendars directories it has created.
Production
The easiest way to run Xandikos in production is using uWSGI.
One option is to setup uWSGI with a server like Apache, Nginx or another web server that can authenticate users and forward authorized requests to Xandikos in uWSGI. See examples/uwsgi.ini for an example uWSGI configuration.
Alternatively, you can run uWSGI standalone and have it authenticate and directly serve HTTP traffic. An example configuration for this can be found in examples/uwsgi-standalone.ini.
This will start a server on localhost:8080 with username user1 and password password1.
mkdir -p $HOME/dav
uwsgi examples/uwsgi-standalone.ini
Commit History
@v0.0.4
git clone https://jelmer.uk/code/xandikos/
- Release 0.0.4. Jelmer Vernooij 3 years ago
- Fix link to dav-compliance, now in rst. Jelmer Vernooij 3 years ago
- Fix support for CalDAV-sync/CardDAV-sync. Jelmer Vernooij 3 years ago
- notes: Touch up Daniel M. Capella 3 years ago
- Update AUTHORS. Jelmer Vernooij 3 years ago
- readme: Use :RFC: role Daniel M. Capella 3 years ago
- Convert Markdown to reStructuredText Daniel M. Capella 3 years ago
- notes/: Minor touch up Daniel M. Capella 3 years ago
- notes/: Use .rst for reStructuredText files Daniel M. Capella 3 years ago
- MANIFEST.in: Tweak recursive-include syntax Daniel M. Capella 3 years ago