--- title: CalDAV server abstract: ![calendar](/static/img/calendar.png) --- ![calendar](/static/img/calendar.png) Calendaring software provides users with an electronic version of a calendar. Additionally, the software may provide an appointment book, address book, or contact list. We implemented a CalDAV server based on MirageOS. [CalDAV](https://en.wikipedia.org/wiki/CalDAV) is a calendaring extension to WebDAV, an HTTP-based protocol that allows to read, write and alter files, directories and file properties. The calendar data can be stored in memory, on disk, or in a git repository using [irmin](https://github.com/mirage/irmin). We tested interoperability with most common CalDAV clients (DAVdroid on Android, Thunderbird Lightning on Linux/Unix/Windows, Apple calendar app on MacOS and iOS). ## How to try the calendar server There is a live instance for testing available at `calendar.robur.io`. There is a test user called `test` with password `password` for your convenience. If you use MacOS, you need add a new CalDAV account in the calendar app, set it to manual, and enter the above URL, username and password. For iOS you need to add an account in the calendar app, select "other" and then CalDAV. Discovery of calendars happens automatically. If you use Thunderbird Lightning, you need to create a new calendar on the network, select CalDAV as remote calendar format, and enter a full calendar URL, e.g. `http://calendar.robur.io/calendars//calendar`. If you use DAVdroid, you can enter the short URL like for MacOS. Discovery of calendars happens automatically. ## How to host the calendar server yourself Make sure you have OCaml version `>=4.03.0`, and opam version `>=1.2.2` installed via your operating system. Also, you need to install and clone ``` opam pin add icalendar https://github.com/roburio/icalendar.git opam pin add webmachine https://github.com/roburio/ocaml-webmachine.git#webdav git clone https://git.robur.io/caldav.git opam pin add caldav caldav/ opam install --deps-only caldav ``` Now you can build the project, add a place for storage, and run the calendar server: ``` cd caldav make mkdir /tmp/calendar _build/default/app/caldav_server.exe ``` Time to add some calendars and fun meetups! ## Funding This project was funded via the [prototype fund](https://prototypefund.de/project/robur-io/). Thanks a lot!