Xandikos

Xandikos 是一款轻量级但完整的 CardDAV/CalDAV 服务器,它支持Git存储库。「Xandikos is a lightweight yet complete CardDAV/CalDAV server that backs onto a Git repository.」

Github stars Tracking Chart

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
.

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
  • RFC 6578
    (Collection Synchronization for WebDAV) - 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 (see pyproject.toml for
specific version) 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. The docker image is regularly built and
published at ghcr.io/jelmer/xandikos. See
examples/docker-compose.yml and the man
page
for more info.

Running

Xandikos can either directly listen on a plain HTTP socket, or it can
sit behind a reverse HTTP proxy.

Testing

To 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/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 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 instructions

Some clients can automatically discover the calendars and addressbook
URLs from a DAV server (if they support RFC:[5397]{.title-ref}). 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 OFTC
IRC network, and a
Xandikos mailing
list.

Main metrics

Overview
Name With Ownerjelmer/xandikos
Primary LanguagePython
Program languageMakefile (Language Count: 5)
Platform
License:GNU General Public License v3.0
所有者活动
Created At2017-02-06 19:22:26
Pushed At2025-04-21 09:54:14
Last Commit At2025-04-21 10:54:13
Release Count72
Last Release Namev0.2.12 (Posted on )
First Release Nameupstream/0_git20170108 (Posted on )
用户参与
Stargazers Count474
Watchers Count15
Fork Count43
Commits Count1.4k
Has Issues Enabled
Issues Count168
Issue Open Count60
Pull Requests Count210
Pull Requests Open Count3
Pull Requests Close Count24
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private