Initial vault setup
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
---
|
||||
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](https://www.davical.org/) |
|
||||
| **GitHub** | (pas de miroir officiel unique) — [davical.org](https://www.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.
|
||||
|
||||
```yaml
|
||||
# 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)
|
||||
|
||||
```bash
|
||||
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
|
||||
<?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-baikal]] — **Plus 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
|
||||
|
||||
- [Site officiel](https://www.davical.org/)
|
||||
- [Documentation](https://www.davical.org/davicalwiki/)
|
||||
- [Dépôt git principal](https://gitlab.com/davical-project/davical)
|
||||
- [Liste de discussion](https://lists.davical.org/)
|
||||
- [Docker Hub](https://hub.docker.com/r/freelock/irontec-davical)
|
||||
- [selfh.st Calendar](https://selfh.st/apps/?tag=calendar)
|
||||
- [Historique projet](https://en.wikipedia.org/wiki/DAViCal)
|
||||
- [RFC CalDAV 4791](https://datatracker.ietf.org/doc/html/rfc4791)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-calendar]] — Catégorie Calendar
|
||||
- [[app-baikal]] — **Concurrent direct** PHP, plus moderne
|
||||
- [[app-sabre-dav]] — Librairie PHP CalDAV sous-jacente à Baïkal
|
||||
- [[app-radicale]] — Concurrent Python minimaliste
|
||||
- [[app-etesync]] — Calendrier E2E chiffré
|
||||
- [[app-cal-com]] — Scheduler qui se connecte en CalDAV
|
||||
- [[recettes-docker-compose]] — Templates Docker
|
||||
- [[app-traefik]] — Reverse-proxy HTTPS
|
||||
- [[app-authelia]] — SSO/2FA devant DAViCal
|
||||
Reference in New Issue
Block a user