Davis vs Baikal: Which Should You Self-Host?

Quick Verdict

Davis and Baikal are built on the same foundation (sabre/dav) and provide nearly identical CalDAV/CardDAV functionality. Davis has a more modern web dashboard and supports LDAP/IMAP authentication. Baikal is more mature and widely deployed. For most self-hosters, either works — pick Davis if you need LDAP, pick Baikal if you want the most battle-tested option.

Overview

Both Davis and Baikal are PHP-based CalDAV/CardDAV servers that use the sabre/dav library under the hood. They provide the same core protocol support with different administration interfaces and authentication options.

Davis is a Symfony-based application that wraps sabre/dav with a modern admin dashboard, LDAP/IMAP authentication support, and database migration tooling.

Baikal is one of the oldest and most established self-hosted CalDAV/CardDAV servers. It provides a simpler admin interface and uses SQLite or MySQL for storage. It has been a default recommendation in the self-hosting community for years.

Feature Comparison

FeatureDavisBaikal
CalDAV (calendars)YesYes
CardDAV (contacts)YesYes
Underlying librarysabre/davsabre/dav
Web admin dashboardYes — modern UIYes — functional but dated
User managementWeb UI + databaseWeb UI + database
AuthenticationInternal, LDAP, IMAPInternal only
Database backendMySQL, PostgreSQL, SQLiteSQLite, MySQL
PostgreSQL supportYesNo
Calendar subscriptionsYesYes
CalDAV scheduling (iTIP)YesYes
FrameworkSymfonyCustom PHP
Docker imageghcr.io/tchapi/davis-standaloneckulka/baikal
LicenseMITGPL-3.0

Installation Complexity

Davis requires running a database migration (bin/console doctrine:migrations:migrate) on first setup. It uses Symfony’s configuration system with environment variables. With MariaDB/PostgreSQL, the Compose file includes two services.

Baikal has a web-based setup wizard — you deploy the container, open the browser, and follow the wizard. No CLI commands needed. With SQLite, it’s a single container. The setup experience is more polished for beginners.

Baikal has a slightly easier first-run experience. Davis requires one extra CLI step.

Performance and Resource Usage

ResourceDavisBaikal
RAM~50-100 MB (with database)~30-60 MB (with SQLite)
CPUMinimalMinimal
Disk~200 MB~100 MB

Both are extremely lightweight. CalDAV/CardDAV operations are infrequent (sync happens every few minutes at most), so neither will consume meaningful resources.

Community and Support

Davis is a smaller project (~300+ GitHub stars) with focused, active development. Documentation covers the essentials.

Baikal is well-established (~2.5K+ GitHub stars) with years of production use across the self-hosting community. It’s one of the most recommended CalDAV/CardDAV servers. Documentation is solid and community knowledge is extensive.

Baikal has the larger community and longer track record.

Use Cases

Choose Davis If…

  • You need LDAP or IMAP authentication (integrate with existing user directory)
  • You want PostgreSQL support
  • You prefer a more modern admin dashboard
  • You’re deploying in an environment with Symfony/PHP tooling
  • You need to manage users programmatically (CLI + migrations)

Choose Baikal If…

  • You want the most battle-tested CalDAV/CardDAV server
  • You prefer a web-based setup wizard with no CLI required
  • SQLite storage is sufficient (simplest backup — one file)
  • You want the larger community and more third-party guides
  • Internal authentication (username/password) is sufficient

Final Verdict

For most self-hosters syncing calendars and contacts across devices, Baikal is the safer choice — it’s been running reliably for years, has a larger community, and the web-based setup wizard makes first-run painless. The SQLite option means truly zero-dependency deployment.

Choose Davis specifically if you need LDAP/IMAP authentication (for example, integrating with an existing user directory like Authentik or Active Directory) or if you need PostgreSQL. These are the only meaningful differentiators — the core CalDAV/CardDAV functionality is identical since both use sabre/dav.

For the absolute simplest option in this category, also consider Radicale — no web dashboard, but a 20 MB Python process with file-based storage.