Retour aux outils
AutreIntermédiaireOpen sourceAuto-hébergeable

sabre/dav

**La librairie PHP de référence pour bâtir un serveur CalDAV/CardDAV/WebDAV**. Ce n'est pas un produ

MAJ 2026-06-14
sabre/dav
Site officiel Code source★ 1 711

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

📚 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éeValeur
Site websabre.io
GitHubsabre-io/dav
LicenseBSD-3-Clause
LangagePHP 8.1+
Étoiles369 ⭐ (dépôt principal) — utilisé par des milliers d'applications en aval
Dernière MAJ2026-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

  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