Open source CardDAV and CalDAV server with minimal administrative overhead, backed by a Git repository.
Deploy this app to Linode with a free $100 credit!
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.
Extended documentation can be found on the home page <https://www.xandikos.org/docs/>
_.
The following standards are implemented:
4918
/:RFC:2518
(Core WebDAV) - implemented, except for COPY/MOVE/LOCK operations4791
(CalDAV) - fully implemented6352
(CardDAV) - fully implemented5397
(Current Principal) - fully implemented3253
(Versioning Extensions) - partially implemented, only the REPORT method and {DAV:}expand-property property3744
(Access Control) - partially implemented5995
(POST to create members) - fully implemented5689
(Extended MKCOL) - fully implemented6578
(Collection Synchronization for WebDAV) - fully implementedThe following standards are not implemented:
6638
(CalDAV Scheduling Extensions) - not implemented7809
(CalDAV Time Zone Extensions) - not implemented7529
(WebDAV Quota) - not implemented4709
(WebDAV Mount) - intentionally <https://github.com/jelmer/xandikos/issues/48>
_ not implemented5546
(iCal iTIP) - not implemented4324
(iCAL CAP) - not implemented7953
(iCal AVAILABILITY) - not implementedSee DAV compliance <notes/dav-compliance.rst>
_ for more detail on specification compliancy.
Xandikos has been tested and works with the following CalDAV/CardDAV clients:
Vdirsyncer <https://github.com/pimutils/vdirsyncer>
_caldavzap <https://www.inf-it.com/open-source/clients/caldavzap/>
/carddavmate <https://www.inf-it.com/open-source/clients/carddavmate/>
evolution <https://wiki.gnome.org/Apps/Evolution>
_DAVx5 <https://www.davx5.com/>
_ (formerly DAVDroid)sogo connector for Icedove/Thunderbird <http://v2.sogo.nu/english/downloads/frontends.html>
_aCALdav syncer for Android <https://play.google.com/store/apps/details?id=de.we.acaldav&hl=en>
_pycardsyncer <https://github.com/geier/pycarddav>
_akonadi <https://community.kde.org/KDE_PIM/Akonadi>
_CalDAV-Sync <https://dmfs.org/caldav/>
_CardDAV-Sync <https://dmfs.org/carddav/>
_Calendarsync <https://play.google.com/store/apps/details?id=com.icalparse>
_Tasks <https://github.com/tasks/tasks/tree/caldav>
_AgendaV <http://agendav.org/>
_CardBook <https://gitlab.com/cardbook/cardbook/>
_homeassistant's CalDAV integration <https://www.home-assistant.io/integrations/caldav/>
_At the moment, Xandikos supports Python 3 (see setup.cfg for specific version)
as well as Pypy 3. It also uses Dulwich <https://github.com/dulwich/dulwich>
,
Jinja2 <http://jinja.pocoo.org/>
,
icalendar <https://github.com/collective/icalendar>
, and
defusedxml <https://github.com/tiran/defusedxml>
.
E.g. to install those dependencies on Debian:
.. code:: shell
sudo apt install python3-dulwich python3-defusedxml python3-icalendar python3-jinja2
Or to install them using pip:
.. code:: shell
python setup.py develop
A Dockerfile is also provided; see the comments on the top of the file for
configuration instructions. The docker image is regularly built and
published at ghcr.io/jelmer/xandikos
. See
examples/docker-compose.yml
and the
man page <https://www.xandikos.org/manpage.html>
_ for more info.
Xandikos can either directly listen on a plain HTTP socket, or it can sit behind a reverse HTTP proxy.
To run a standalone (no authentication) instance of Xandikos, with a pre-created calendar and addressbook (storing data in $HOME/dav):
.. code:: shell
./bin/xandikos --defaults -d $HOME/dav
A server should now be listening on localhost:8080 <http://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.
The easiest way to run Xandikos in production is by running a reverse HTTP proxy like Apache or nginx in front of it. The xandikos script can either listen on the local host on a particular port, or it can listen on a unix domain socket.
For example init system configurations, see examples/.
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
Contributions to Xandikos are very welcome. If you run into bugs or have
feature requests, please file issues on GitHub
<https://github.com/jelmer/xandikos/issues/new>
. If you're interested in
contributing code or documentation, please read CONTRIBUTING
<CONTRIBUTING.md>
. Issues that are good for new contributors are tagged
new-contributor <https://github.com/jelmer/xandikos/labels/new-contributor>
_
on GitHub.
There is a #xandikos IRC channel on the OFTC <https://www.oftc.net/>
IRC network, and a Xandikos <https://groups.google.com/forum/#!forum/xandikos>
mailing list.
Please login to review this project.
No reviews for this project yet.
Comments (0)
Please login to join the discussion on this project.