Your calendar knows when you wake up, where you work, who you meet, and what you care about. Your contacts list is a map of your entire social and professional life. Yet most people hand this data over to Google, Apple, or Microsoft without a second thought.
Self-hosting your calendar and contacts gives you back control. With the CalDAV and CardDAV protocols — open standards supported by virtually every calendar and contacts app — you can run your own sync server on a $5 VPS or a Raspberry Pi. This guide compares the three leading standalone CalDAV/CardDAV servers: Radicale, Baïkal, and Xandikos.
Why Self-Host Your Calendar and Contacts
The reasons are straightforward:
- Privacy: Your schedule and relationships are sensitive data. A self-hosted server means no third party scans your events for advertising profiles or trains models on your contact graph.
- No vendor lock-in: CalDAV and CardDAV are open RFC standards (RFC 4791 and RFC 6352). Any standards-compliant client works with any server. Switch apps freely — Thunderbird, DAVx5, GNOME Calendar, iOS, macOS, Outlook — they all connect the same way.
- Full ownership: Your data lives on hardware you control. Export it, back it up, migrate it — on your terms.
- Lightweight footprint: Unlike running a full nextcloud instance just for calendar sync, dedicated CalDAV/CardDAV servers consume minimal RAM (often under 100 MB) and need almost no CPU.
- Reliability: These servers have been production-stable for years. Once configured, they run silently in the background with near-zero maintenance.
If you already run Nextcloud and only need calendar and contacts, its built-in CalDAV/CardDAV support may suffice. But if you want something purpose-built, fast, and resource-efficient, read on.
Understanding CalDAV and CardDAV
Before comparing servers, it helps to understand the protocols:
- CalDAV (RFC 4791) extends WebDAV to manage calendar data stored in iCalendar (
.ics) format. It supports events, to-dos, journals, free/busy queries, and scheduling. - CardDAV (RFC 6352) similarly extends WebDAV for vCard (
.vcf) contact data. It supports contact creation, searching, grouping, and synchronization.
Both run over HTTP/HTTPS, use standard authentication, and are supported natively or via add-ons on every major platform:
| Platform | Calendar (CalDAV) | Contacts (CardDAV) |
|---|---|---|
| Android | DAVx5 + Etar Calendar | DAVx5 + Contacts app |
| iOS / iPadOS | Built-in (Add Account → Other) | Built-in (same flow) |
| macOS | Built-in (System Settings → Internet Accounts) | Built-in (same) |
| Windows | Outlook (via add-on), Thunderbird | Thunderbird |
| Linux | GNOME Calendar, Evolution, Thunderbird | GNOME Contacts, Thunderbird |
| Web | Radicale Manager, Baïkal admin | Baïkal admin |
Contenders at a Glance
| Feature | Radicale | Baïkal | Xandikos |
|---|---|---|---|
| Language | Python | PHP | Python |
| Storage | Flat files | SQLite / MySQL | Git repository |
| GitHub Stars | 3,200+ | 2,800+ | 900+ |
| Web Admin UI | Minimal (Radicale Manager plugin) | Full admin panedockerne (CLI only) | |
| Docker Image | Official | Community | Community |
| RAM Usage | ~30 MB | ~50 MB | ~40 MB |
| Multi-user | Yes | Yes | Yes |
| LDAP Auth | Via plugin | Built-in | No |
| Rights Management | Regex-based file | Per-user / per-collection | Basic |
| Web Interface | Optional (third-party) | Yes (admin + basic web UI) | No |
| Active Development | Yes (steady) | Yes (periodic) | Yes (slow but steady) |
| Best For | Simplicity, minimalism | Users wanting a web admin panel | Git-backed version control lovers |
Radicale: Minimalist and Reliable
Radicale is the most popular standalone CalDAV/CardDAV server. Written in Python, it stores data as plain files on disk and aims to be small, simple, and correct. It implements the full CalDAV and CardDAV specifications and has been around since 2009.
Strengths
- Dead simple to set up: A working server takes three commands.
- Extremely lightweight: Runs on a Raspberry Pi Zero with room to spare.
- No database needed: Data is stored as
.icsand.vcffiles — easy to back up withrsyncorrestic. - Active community: The largest user base of any standalone CalDAV server.
- Plugin ecosystem: Supports authentication plugins, rights management, and storage backends.
Weaknesses
- No built-in web admin: You manage users via config files or use the third-party Radicale Manager.
- Flat file storage: Great for simplicity, but can slow down with thousands of calendars/users.
- Limited web UI: The built-in web interface only shows a basic status page.
Docker Setup
| |
Create the htpasswd file for authentication:
| |
Nginx Reverse Proxy
| |
Connecting Clients
Android (DAVx5):
- Install DAVx5 from F-Droid or Play Store
- Add account → Login with URL and user name
- URL:
https://calendar.example.com/alice/ - Enter username and password
iOS / macOS:
- Settings → Calendar → Accounts → Add Account → Other
- Add CalDAV Account
- Server:
calendar.example.com, username, password - For contacts: Settings → Contacts → Accounts → Add CardDAV Account
Thunderbird:
- Add Calendar → On the Network → CalDAV
- URL:
https://calendar.example.com/alice/ - For contacts: Install TbSync + DAV Provider add-on
Baïkal: Feature-Rich with a Web Admin
Baïkal is a PHP-based CalDAV/CardDAV server built on the sabre/dav framework — theowncloudbrary that powers ownCloud/Nextcloud’s calendar backend. Its standout feature is a polished web admin interface where you can manage users, calendars, and address books without touching the command line.
Strengths
- Full web admin panel: Create users, calendars, and address books from a browser.
- Multiple database backends: SQLite for simplicity, MySQL/PostgreSQL for scale.
- sabre/dav foundation: Battle-tested library used by major projects.
- Built-in web UI: Users can access a basic web interface for their calendars and contacts.
- LDAP authentication: Built-in support for LDAP/Active Directory.
Weaknesses
- PHP dependency: Requires a PHP runtime (though the Docker image handles this).
- Heavier than Radicale: More dependencies, slightly higher resource usage.
- Release cadence: Updates come less frequently than Radicale.
Docker Setup
| |
For the first run, visit http://your-server:8080/admin/ to run the installation wizard. You’ll set:
- Admin credentials
- Database type (SQLite is fine for most users)
- Timezone and server base URL
After initial setup, remove INSTALL=yes from the environment variables and restart.
Nginx Reverse Proxy
| |
Creating Users and Calendars via Web Admin
- Log in to
https://calendar.example.com/admin/ - Go to Users and Resources → Users → click +
- Set display name, password, and optionally an email
- The user automatically gets a default calendar and address book
- To add extra calendars: click the user → + Calendar → set name and description
- To add extra address books: click the user → + Address Book → set name
Connecting Clients
The process is identical to Radicale — just point your clients to the Baïkal server URL. Baïkal’s auto-discovery works well with most clients:
- CalDAV URL:
https://calendar.example.com/dav.php/calendars/alice/ - CardDAV URL:
https://calendar.example.com/dav.php/addressbooks/alice/
Xandikos: Git-Backed Version Control
Xandikos takes a fundamentally different approach: it stores all CalDAV and CardDAV data as a Git repository. Every change is automatically committed, giving you full version history of every calendar event and contact modification. Written in Python by Jelmer Vernooij (a prominent Debian developer), it’s designed for correctness and standards compliance.
Strengths
- Git versioning: Every change is tracked. You can diff, blame, and revert any calendar or contact edit.
- Excellent standards compliance: One of the most RFC-compliant CalDAV/CardDAV implementations.
- Efficient storage: Git’s delta compression means minimal disk usage even with long histories.
- Audit trail: Know exactly who changed what and when — invaluable for shared calendars.
- No database: Like Radicale, it avoids database dependencies.
Weaknesses
- No web admin UI: Everything is managed via config files or the API.
- Smaller community: Fewer users means fewer tutorials and community resources.
- Git learning curve: If something breaks, you may need Git troubleshooting skills.
- Slower with large datasets: Git operations can slow down with very large collections.
Docker Setup
| |
Manual Setup (Without Docker)
| |
Nginx Reverse Proxy with Basic Auth
| |
Browsing Git History
One of Xandikos’ best features is the ability to inspect changes directly in the Git repository:
| |
Comparison Deep Dive
Performance and Resource Usage
| Metric | Radicale | Baïkal | Xandikos |
|---|---|---|---|
| Idle RAM | ~30 MB | ~50 MB | ~40 MB |
| Sync 100 contacts | < 0.5s | < 0.5s | < 1.0s |
| Sync 1000 events | < 2s | < 2s | < 3s |
| Disk (1000 events + 500 contacts) | ~5 MB | ~8 MB | ~3 MB (with Git) |
| Backup method | cp / rsync / restic | mysqldump or cp SQLite | git bundle / git push |
All three are dramatically lighter than running Nextcloud for calendar sync alone (which typically needs 512 MB+ RAM).
Security Considerations
All three servers share similar security requirements:
- Always use HTTPS — never expose CalDAV/CardDAV over plain HTTP, especially since passwords are sent with every sync.
- Use strong passwords or token-based authentication.
- Keep the server updated — all three receive security patches regularly.
- Fail2ban integration: Protect against brute-force login attempts:
| |
Backup Strategies
Radicale (file-based):
| |
Baïkal (SQLite):
| |
Xandikos (Git-native):
| |
Migration Between Servers
Moving between any of these three is straightforward because they all speak standard CalDAV/CardDAV:
- Point your client (DAVx5, Thunderbird, etc.) to the new server URL.
- The client will download all data from the old server and upload it to the new one.
- Or export
.ics/.vcffiles from the old server and import them into the new one.
For bulk migration, tools like vdirsyncer can synchronize between any two CalDAV/CardDAV servers:
| |
Then run vdirsyncer sync to migrate everything.
Which One Should You Choose?
Choose Radicale if: You want the simplest, most lightweight solution. It’s the default recommendation for most homelab users. Set it up in five minutes, forget about it, and it just works. The flat file storage makes backups trivial.
Choose Baïkal if: You want a web admin interface to manage users and calendars without SSH access. This is ideal for family setups or small teams where a non-technical person needs to create accounts or manage shared calendars. The sabre/dav foundation also means excellent protocol compatibility.
Choose Xandikos if: You value version control and audit trails. If you run a shared household calendar or manage contacts for a small business, the ability to see who changed what and revert mistakes is invaluable. The Git integration also means your backup strategy is simply git push.
All three are excellent choices. The “best” server depends on your technical comfort level and whether you need a web interface. None of them will disappoint.
Final Thoughts
Self-hosting your calendar and contacts is one of the highest-impact privacy upgrades you can make for minimal effort. These servers run reliably on hardware as modest as a Raspberry Pi, consume almost no resources, and give you complete ownership of some of your most personal data.
Pair any of these servers with DAVx5 on Android or native CalDAV/CardDAV on iOS/macOS, put them behind a reverse proxy with Let’s Encrypt SSL, and you have a fully functional, private alternative to Google Calendar and iCloud Contacts — no subscription fees, no data harvesting, no vendor lock-in.
Frequently Asked Questions (FAQ)
Which one should I choose in 2026?
The best choice depends on your specific requirements:
- For beginners: Start with the simplest option that covers your core use case
- For production: Choose the solution with the most active community and documentation
- For teams: Look for collaboration features and user management
- For privacy: Prefer fully open-source, self-hosted options with no telemetry
Refer to the comparison table above for detailed feature breakdowns.
Can I migrate between these tools?
Most tools support data import/export. Always:
- Backup your current data
- Test the migration on a staging environment
- Check official migration guides in the documentation
Are there free versions available?
All tools in this guide offer free, open-source editions. Some also provide paid plans with additional features, priority support, or managed hosting.
How do I get started?
- Review the comparison table to identify your requirements
- Visit the official documentation (links provided above)
- Start with a Docker Compose setup for easy testing
- Join the community forums for troubleshooting