Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jelmer/xandikos
A CalDAV/CardDAV server backed by Git
https://github.com/jelmer/xandikos
caldav carddav dulwich git python webdav
Last synced: 1 day ago
JSON representation
A CalDAV/CardDAV server backed by Git
- Host: GitHub
- URL: https://github.com/jelmer/xandikos
- Owner: jelmer
- License: gpl-3.0
- Created: 2017-02-06T19:22:26.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-11-18T11:37:04.000Z (24 days ago)
- Last Synced: 2024-11-21T02:55:15.383Z (21 days ago)
- Topics: caldav, carddav, dulwich, git, python, webdav
- Language: Python
- Homepage: https://www.xandikos.org/
- Size: 4.21 MB
- Stars: 427
- Watchers: 15
- Forks: 42
- Open Issues: 61
-
Metadata Files:
- Readme: README.rst
- Changelog: NEWS
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: COPYING
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Support: SUPPORT.md
- Authors: AUTHORS
Awesome Lists containing this project
- stars - jelmer/xandikos
- awesome-python-applications - Repo
- awesome-python-applications - Repo
README
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... image:: logo.png
:alt: Xandikos logo
:width: 200px
:align: centerExtended 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:
- :RFC:`6638` (CalDAV Scheduling Extensions) - *not implemented*
- :RFC:`7809` (CalDAV Time Zone Extensions) - *not implemented*
- :RFC:`7529` (WebDAV Quota) - *not implemented*
- :RFC:`4709` (WebDAV Mount) - `intentionally `_ *not implemented*
- :RFC:`5546` (iCal iTIP) - *not implemented*
- :RFC:`4324` (iCAL CAP) - *not implemented*
- :RFC:`7953` (iCal AVAILABILITY) - *not implemented*See `DAV compliance `_ for more detail on specification compliance.
Limitations
------------ No multi-user support
- No support for CalDAV scheduling extensionsSupported clients
=================Xandikos has been tested and works with the following CalDAV/CardDAV clients:
- `Vdirsyncer `_
- `caldavzap `_/`carddavmate `_
- `evolution `_
- `DAVx5 `_ (formerly DAVDroid)
- `sogo connector for Icedove/Thunderbird `_
- `aCALdav syncer for Android `_
- `pycardsyncer `_
- `akonadi `_
- `CalDAV-Sync `_
- `CardDAV-Sync `_
- `Calendarsync `_
- `Tasks `_
- `AgendaV `_
- `CardBook `_
- Apple's iOS
- `homeassistant's CalDAV integration `_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:
.. 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
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*):.. code:: shell
./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`). For such clients you can simply
provide the base URL to Xandikos during setup.Clients that lack such automated discovery 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.