/grommunio-dav

CalDAV and CardDAV interface for grommunio

Primary LanguagePHPGNU Affero General Public License v3.0AGPL-3.0

grommunio DAV

grommunio DAV is an open-source application to provide CalDAV and CardDAV to compatible applications and devices such as macOS Calendar, macOS Contacts, Thunderbird/Lightning and others.

shield-agpl shield-release shield-scrut shield-loc

At a glance

  • Provides standardized CalDAV and CardDAV interfaces to groupware data (contacts, calendar and tasks).
  • Multi-platform supports various CalDAV and CardDAV clients, such as macOS Calendar, macOS Contacts, Thunderbird/Lightning, Evolution and many other CalDAV/CardDAV clients as well as other applications used, such as Dash.
  • Compatible, works with various web servers such as nginx, apache and others; usage of nginx is recommended.
  • Highly efficient, averaging at 4MB per connection, per device of memory usage (using nginx with php-fpm).
  • Distributable, compatible with load balancers such as haproxy, apisix, KEMP and others.
  • Scalable, enabling multi-server and multi-location deployments.
  • High-performance, allowing nearly wire speeds for store synchronization.
  • Secure, with certifications through independent security research and validation.

Built with

  • PHP 7.4+, 8.x
  • PHP modules: ctype, curl, dom, iconv, mbsting, sqlite, xml, xmlreader, xmlwriter
  • PHP backend module: mapi

Getting started

Prerequisites

  • A working web server (nginx is recommended), with a working TLS configuration
  • PHP, preferably available as fpm pool
  • Zcore MAPI transport (provided by Gromox)

Installation

  • Deploy grommunio-dav at a location of your choice, such as /usr/share/grommunio-dav-dev.

  • Adapt version.php with the adequate version string, see /build/version.php.in.

  • Provide a default configuration file as config.php, see /config.php.

  • Adapt web server configuration according to your needs, /build provides some examples.

  • Prepare PHP configuration according to your needs, /build provides some examples.

  • (Optional) Setup of DNS SRV records for simplified account configuration is recommended:

    _carddavs._tcp 86400 IN SRV 10 20 443 my.example.com.
    _caldavs._tcp  86400 IN SRV 10 20 443 my.example.com.
    _caldavs._tcp  86400 IN TXT path=/dav
    _carddavs._tcp 86400 IN TXT path=/dav
    

Logging

grommunio DAV uses log4php for logging. Adjust /log4php.xml to match your needs.

Usage

  • You can use your webbrowser to point to https://my.example.com/dav/, or alternatively directly to your calendar URL https://my.example.com/dav/calendars/<user>/Calendar/
  • Enter your account credentials (username and password)

Support

Support is available through grommunio GmbH and its partners. See https://grommunio.com/ for details. A community forum is at https://community.grommunio.com/.

For direct contact and supplying information about a security-related responsible disclosure, contact dev@grommunio.com.

Contributing

Coding style

This repository follows a custom coding style, which can be validated anytime using the repository's provided configuration file.