174 lines
8.2 KiB
Markdown
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
|