Back to Overview

Baikal CalDAV Integration

Connect Tymeslot to a Baikal CalDAV server. Covers the /dav.php URL format, account password authentication, and how to handle common self-hosted setups.

Luka Breitig — Technical Product Builder & AI Developer
Luka Breitig

Technical Product Builder & AI Developer

📋 Before you begin

  • A Baikal server accessible over HTTPS from the public internet — Tymeslot reaches out to your server, so it must have a public domain and valid TLS certificate
  • Your Baikal username and the calendar URI (the internal name of the calendar, set when the calendar was created in Baikal's admin interface)
  • Your Baikal account password — Baikal uses Basic Authentication; the account password is used directly

Baikal: PHP-based CalDAV/CardDAV server

Baikal is a lightweight, open-source CalDAV and CardDAV server written in PHP. It is popular among self-hosters who want a web-managed calendar server with an admin interface, without the complexity of a full groupware suite like Nextcloud or Zimbra.

Baikal exposes its CalDAV interface through a /dav.php endpoint. Calendars are organised under a predictable URL structure once you know your username and the calendar's URI.

1 Identify your CalDAV URL

Baikal calendar URLs follow this pattern:

https://baikal.example.com/dav.php/calendars/USERNAME/CALENDAR-URI/
  • baikal.example.com — the public hostname of your Baikal server
  • /dav.php — the CalDAV entry point for all Baikal installations (always present)
  • USERNAME — your Baikal username (case-sensitive)
  • CALENDAR-URI — the internal URI assigned to the calendar when it was created in Baikal's admin interface. This is typically a short slug like default or a UUID if your CalDAV client created it.

Finding the calendar URI

Open Baikal's admin panel → Calendars. The URI column shows the internal identifier for each calendar. Alternatively, connect with a CalDAV client such as Thunderbird and inspect the calendar URL — it will contain the full path including the URI.

Case-sensitive paths and trailing slash

Baikal URLs are case-sensitive and require a trailing slash. A missing slash or wrong casing will return a 404 error.

If Baikal is installed under a sub-path (e.g. served at example.com/baikal/), include that prefix before /dav.php:

https://example.com/baikal/dav.php/calendars/USERNAME/CALENDAR-URI/

2 Prepare your credentials

Baikal uses Basic Authentication. Tymeslot connects using your Baikal username and password — the same credentials you use to log in to Baikal's admin interface or connect a CalDAV client.

Baikal does not support app-specific passwords. Use the account password directly.

3 Add the calendar in Tymeslot

  1. 1 Go to [Dashboard][Settings][Integrations].
  2. 2 Click [Connect Baikal].
  3. 3 Enter the full calendar URL in Server URL (including /dav.php/calendars/USERNAME/CALENDAR-URI/), your Baikal Username, and your Password.
  4. 4 Click [Save]. Tymeslot tests the connection; a green status confirms success.

🔧 Troubleshooting

"404 Not Found"

The most common cause is a missing trailing slash, a wrong calendar URI, or omitting /dav.php from the URL. Check the exact URI in Baikal's admin panel under Calendars.

"Authentication failed" or 401 Unauthorized

Double-check the username and password match your Baikal account. Passwords are case-sensitive. If you recently changed your password in Baikal's admin, update the integration credentials.

"Connection refused" or unable to reach server

Baikal must be reachable from the public internet. If it is running on a private network or behind a firewall without a public domain, Tymeslot cannot reach it. Confirm HTTPS is configured and port 443 is open.

Baikal is served under a sub-path

If your web server proxies Baikal under a prefix such as /baikal/, include that prefix before /dav.php: https://example.com/baikal/dav.php/calendars/USERNAME/CALENDAR-URI/

Frequently Asked Questions

What is the calendar URI and where do I find it?

The calendar URI is the internal identifier Baikal assigns to a calendar — visible in the URI column of Baikal's admin panel under Calendars. When a CalDAV client creates a calendar automatically, it may assign a UUID as the URI. Connect a CalDAV client and inspect the calendar URL to find the exact value.

Can I point to the /dav.php root instead of a specific calendar?

Tymeslot requires the URL of a specific calendar collection. Pointing to /dav.php/calendars/USERNAME/ will succeed the connection test but events will not sync correctly. Always use the full path including the calendar URI.

Baikal is HTTP-only on my local network — can I still use it?

Not directly. Tymeslot requires HTTPS and a publicly reachable server. For a local Baikal instance, expose it via a reverse proxy with a valid TLS certificate and a public DNS record. Caddy or Nginx with Let's Encrypt can handle this automatically if your server is publicly reachable.

I installed Baikal with Docker — what URL should I use?

With a standard Docker setup (e.g. ckulka/baikal), Baikal is available at https://your-domain.com/dav.php when served at the root. The full calendar URL would be https://your-domain.com/dav.php/calendars/USERNAME/CALENDAR-URI/.

🔗 Related Articles

Read CalDAV Integration

CalDAV Integration

Sync Tymeslot with CalDAV calendars — Nextcloud, Radicale, Baikal, Zimbra, mailbox.org, iCloud, and Fastmail. Real-time conflict detection with no Google or Microsoft dependency.

Read Sync Tymeslot with Google Calendar

Sync Tymeslot with Google Calendar

Connect Tymeslot to Google Calendar. Real-time conflict detection respects Busy, Tentative, and Out of Office events — no double-bookings, automatic event creation.

Read Outlook Calendar Integration

Outlook Calendar Integration

Sync Tymeslot with Outlook Calendar via Microsoft Graph. Real-time conflict detection and automatic event creation — works with Outlook.com and Microsoft 365.