---
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
<?php
$c->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
