Xandikos

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

Github星跟踪图

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.

主要指标

概览
名称与所有者jelmer/xandikos
主编程语言Python
编程语言Makefile (语言数: 5)
平台
许可证GNU General Public License v3.0
所有者活动
创建于2017-02-06 19:22:26
推送于2025-04-21 09:54:14
最后一次提交2025-04-21 10:54:13
发布数72
最新版本名称v0.2.12 (发布于 )
第一版名称upstream/0_git20170108 (发布于 )
用户参与
星数474
关注者数15
派生数43
提交数1.4k
已启用问题?
问题数168
打开的问题数60
拉请求数210
打开的拉请求数3
关闭的拉请求数24
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?