📚 sabre/dav
La librairie PHP de référence pour bâtir un serveur CalDAV/CardDAV/WebDAV. Ce n'est pas un produit fini : c'est le moteur sur lequel reposent [[app-baikal]] et [[app-davical]], et qu'utilisent de nombreuses apps calendriers PHP.
| Métadonnée | Valeur |
|---|---|
| Site web | sabre.io |
| GitHub | sabre-io/dav |
| License | BSD-3-Clause |
| Langage | PHP 8.1+ |
| Étoiles | 369 ⭐ (dépôt principal) — utilisé par des milliers d'applications en aval |
| Dernière MAJ | 2026-04 (v4.7.x) |
| Catégorie | [[cat-calendar]] |
Description
sabre/dav (prononcer « sabre-D-A-V ») est une librairie PHP qui implémente les protocoles WebDAV (RFC 4918), CalDAV (RFC 4791) et CardDAV (RFC 6352) avec un soin maniaque de la conformité. Créée par Evert Pot (aussi à l'origine de sabre/uri, sabre/xml et de l'entreprise fruux), c'est le standard de facto pour monter un serveur CalDAV/CardDAV en PHP.
Contrairement à [[app-radicale]] ou [[app-baikal]] qui sont des applications clés en main, sabre/dav est un framework : vous écrivez le code PHP qui assemble les briques (auth, backend de stockage, plugins CalDAV, plugins CardDAV, etc.). En contrepartie, vous obtenez une intégration native dans votre propre application (CMS, ERP, plateforme SaaS) et un contrôle total sur l'auth, le stockage, les quotas, la facturation. La librairie est découpée en composants réutilisables (sabre/dav, sabre/event, sabre/http, sabre/xml, sabre/uri).
Points forts : conformité RFC excellente (c'est la raison d'exister — passer les tests CalDAV du CalConnect), modularité extrême (vous n'embarquez que ce dont vous avez besoin), documentation énorme, support de long terme (LTS), utilisé en production par Nextcloud, Baïkal (avant fork), et des dizaines d'autres, licence BSD-3 (ultra permissive).
Points faibles : pas une application : il faut coder, donc public dev PHP confirmé ; pas d'UI admin par défaut ; la doc suppose PHP 8+ et Composer ; pas de support CardDAV par défaut (nécessite sabre/dav avec le bon plugin). Pour 95 % des cas, on veut plutôt [[app-baikal]] (qui utilise sabre/dav avec une UI).
Installation
sabre/dav est une librairie, pas une app. On l'installe via Composer dans un projet PHP :
composer require sabre/dav ^4.7
Serveur minimal en 30 lignes
<?php
// public/index.php
require '../vendor/autoload.php';
use Sabre\DAV;
use Sabre\CalDAV;
use Sabre\CardDAV;
$nodes = [
new CalDAV\CalendarRoot(
$principalBackend = new DAVACL\PrincipalBackend\PDO(
new PDO('sqlite:data/db.sqlite')
)
),
new CardDAV\AddressBookRoot(
$principalBackend
),
];
$server = new DAV\Server($nodes);
$server->setBaseUri('/');
$server->addPlugin(new DAV\Browser\Plugin());
$server->addPlugin(new DAVACL\Plugin());
$server->addPlugin(new CalDAV\Plugin());
$server->addPlugin(new CardDAV\Plugin());
$server->exec();
Docker pour un projet utilisant sabre/dav
# docker-compose.yml (PHP-FPM + Nginx + SQLite/Postgres)
services:
dav:
build: .
container_name: sabredav-app
restart: unless-stopped
volumes:
- ./public:/app/public
- ./data:/app/data
depends_on:
- db
environment:
DATABASE_URL: pdo-pgsql://dav:dav@db:5432/dav
db:
image: postgres:16-alpine
container_name: sabredav-db
restart: unless-stopped
environment:
POSTGRES_USER: dav
POSTGRES_PASSWORD: dav
POSTGRES_DB: dav
volumes:
- ./pgdata:/var/lib/postgresql/data
Pas de docker « officiel » : c'est à vous de composer l'image (FROM php:8.3-fpm + composer install + config Nginx).
Schéma de la base
# Création des tables CalDAV/CardDAV vendor/bin/sabre-cli caldav:principals-create vendor/bin/sabre-cli caldav:calendar-create principal user vendor/bin/sabre-cli carddav:addressbook-create principal user
Configuration
- Composer :
composer require sabre/dav - Backend principal :
PDO(SQLite/Postgres/MySQL) ou LDAP. - Authentification :
Auth\Backend\PDO(htpasswd-like en DB) ou implémentation custom (LDAP, OAuth, JWT). - Plugins CalDAV :
CalDAV\Plugin(cœur),CalDAV\ICSExportPlugin(export),CalDAV\Schedule\Plugin(IMIP). - Plugins CardDAV :
CardDAV\Plugin(cœur),CardDAV\VCARDExport. - ACL :
DAVACL\Plugin(par défaut). - Quota / Partage / Notifications : plugins optionnels, à brancher.
Alternatives
Open Source
- [[app-baikal]] — Construit sur sabre/dav, mais avec une UI admin (le plus proche cousin « clé en main »)
- [[app-davical]] — Anciennement construit sur sabre/dav, maintenant réécrit en PDO natif
- [[app-radicale]] — Équivalent Python, plus simple à déployer
- [[app-etesync]] — CalDAV-compatible mais avec chiffrement E2E
- simpleCalDAV (Python) — Librairie Python plus modeste
- DAVMail (Java) — Passerelle CalDAV IMAP/SMTP
- node-caldav (Node.js) — Librairie CalDAV côté client
Propriétaires (ce que sabre/dav remplace comme brique)
- iCloud Calendar — fermé
- Google Calendar API — pas CalDAV, mais concurrent fonctionnel
- Microsoft Graph Calendar — idem
- Exchange / EWS — Microsoft
Sécurité
- ✅ Conformité RFC stricte = moins de surface pour les CVE
- ✅ Licence BSD-3 : utilisable dans des projets propriétaires
- ✅ CSRF / XSS : la couche HTTP (
sabre/http) gère les en-têtes - ⚠️ Auth custom = vous êtes responsable de la robustesse (bcrypt, pas MD5, rate limit)
- ✅ Chiffrement at-rest = à votre charge (chiffrement de la DB ou filesystem)
- ⚠️ Mises à jour : suivre
sabre-io/davsur GitHub, LTS = releases paires - ✅ Pas de dépendances exotiques : Composer + PDO suffisent
- ⚠️ Sécurité du code client = votre code, votre responsabilité (c'est une lib !)

