--- title: DAViCal created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, calendar, caldav, php, postgresql, enterprise, legacy] confidence: medium contested: true sources: [https://selfh.st/apps/?tag=calendar] --- # 🏛️ DAViCal > **Le « grand-père » des serveurs CalDAV en PHP/PostgreSQL** : conçu pour des **déploiements multi-utilisateurs à l'échelle d'une organisation** (entreprise, université, association). Plus austère que [[app-baikal]] mais plus puissant, avec gestion fine des droits, délégation et LDAP natif. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [davical.org](https://www.davical.org/) | | **GitHub** | (pas de miroir officiel unique) — [davical.org](https://www.davical.org/) héberge le code, historique aussi sur `dmfs/davical` | | **License** | GPL-2.0 | | **Langage** | PHP 8.0+ (historiquement PHP 5/7) | | **Étoiles** | 78 ⭐ (référencement faible, projet « niche ») | | **Dernière MAJ** | 2025-11 (releases épisodiques) | | **Catégorie** | [[cat-calendar]] | ## Description **DAViCal** (DAV In A Calculable Assemblage of Lemmas) est né en **2002-2003** sous la plume d'**Andrew McMillan** et a longtemps été **le** serveur CalDAV de référence à l'échelle entreprise, **avant** que [[app-baikal]] (2013) puis [[app-sabre-dav]] ne s'imposent dans l'écosystème PHP. C'est un projet **historique** qui a formé toute une génération d'admin sys à CalDAV. Sa cible : les **organisations** (entreprises, universités, FAI) qui ont besoin d'un serveur CalDAV **fédéré**, avec **LDAP natif**, **droits granulaires** (par utilisateur, par collection, par calendrier, par ressource, par lieu), **délégation** (un user peut écrire dans le calendrier d'un autre), **ressources** (salles, équipements réservables), et **reporting** PostgreSQL natif. L'UI d'admin est **historique** (look « 2005 », pas responsive, pas de Bootstrap moderne) — DAViCal assume d'être un outil d'**admin**, pas une UI consommateur. **Points forts** : **vrai support LDAP/Active Directory** (pas un plugin, c'est natif), **droits fins** (ACL CalDAV étendus), **historique long** donc bien testé en prod, **PostgreSQL** = base sérieuse, pas de dépendance exotique, **gratuit** (GPL-2.0), adapté aux **gros déploiements** (plusieurs milliers d'utilisateurs), ressources/salles réservables. **Points faibles** : **UI admin vieillissante** (le plus gros frein en 2026), **peu de releases** (équivalent à un mode maintenance pour beaucoup), **bus factor 1** (Andrew McMillan reste très impliqué mais l'équipe est minuscule), **78 étoiles** = signal de stagnation relative, **pas CardDAV natif** (DaviCar / CardDAV supporté via plugin en 2025-2026), pas de Docker officiel (mais des images communautaires), **pas d'OAuth/OIDC** natif, dépendance forte à PostgreSQL (pas de SQLite pour alléger). > ⚠️ **Note contestée** : pour un usage personnel ou familial, **[[app-baikal]] est presque toujours le meilleur choix** (UI moderne, Docker simple, sabre/dav maintenu). DAViCal garde son sens pour des déploiements à **plusieurs centaines d'utilisateurs** avec LDAP, ou pour des **migrations de vieux serveurs** déjà en prod. ## Installation ### Via Docker (images communautaires) L'image `freelock/irontec-davical` ou `irontec/davical` existe. Le projet historique n'a jamais fourni d'image officielle, mais l'écosystème Docker est correct. ```yaml # docker-compose.yml services: davical: image: freelock/irontec-davical:latest container_name: davical restart: unless-stopped ports: - "8801:80" environment: POSTGRES_HOST: db POSTGRES_PORT: 5432 POSTGRES_USER: davical POSTGRES_PASSWORD: secret-davical POSTGRES_DB: davical ADMIN_USERNAME: admin ADMIN_PASSWORD: changez-moi volumes: - ./config:/etc/davical depends_on: - db db: image: postgres:16-alpine container_name: davical-db restart: unless-stopped environment: POSTGRES_USER: davical POSTGRES_PASSWORD: secret-davical POSTGRES_DB: davical volumes: - ./pgdata:/var/lib/postgresql/data ``` ### Installation manuelle (Debian/Ubuntu) ```bash sudo apt install davical # ou via le repo officiel sudo apt install postgresql php-pgsql sudo -u postgres createuser davical_app sudo -u postgres createdb -O davical_app davical # Configurer /etc/davical/config.php # Pointer Apache sur /usr/share/davical/htdocs/ ``` L'**assistant web** `/davical/setup` crée le schéma PostgreSQL et l'utilisateur admin `admin` (mot de passe initial défini dans `config.php`). ## Configuration Fichier `config.php` typique : ```php admin_email = 'admin@example.com'; $c->system_name = 'DAViCal Mon Orga'; $c->pg_connect[] = 'host=db dbname=davical user=davical_app password=secret'; $c->authenticate_hook = 'ldap'; $c->auth_ldap_host = 'ldap.example.com'; $c->auth_ldap_base = 'ou=users,dc=example,dc=com'; $c->default_locale = 'fr_FR'; $c->enable_row_linking = true; ``` 1. **Premier accès** : `https://davical.example.com/setup` → crée le schéma PostgreSQL, l'admin `admin`. 2. **Changer le mot de passe admin** : login admin → Profile → Change password. 3. **Créer des utilisateurs** : soit via `Admin → Users`, soit via **LDAP** (configuration du hook). 4. **Créer des calendriers** : `Calendars → New` pour un user, ou laisser l'user le faire à l'inscription. 5. **Connecter un client** : - URL CalDAV : `https://davical.example.com/caldav.php/alice/calendar/` - User : `alice` - Password : son mot de passe LDAP ou local 6. **ACL** : `Admin → Rights` pour les droits inter-utilisateurs. 7. **Ressources** : `Admin → Resources` pour salles/équipements réservables. ## Alternatives ### Open Source - [[app-baikal]] — **Plus moderne**, UI web, SQLite possible - [[app-sabre-dav]] — La **librairie PHP** la plus utilisée (Baïkal repose dessus) - [[app-radicale]] — Concurrent **Python**, ultra-léger - [[app-etesync]] — Calendrier E2E chiffré - **SOGo** (SOPE) — Suite groupware CalDAV/CardDAV/IMAP, plus complète - **Citadel** — Groupware « old school » avec CalDAV intégré - [[app-nextcloud]] — Suite complète (calendrier, contacts, fichiers, etc.) - **EGroupware** — Groupware PHP d'entreprise ### Propriétaires (ce que DAViCal remplace) - **Microsoft Exchange** — Avec ses calendriers + ressources + délégation - **Zimbra** (Synacor) — Groupware commercial, base open source - **Atmail** — Groupware commercial - **Kerio Connect** — Groupware GFI/Kerio, fermé - **iCloud Calendar** — Le service d'Apple, fermé - **Google Workspace Calendar** — Le géant, pas self-hostable ## Sécurité - ✅ **LDAP / Active Directory natif** = pas de base parallèle d'utilisateurs - ✅ **PostgreSQL** = base sérieuse avec auth forte - ✅ **HTTPS obligatoire** (Let's Encrypt via reverse-proxy) - ⚠️ **Pas d'OAuth/OIDC** natif : un reverse-proxy type [[app-authelia]] peut combler - ⚠️ **UI admin austère** : la protéger derrière restriction IP - ✅ **ACL CalDAV** fines - ✅ **GPL-2.0** = auditable - ⚠️ **Mises à jour peu fréquentes** : surveiller les CVE PHP et PostgreSQL - ⚠️ **Bus factor 1** : ne pas bâtir toute une infra d'entreprise dessus sans plan B - ⚠️ **Pas de rate-limit natif** : déléguer au reverse-proxy ## Ressources - [Site officiel](https://www.davical.org/) - [Documentation](https://www.davical.org/davicalwiki/) - [Dépôt git principal](https://gitlab.com/davical-project/davical) - [Liste de discussion](https://lists.davical.org/) - [Docker Hub](https://hub.docker.com/r/freelock/irontec-davical) - [selfh.st Calendar](https://selfh.st/apps/?tag=calendar) - [Historique projet](https://en.wikipedia.org/wiki/DAViCal) - [RFC CalDAV 4791](https://datatracker.ietf.org/doc/html/rfc4791) ## Pages Liées - [[cat-calendar]] — Catégorie Calendar - [[app-baikal]] — **Concurrent direct** PHP, plus moderne - [[app-sabre-dav]] — Librairie PHP CalDAV sous-jacente à Baïkal - [[app-radicale]] — Concurrent Python minimaliste - [[app-etesync]] — Calendrier E2E chiffré - [[app-cal-com]] — Scheduler qui se connecte en CalDAV - [[recettes-docker-compose]] — Templates Docker - [[app-traefik]] — Reverse-proxy HTTPS - [[app-authelia]] — SSO/2FA devant DAViCal