7.1 KiB
title: sabre/dav created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, calendar, caldav, carddav, library, php, framework] confidence: high contested: false sources: [https://selfh.st/apps/?tag=calendar]
📚 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 !)
Ressources
- Documentation officielle
- Dépôt GitHub
- API Reference
- Sabre Faking Server (pour tests)
- Site fruux (entreprise)
- selfh.st Calendar
- Evert Pot — blog
Pages Liées
- cat-calendar — Catégorie Calendar
- app-baikal — Application CalDAV basée sur sabre/dav
- app-davical — Autre serveur PHP, historiquement basé sur sabre/dav
- app-radicale — Équivalent Python
- app-etesync — Calendrier E2E
- app-cal-com — Scheduler qui consomme CalDAV
- recettes-docker-compose — Templates Docker
- app-traefik — Reverse-proxy HTTPS