8.2 KiB
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 |
| GitHub | (pas de miroir officiel unique) — 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.
# 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)
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
$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;
- Premier accès :
https://davical.example.com/setup→ crée le schéma PostgreSQL, l'adminadmin. - Changer le mot de passe admin : login admin → Profile → Change password.
- Créer des utilisateurs : soit via
Admin → Users, soit via LDAP (configuration du hook). - Créer des calendriers :
Calendars → Newpour un user, ou laisser l'user le faire à l'inscription. - Connecter un client :
- URL CalDAV :
https://davical.example.com/caldav.php/alice/calendar/ - User :
alice - Password : son mot de passe LDAP ou local
- URL CalDAV :
- ACL :
Admin → Rightspour les droits inter-utilisateurs. - Ressources :
Admin → Resourcespour 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
- Documentation
- Dépôt git principal
- Liste de discussion
- Docker Hub
- selfh.st Calendar
- Historique projet
- RFC CalDAV 4791
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