Introduction
Baikal is a self-hosted calendar and contact server that implements the CalDAV and CardDAV protocols. It provides a simple, standards-compliant backend so you can sync events, tasks, and address books across phones, desktops, and web clients without depending on Google or Apple cloud services.
What Baikal Does
- Serves CalDAV endpoints for calendar and task synchronization
- Serves CardDAV endpoints for contact synchronization
- Works with any standards-compliant client (iOS, Android, Thunderbird, GNOME)
- Manages multiple users and shared calendars via a web admin panel
- Stores data in SQLite or MySQL with minimal resource usage
Architecture Overview
Baikal is a PHP application built on the sabre/dav library, which is the reference implementation of WebDAV, CalDAV, and CardDAV in PHP. It runs on any web server that supports PHP (Apache, Nginx with PHP-FPM). Data is stored in SQLite by default or MySQL for multi-user deployments. The admin interface is a simple PHP web panel.
Self-Hosting & Configuration
- Deploy via Docker using community-maintained images or install on any LAMP/LEMP stack
- Run the web-based setup wizard on first launch to create the admin account
- Configure the database backend (SQLite or MySQL) during initial setup
- Place behind a reverse proxy with HTTPS for secure sync over the internet
- Set proper WebDAV rewrite rules in your web server configuration
Key Features
- Full CalDAV and CardDAV compliance tested with major clients and platforms
- Lightweight footprint suitable for single-board computers like Raspberry Pi
- Web-based admin panel for managing users, calendars, and address books
- Supports calendar sharing and delegation between users
- No JavaScript frameworks or complex build steps; plain PHP deployment
Comparison with Similar Tools
- Radicale — Python-based, file-backed; Baikal offers a web admin and SQL storage
- Nextcloud — full cloud suite with CalDAV built in; Baikal is far lighter if you only need calendars
- DAViCal — PostgreSQL-focused; Baikal is simpler to set up with SQLite
- Cyrus IMAP — includes CalDAV but is primarily a mail server; Baikal is calendar-only
- EteSync — encrypted sync; Baikal uses standard CalDAV without custom encryption
FAQ
Q: Which clients work with Baikal? A: iOS Calendar/Contacts, Android (DAVx5), Thunderbird, GNOME Calendar, Evolution, and any CalDAV/CardDAV client.
Q: Can multiple users share a calendar? A: Yes. The admin panel lets you create shared calendars and assign user permissions.
Q: Does Baikal support two-way sync? A: Yes. CalDAV and CardDAV are bidirectional protocols; changes sync both ways automatically.
Q: How do I back up Baikal data?
A: Back up the Specific/ directory and the database file (SQLite) or run a MySQL dump.