Skip to main content

Lightweight CalDAV/CardDAV server

Project description

Build Status Windows Build Status

Xandikos is a lightweight yet complete 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:

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.4 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

Docker

A Dockerfile is also provided; see the comments on the top of the file for configuration instructions.

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 unless –defaults is specified. You can also 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

Client instructions

Some clients can automatically discover the calendars and addressbook URLs from a DAV server (if they support RFC:5397). For such clients you can simply provide the base URL to Xandikos during setup.

Clients that lack such automated discovery (e.g. Thunderbird Lightning) require the direct URL to a calendar or addressbook. In this case you should provide the full URL to the calendar or addressbook; if you initialized Xandikos using the --defaults argument mentioned in the previous section, these URLs will look something like this:

http://dav.example.com/user/calendars/calendar

http://dav.example.com/user/contacts/addressbook

Contributing

Contributions to Xandikos are very welcome. If you run into bugs or have feature requests, please file issues on GitHub. If you’re interested in contributing code or documentation, please read CONTRIBUTING. Issues that are good for new contributors are tagged new-contributor on GitHub.

Help

There is a #xandikos IRC channel on the Freenode IRC network, and a Xandikos mailing list.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xandikos-0.1.0.tar.gz (94.8 kB view details)

Uploaded Source

File details

Details for the file xandikos-0.1.0.tar.gz.

File metadata

  • Download URL: xandikos-0.1.0.tar.gz
  • Upload date:
  • Size: 94.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.3

File hashes

Hashes for xandikos-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1b2f75d8c49ef4bd0d28a90175f6e99740876c429e6892aa96dc2e0b540a254e
MD5 a9188c62d1ff0279b17aaa2cafe64254
BLAKE2b-256 22a810e72662ccf813a66efb2d8e13148cbb9758aa356ad96f9a92dba0df8d46

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page