--- 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](https://sabre.io/) | | **GitHub** | [sabre-io/dav](https://github.com/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](https://www.calconnect.org/)), 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 : ```bash composer require sabre/dav ^4.7 ``` ### Serveur minimal en 30 lignes ```php 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 ```yaml # 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 ```bash # 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 1. **Composer** : `composer require sabre/dav` 2. **Backend principal** : `PDO` (SQLite/Postgres/MySQL) ou LDAP. 3. **Authentification** : `Auth\Backend\PDO` (htpasswd-like en DB) ou implémentation custom (LDAP, OAuth, JWT). 4. **Plugins CalDAV** : `CalDAV\Plugin` (cœur), `CalDAV\ICSExportPlugin` (export), `CalDAV\Schedule\Plugin` (IMIP). 5. **Plugins CardDAV** : `CardDAV\Plugin` (cœur), `CardDAV\VCARDExport`. 6. **ACL** : `DAVACL\Plugin` (par défaut). 7. **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/dav` sur 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](https://sabre.io/dav/) - [Dépôt GitHub](https://github.com/sabre-io/dav) - [API Reference](https://sabre.io/dav/caldav/) - [Sabre Faking Server (pour tests)](https://github.com/sabre-io/dav/tree/master/tests/Sabre/CalDAV/Backend) - [Site fruux (entreprise)](https://fruux.com/) - [selfh.st Calendar](https://selfh.st/apps/?tag=calendar) - [Evert Pot — blog](https://evertpot.com/) ## 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