Files
wiki/Catalogue-Self-Hosted/apps/app-davical.md
T
2026-06-09 18:40:21 +02:00

8.2 KiB


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
GitHub (pas de miroir officiel unique) — 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.

# 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)

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
$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-baikalPlus 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

Pages Liées