Package: xandikos
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 foundon the home page.Implemented standardsThe following standards are implemented:RFC 4918/RFC 2518(Core WebDAV) -implemented, except for COPY/MOVE/LOCK operationsRFC 4791(CalDAV) -fully implementedRFC 6352(CardDAV) -fully implementedRFC 5397(Current Principal) -fully implementedRFC 3253(Versioning Extensions) -partially implemented, only the REPORT method and {DAV:}expand-property propertyRFC 3744(Access Control) -partially implementedRFC 5995(POST to create members) -fully implementedRFC 5689(Extended MKCOL) -fully implementedRFC 6578(Collection Synchronization for WebDAV) -fully implementedThe following standards are not implemented:RFC 6638(CalDAV Scheduling Extensions) -not implementedRFC 7809(CalDAV Time Zone Extensions) -not implementedRFC 7529(WebDAV Quota) -not implementedRFC 4709(WebDAV Mount) -intentionallynot implementedRFC 5546(iCal iTIP) -not implementedRFC 4324(iCAL CAP) -not implementedRFC 7953(iCal AVAILABILITY) -not implementedSeeDAV compliancefor more detail on specification compliancy.LimitationsNo multi-user supportNo support for CalDAV scheduling extensionsSupported clientsXandikos has been tested and works with the following CalDAV/CardDAV clients:Vdirsyncercaldavzap/carddavmateevolutionDAVx5(formerly DAVDroid)sogo connector for Icedove/ThunderbirdaCALdav syncer for AndroidpycardsyncerakonadiCalDAV-SyncCardDAV-SyncCalendarsyncTasksAgendaVCardBookApple’s iOShomeassistant’s CalDAV integrationDependenciesAt the moment, Xandikos supports Python 3 (see pyproject.toml for specific version)
as well as Pypy 3. It also usesDulwich,Jinja2,icalendar, anddefusedxml.E.g. to install those dependencies on Debian:sudoaptinstallpython3-dulwichpython3-defusedxmlpython3-icalendarpython3-jinja2Or to install them using pip:pythonsetup.pydevelopDockerA Dockerfile is also provided; see the comments on the top of the file for
configuration instructions. The docker image is regularly built and
published atghcr.io/jelmer/xandikos. Seeexamples/docker-compose.ymland theman pagefor more info.RunningXandikos can either directly listen on a plain HTTP socket, or it can sit
behind a reverse HTTP proxy.TestingTo run a standalone (no authentication) instance of Xandikos,
with a pre-created calendar and addressbook (storing data in$HOME/dav):./bin/xandikos--defaults-d$HOME/davA server should now be listening onlocalhost: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 thecontactsorcalendarsdirectories
it has created.ProductionThe 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/.Client instructionsSome 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--defaultsargument 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/addressbookContributingContributions to Xandikos are very welcome. If you run into bugs or have
feature requests, please file issueson GitHub. If you’re interested in
contributing code or documentation, please readCONTRIBUTING. Issues that are good for new contributors are taggednew-contributoron GitHub.HelpThere is a#xandikosIRC channel on theOFTCIRC network, and aXandikosmailing list.