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-05-26 04:13:59
最后一次提交2025-05-26 04:13:58
發布數72
最新版本名稱v0.2.12 (發布於 )
第一版名稱upstream/0_git20170108 (發布於 )
用户参与
星數492
關注者數15
派生數43
提交數1.4k
已啟用問題?
問題數168
打開的問題數60
拉請求數217
打開的拉請求數3
關閉的拉請求數26
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?