Files
2026-06-09 18:40:21 +02:00

174 lines
8.2 KiB
Markdown

---
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