7.6 KiB
title: Baïkal created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, calendar, caldav, carddav, php, lightweight, ui] confidence: high contested: false sources: [https://selfh.st/apps/?tag=calendar]
🌙 Baïkal
Le serveur CalDAV/CardDAV « clé en main » en PHP, basé sur app-sabre-dav. C'est la version avec UI admin : installation en 5 minutes, gestion des utilisateurs via une interface web, et c'est tout. L'alternative la plus populaire à app-radicale côté PHP.
| Métadonnée | Valeur |
|---|---|
| Site web | sabre.io/baikal |
| GitHub | sabre-io/Baikal |
| License | GPL-3.0 (Baïkal UI), avec sabre/dav en BSD-3 en dessous |
| Langage | PHP 8.1+ |
| Étoiles | 316 ⭐ |
| Dernière MAJ | 2026-03 (v0.10.x « Baïkal 2 ») |
| Catégorie | cat-calendar |
Description
Baïkal (parfois écrit Baïkal, ou Baikal) est né en 2013 comme un wrapper « UI admin » au-dessus de app-sabre-dav. L'idée : ne pas demander à un admin système d'éditer un fichier PHP pour créer un utilisateur, mais lui donner une interface web pour gérer utilisateurs, calendriers et carnets d'adresses, le tout reposant sur la librairie sabre/dav qui reste la référence CalDAV/CardDAV en PHP.
Concrètement, Baïkal est une application PHP traditionnelle (Composer, Zend Framework minimaliste, PDO/SQLite/MySQL) qui expose une UI d'admin Bootstrap sur /admin/ et un serveur CalDAV/CardDAV sur /dav/. Chaque utilisateur peut avoir plusieurs calendriers et carnets d'adresses. L'auth est basique (login/mot de passe en DB), des plugins permettent d'ajouter LDAP ou IMAP. La force du projet : toute la conformité CalDAV est déléguée à sabre/dav, Baïkal n'est qu'une surcouche admin.
Points forts : UI web admin (ce qui manque à app-radicale), clé en main : Docker, 5 minutes, ça marche, basé sur la librairie la plus conforme aux RFCs (sabre/dav), licence GPL-3.0, SQLite par défaut (pas de DB à gérer pour un petit setup), support CardDAV intégré, support CalDAV complet (iTip/iMip), maturité (le projet existe depuis 2013, très stable), communauté active.
Points faibles : PHP = stack à part (mais l'image Docker le rend indolore), pas de clustering natif (au-delà de quelques dizaines d'utilisateurs, passer à Nextcloud ou DAViCal), sécurité de l'UI admin = à protéger derrière HTTPS et idéalement restriction IP, mise à jour manuelle de la base de temps en temps (migrations SQLite), pas de app store ni d'API REST (c'est CalDAV, c'est tout), pas d'auth native OAuth/OIDC (LDAP via plugin).
Installation
Via Docker (méthode recommandée)
L'image ckulka/baikal ou cschlosser/baikal sont des images communautaires bien tenues. Voici la version la plus utilisée :
# docker-compose.yml
services:
baikal:
image: ckulka/baikal:latest
container_name: baikal
restart: unless-stopped
ports:
- "8800:8800"
environment:
BAIKAL_ADMIN_PASSWORD: changez-moi
BAIKAL_DATABASE: sqlite
TZ: Europe/Paris
volumes:
- ./config:/var/www/baikal/config
- ./data:/var/www/baikal/Specific
UI admin : http://localhost:8800/admin/ (login par défaut admin / admin ou baikal selon l'image). Serveur CalDAV : http://localhost:8800/dav.php/.
Avec MySQL (au-delà de SQLite)
services:
baikal:
image: ckulka/baikal:latest
restart: unless-stopped
ports:
- "8800:8800"
environment:
BAIKAL_DATABASE: mysql
BAIKAL_MYSQL_HOST: db
BAIKAL_MYSQL_DB: baikal
BAIKAL_MYSQL_USER: baikal
BAIKAL_MYSQL_PASSWORD: secret-db
volumes:
- ./config:/var/www/baikal/config
- ./data:/var/www/baikal/Specific
depends_on:
- db
db:
image: mysql:8
restart: unless-stopped
environment:
MYSQL_DATABASE: baikal
MYSQL_USER: baikal
MYSQL_PASSWORD: secret-db
MYSQL_ROOT_PASSWORD: secret-root
volumes:
- ./mysqldata:/var/lib/mysql
Installation manuelle
PHP 8.1+, Composer, Apache/Nginx, SQLite ou MySQL. Télécharger la dernière release sur GitHub, décompresser, pointer un vhost sur le dossier html/, lancer /admin/install/ dans le navigateur, suivre l'assistant (création du config.php, compte admin, choix SQLite/MySQL).
Configuration
- Premier accès :
https://baikal.example.com/admin/→ loginadmin/admin(CHANGER IMMÉDIATEMENT). - Créer un utilisateur :
Users → Add user→ username, password (bcrypt), display name, e-mail. - Créer un calendrier pour cet utilisateur :
Calendars → Add calendar→ nom, couleur, description. - Connecter un client : dans Thunderbird / iOS / DAVx5 / GNOME Online Accounts :
- URL CalDAV :
https://baikal.example.com/dav.php/calendars/alice/ - User :
alice - Password : celui saisi à l'étape 2
- URL CalDAV :
- Activer LDAP (optionnel) : plugin
ldapoucarddavcôté serveur. - Timezone et locale :
Settings → System→ fuseau horaire, format de date. - Logs :
config/SYSTEM/ENABLE_LOGGING = truepour debug CalDAV.
Alternatives
Open Source
- app-radicale — Concurrent direct en Python, sans UI admin
- app-davical — Serveur CalDAV en PHP/PostgreSQL, plus « entreprise »
- app-sabre-dav — La librairie sur laquelle Baïkal est construit
- app-etesync — CalDAV-compatible mais avec chiffrement E2E
- Xandikos — Serveur CalDAV/CardDAV en Python, plus strict
- DAViCal — Concurrent historique PHP/PostgreSQL
- app-nextcloud — Suite complète (calendrier, contacts, fichiers, etc.)
Propriétaires (ce que Baïkal remplace)
- iCloud Calendar / Contacts — Le service d'Apple, fermé
- Google Calendar / Contacts — Le géant, pas self-hostable
- Outlook.com Calendar / People — Microsoft, fermé
- Yahoo Calendar — Discontinué
- fruux (projet Evert Pot) — Service commercial de l'auteur de sabre/dav, fermé en 2022
Sécurité
- ✅ HTTPS obligatoire (Let's Encrypt via app-traefik ou Caddy)
- ✅ Mots de passe bcrypt côté serveur
- ⚠️ UI admin : restreindre l'accès (restriction IP, 2FA via reverse-proxy) car c'est le point sensible
- ✅ CSRF tokens sur les formulaires admin
- ⚠️ SQLite par défaut : parfait pour ~10 users, migrer MySQL/PostgreSQL au-delà
- ✅ GPL-3.0 = auditable
- ✅ Pas de télémétrie (contrairement aux SaaS)
- ⚠️ Updates : suivre les releases GitHub, surtout les CVE PHP-CGI (cf. 2024-2025)
- ⚠️ Pas de rate-limiting natif : déléguer à Nginx/Traefik
Ressources
- Site officiel
- Documentation
- Dépôt GitHub
- Docker Hub ckulka/baikal
- Forum sabre.io
- selfh.st Calendar
- RFC CalDAV 4791
- RFC CardDAV 6352
Pages Liées
- cat-calendar — Catégorie Calendar
- app-sabre-dav — La librairie sur laquelle Baïkal est construit
- app-davical — Concurrent PHP CalDAV plus orienté entreprise
- app-radicale — Concurrent Python minimaliste
- app-etesync — Calendrier E2E
- app-cal-com — Scheduler qui se connecte à Baïkal
- recettes-docker-compose — Templates Docker
- app-traefik — Reverse-proxy HTTPS