Code Repositories xandikos / 70a2be7
Convert Markdown to reStructuredText Daniel M. Capella 3 years ago
7 changed file(s) with 147 addition(s) and 146 deletion(s). Raw diff Collapse all Expand all
+0
-7
CONTRIBUTING.md less more
0 Xandikos uses the [PEP8](https://www.python.org/dev/peps/pep-0008/) style guide.
1 You can verify whether you've introduced any style violations by running
2 "make style".
3
4 There is some very minimal developer documentation/vague design docs in notes/.
5
6 Please implement new RFCs as much as possible in their own file.
0 Xandikos uses the :PEP:`8` style guide.
1 You can verify whether you've introduced any style violations by running
2 "make style".
3
4 There are some very minimal developer documentation/vague design docs in notes/.
5
6 Please implement new RFCs as much as possible in their own file.
0 include *.rst
01 include AUTHORS
1 include CONTRIBUTING.md
22 include COPYING
33 include Makefile
4 include README.md
54 include TODO
65 recursive-include compat *
76 recursive-include examples *
+0
-129
README.md less more
0 [![Build Status](https://travis-ci.org/jelmer/xandikos.png?branch=master)](https://travis-ci.org/jelmer/xandikos)
1
2 Xandikos is a CardDAV/CalDAV server that backs onto a Git repository.
3
4 Xandikos (Ξανδικός or Ξανθικός) takes its name from the name of the March month
5 in the ancient Macedonian calendar, used in Macedon in the first millennium BC.
6
7 Implemented standards
8 =====================
9
10 The following standards are implemented:
11
12 - [RFC4918](http://www.rfc-base.org/rfc-4918.html)/[RFC2518](http://www.rfc-base.org/rfc-2518.html) (Core WebDAV) - *implemented, except for COPY/MOVE/LOCK operations*
13 - [RFC4791](http://www.rfc-base.org/rfc-4791.html) (CalDAV) - *fully implemented*
14 - [RFC6352](http://www.rfc-base.org/rfc-6352.html) (CardDAV) - *fully implemented*
15 - [RFC5397](http://www.rfc-base.org/rfc-5397.html) (Current Principal) - *fully implemented*
16 - [RFC3253](http://www.rfc-base.org/rfc-3253.html) (Versioning Extensions) - *partially implemented, only the REPORT method and {DAV:}expand-property property*
17 - [RFC3744](http://www.rfc-base.org/rfc-3744.html) (Access Control) - *partially implemented*
18 - [RFC5995](http://www.rfc-base.org/rfc-5995.html) (POST to create members) - *fully implemented*
19 - [RFC5689](http://www.rfc-base.org/rfc-5689.html) (Extended MKCOL) - *fully implemented*
20
21 The following standards are not implemented:
22
23 - [RFC6638](http://www.rfc-base.org/rfc-6638.html) (CalDAV Scheduling Extensions) - *not implemented*
24 - [RFC7809](http://www.rfc-base.org/rfc-7809.html) (CalDAV Time Zone Extensions) - *not implemented*
25 - [RFC7529](http://www.rfc-base.org/rfc-7529.html) (WebDAV Quota) - *not implemented*
26 - [RFC4709](http://www.rfc-base.org/rfc-4709.html) (WebDAV Mount) - *not implemented*
27 - [RFC5546](http://www.rfc-base.org/rfc-5546.html) (iCal iTIP) - *not implemented*
28 - [RFC4324](http://www.rfc-base.org/rfc-4324.html) (iCAL CAP) - *not implemented*
29 - [RFC7953](http://www.rfc-base.org/rfc-7953.html) (iCal AVAILABILITY) - *not implemented*
30
31 See [DAV compliance](notes/dav-compliance.md) for more detail on specification compliancy.
32
33 Limitations
34 -----------
35
36 - No multi-user support
37 - No support for CalDAV scheduling extensions
38
39 Supported clients
40 =================
41
42 Xandikos has been tested and works with the following CalDAV/CardDAV clients:
43
44 - [vdirsyncer](https://github.com/pimutils/vdirsyncer)
45 - [caldavzap](https://www.inf-it.com/open-source/clients/caldavzap/)/[carddavmate](https://www.inf-it.com/open-source/clients/carddavmate/)
46 - [evolution](https://wiki.gnome.org/Apps/Evolution)
47 - [davdroid](https://davdroid.bitfire.at/)
48 - [sogo connector for Icedove/Thunderbird](http://v2.sogo.nu/english/downloads/frontends.html)
49 - [aCALdav syncer for Android](https://play.google.com/store/apps/details?id=de.we.acaldav&hl=en)
50 - [pycardsyncer](https://github.com/geier/pycarddav)
51 - [akonadi](https://community.kde.org/KDE_PIM/Akonadi)
52
53 CalDAV/CardDAV clients that are known not to work:
54
55 - [CalDAV-Sync](https://dmfs.org/caldav/)
56 - [CardDAV-Sync](https://dmfs.org/carddav/)
57
58 Dependencies
59 ============
60
61 At the moment, Xandikos supports Python 3.3 and higher as well as Pypy 3. It
62 also uses [dulwich](https://github.com/jelmer/dulwich),
63 [jinja2](http://jinja.pocoo.org/),
64 [icalendar](https://github.com/collective/icalendar), and
65 [defusedxml](https://github.com/tiran/defusedxml).
66
67 E.g. to install those dependencies on Debian:
68
69 ```shell
70 sudo apt install python3-dulwich python3-defusedxml python3-icalendar python3-jinja2
71 ```
72
73 Or to install them using pip:
74
75 ```shell
76 python setup.py develop
77 ```
78
79 Running
80 =======
81
82 Testing
83 -------
84
85 To run a standalone (low-performance, no authentication) instance of Xandikos,
86 with a pre-created calendar and addressbook (storing data in *$HOME/dav*):
87
88 ```shell
89 ./bin/xandikos --defaults -d $HOME/dav
90 ```
91
92 A server should now be listening on [localhost:8080](http://localhost:8080/).
93
94 Note that Xandikos does not create any collections by default. You can either
95 create collections from your CalDAV/CardDAV client, or by creating git
96 repositories under the *contacts* or *calendars* directories it has created.
97
98 Production
99 ----------
100
101 The easiest way to run Xandikos in production is using
102 [uWSGI](https://uwsgi-docs.readthedocs.io/en/latest/).
103
104 One option is to setup uWSGI with a server like
105 [Apache](http://uwsgi-docs.readthedocs.io/en/latest/Apache.html),
106 [Nginx](http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html) or another web
107 server that can authenticate users and forward authorized requests to
108 Xandikos in uWSGI. See [examples/uwsgi.ini](examples/uwsgi.ini) for an
109 example uWSGI configuration.
110
111 Alternatively, you can run uWSGI standalone and have it authenticate and
112 directly serve HTTP traffic. An example configuration for this can be found in
113 [examples/uwsgi-standalone.ini](examples/uwsgi-standalone.ini).
114
115 This will start a server on [localhost:8080](http://localhost:8080/) with username *user1* and password
116 *password1*.
117
118 ```shell
119 mkdir -p $HOME/dav
120 uwsgi examples/uwsgi-standalone.ini
121 ```
122
123 Help
124 ====
125
126 There is a *#xandikos* IRC channel on the [Freenode](https://www.freenode.net/)
127 IRC network, and a [xandikos](https://groups.google.com/forum/#!forum/xandikos)
128 mailing list.
0 .. image:: https://travis-ci.org/jelmer/xandikos.png?branch=master
1 :target: https://travis-ci.org/jelmer/xandikos
2 :alt: Build Status
3
4 Xandikos is a CardDAV/CalDAV server that backs onto a Git repository.
5
6 Xandikos (Ξανδικός or Ξανθικός) takes its name from the name of the March month
7 in the ancient Macedonian calendar, used in Macedon in the first millennium BC.
8
9 Implemented standards
10 =====================
11
12 The following standards are implemented:
13
14 - `RFC4918 <http://www.rfc-base.org/rfc-4918.html>`_/`RFC2518 <http://www.rfc-base.org/rfc-2518.html>`_ (Core WebDAV) - *implemented, except for COPY/MOVE/LOCK operations*
15 - `RFC4791 <http://www.rfc-base.org/rfc-4791.html>`_ (CalDAV) - *fully implemented*
16 - `RFC6352 <http://www.rfc-base.org/rfc-6352.html>`_ (CardDAV) - *fully implemented*
17 - `RFC5397 <http://www.rfc-base.org/rfc-5397.html>`_ (Current Principal) - *fully implemented*
18 - `RFC3253 <http://www.rfc-base.org/rfc-3253.html>`_ (Versioning Extensions) - *partially implemented, only the REPORT method and {DAV:}expand-property property*
19 - `RFC3744 <http://www.rfc-base.org/rfc-3744.html>`_ (Access Control) - *partially implemented*
20 - `RFC5995 <http://www.rfc-base.org/rfc-5995.html>`_ (POST to create members) - *fully implemented*
21 - `RFC5689 <http://www.rfc-base.org/rfc-5689.html>`_ (Extended MKCOL) - *fully implemented*
22
23 The following standards are not implemented:
24
25 - `RFC6638 <http://www.rfc-base.org/rfc-6638.html>`_ (CalDAV Scheduling Extensions) - *not implemented*
26 - `RFC7809 <http://www.rfc-base.org/rfc-7809.html>`_ (CalDAV Time Zone Extensions) - *not implemented*
27 - `RFC7529 <http://www.rfc-base.org/rfc-7529.html>`_ (WebDAV Quota) - *not implemented*
28 - `RFC4709 <http://www.rfc-base.org/rfc-4709.html>`_ (WebDAV Mount) - *not implemented*
29 - `RFC5546 <http://www.rfc-base.org/rfc-5546.html>`_ (iCal iTIP) - *not implemented*
30 - `RFC4324 <http://www.rfc-base.org/rfc-4324.html>`_ (iCAL CAP) - *not implemented*
31 - `RFC7953 <http://www.rfc-base.org/rfc-7953.html>`_ (iCal AVAILABILITY) - *not implemented*
32
33 See `DAV compliance <notes/dav-compliance.md>`_ for more detail on specification compliancy.
34
35 Limitations
36 -----------
37
38 - No multi-user support
39 - No support for CalDAV scheduling extensions
40
41 Supported clients
42 =================
43
44 Xandikos has been tested and works with the following CalDAV/CardDAV clients:
45
46 - `Vdirsyncer <https://github.com/pimutils/vdirsyncer>`_
47 - `caldavzap <https://www.inf-it.com/open-source/clients/caldavzap/>`_/`carddavmate <https://www.inf-it.com/open-source/clients/carddavmate/>`_
48 - `evolution <https://wiki.gnome.org/Apps/Evolution>`_
49 - `DAVdroid <https://davdroid.bitfire.at/>`_
50 - `sogo connector for Icedove/Thunderbird <http://v2.sogo.nu/english/downloads/frontends.html>`_
51 - `aCALdav syncer for Android <https://play.google.com/store/apps/details?id=de.we.acaldav&hl=en>`_
52 - `pycardsyncer <https://github.com/geier/pycarddav>`_
53 - `akonadi <https://community.kde.org/KDE_PIM/Akonadi>`_
54
55 CalDAV/CardDAV clients that are known not to work:
56
57 - `CalDAV-Sync <https://dmfs.org/caldav/>`_
58 - `CardDAV-Sync <https://dmfs.org/carddav/>`_
59
60 Dependencies
61 ============
62
63 At the moment, Xandikos supports Python 3.3 and higher as well as Pypy 3. It
64 also uses `Dulwich <https://github.com/jelmer/dulwich>`_,
65 `Jinja2 <http://jinja.pocoo.org/>`_,
66 `icalendar <https://github.com/collective/icalendar>`_, and
67 `defusedxml <https://github.com/tiran/defusedxml>`_.
68
69 E.g. to install those dependencies on Debian:
70
71 .. code:: shell
72
73 sudo apt install python3-dulwich python3-defusedxml python3-icalendar python3-jinja2
74
75 Or to install them using pip:
76
77 .. code:: shell
78
79 python setup.py develop
80
81 Running
82 =======
83
84 Testing
85 -------
86
87 To run a standalone (low-performance, no authentication) instance of Xandikos,
88 with a pre-created calendar and addressbook (storing data in *$HOME/dav*):
89
90 .. code:: shell
91
92 ./bin/xandikos --defaults -d $HOME/dav
93
94 A server should now be listening on `localhost:8080 <http://localhost:8080/>`_.
95
96 Note that Xandikos does not create any collections by default. You can either
97 create collections from your CalDAV/CardDAV client, or by creating git
98 repositories under the *contacts* or *calendars* directories it has created.
99
100 Production
101 ----------
102
103 The easiest way to run Xandikos in production is using
104 `uWSGI <https://uwsgi-docs.readthedocs.io/en/latest/>`_.
105
106 One option is to setup uWSGI with a server like
107 `Apache <http://uwsgi-docs.readthedocs.io/en/latest/Apache.html>`_,
108 `Nginx <http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html>`_ or another web
109 server that can authenticate users and forward authorized requests to
110 Xandikos in uWSGI. See `examples/uwsgi.ini <examples/uwsgi.ini>`_ for an
111 example uWSGI configuration.
112
113 Alternatively, you can run uWSGI standalone and have it authenticate and
114 directly serve HTTP traffic. An example configuration for this can be found in
115 `examples/uwsgi-standalone.ini <examples/uwsgi-standalone.ini>`_.
116
117 This will start a server on `localhost:8080 <http://localhost:8080/>`_ with username *user1* and password
118 *password1*.
119
120 .. code:: shell
121
122 mkdir -p $HOME/dav
123 uwsgi examples/uwsgi-standalone.ini
124
125 Help
126 ====
127
128 There is a *#xandikos* IRC channel on the `Freenode <https://www.freenode.net/>`_
129 IRC network, and a `Xandikos <https://groups.google.com/forum/#!forum/xandikos>`_
130 mailing list.
+0
-8
compat/README.md less more
0 This directory contains scripts to run external CalDAV/CardDAV/WebDAV
1 testsuites against the Xandikos web server.
2
3 Currently supported:
4
5 * [vdirsyncer](https://github.com/pimutils/vdirsyncer)
6 * [litmus](https://www.webdav.org/neon/litmus/)
7 * [caldavtester](https://www.calendarserver.org/CalDAVTester.html)
0 This directory contains scripts to run external CalDAV/CardDAV/WebDAV
1 testsuites against the Xandikos web server.
2
3 Currently supported:
4
5 - `Vdirsyncer <https://github.com/pimutils/vdirsyncer>`_
6 - `litmus <https://www.webdav.org/neon/litmus/>`_
7 - `caldavtester <https://www.calendarserver.org/CalDAVTester.html>`_