Back to Overview

Baikal CalDAV Integration

Connect Tymeslot to a Baikal CalDAV server: the /dav.php server address, your account login, and common self-hosted setups.

Luka Breitig, Software Engineer & AI Developer
Luka Breitig

Aggiornato il 19 agosto 2026

Before you begin

  • A Baikal server accessible over HTTPS from the public internet. Tymeslot connects to your server, so it needs a public domain and a valid TLS certificate (unless you self-host Tymeslot on the same private network; see the troubleshooting note below)
  • Your Baikal username, exactly as it appears in Baikal's admin interface
  • Your Baikal account password. Tymeslot supports both Basic and Digest authentication, so Baikal's default Digest setting works as it is

Baikal: PHP-based CalDAV/CardDAV server

Baikal is a lightweight, open-source CalDAV and CardDAV server written in PHP. Self-hosters choose it for a calendar server with a web admin interface, without running a full groupware suite such as Nextcloud or Zimbra.

Baikal exposes its CalDAV interface through a /dav.php endpoint, with each user's calendars under a predictable path. Tymeslot only needs the endpoint and your username to find them.

1 Identify your server URL

Enter your Baikal address with /dav.php on the end:

https://baikal.example.com/dav.php
  • baikal.example.com The public hostname of your Baikal server.
  • /dav.php The CalDAV entry point, present on every Baikal installation.
  • USERNAME Not part of the URL: enter it in the Username field. Tymeslot adds /calendars/USERNAME/ itself.
  • CALENDAR-URI Not needed either. Tymeslot lists every calendar it finds for your user, whether its URI is a short slug like default or a UUID, and you tick the ones to sync.

Already have a full calendar URL?

An address from another CalDAV client, such as one ending in /dav.php/calendars/USERNAME/, also works. The plain /dav.php address is simpler and lets Tymeslot list all your calendars.

Case-sensitive username

Baikal paths are case-sensitive, and Tymeslot builds the calendar path from your username. Enter it with exactly the casing shown in Baikal's admin interface, or discovery finds no calendars.

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

https://example.com/baikal/dav.php

2 Prepare your credentials

Tymeslot signs in with your Baikal username and password, the same ones you use to connect any CalDAV client. It answers both Basic and Digest authentication, so it works whichever one your Baikal is set to.

Baikal has no app-specific passwords, so use the account password.

3 Add the calendar in Tymeslot

  1. 1 Go to [Dashboard] → [Integrations] → [Calendars].
  2. 2 Click [Connect a calendar] and pick the [Baikal] card.
  3. 3 Enter your Baikal address in Server URL (ending in /dav.php), your Baikal Username, and your password.
  4. 4 Click [Discover calendars], tick the calendars to sync, then click [Add Integration]. A Healthy status confirms the connection.
The Baikal connection form with Integration Name, Server URL, Username and Password fields and a Discover calendars button
The Baikal connection form.

Troubleshooting

"Resource not found" or "No calendars were discovered"

The usual causes are a server URL without /dav.php, a missing sub-path, or a username whose casing differs from the one in Baikal's admin interface.

"Authentication failed" or 401 Unauthorized

Check that the username and password match your Baikal account; both are case-sensitive. If you recently changed the password in Baikal's admin interface, enter the new one with [Reconnect] on the connection in [Integrations].

"Unable to connect to the calendar service"

Baikal must be reachable from wherever Tymeslot runs. Check that HTTPS is configured and port 443 is open.

Self-hosting Tymeslot on that same network is the exception. A host that resolves to a private address is refused by default, as protection against server-side request forgery. Set ALLOW_PRIVATE_IPS_FOR_CALENDAR=true on your Tymeslot deployment to permit a CalDAV server on an internal network. This applies to self-hosted installs only. On the managed service at tymeslot.app our servers have no route to your network, so a private address cannot work there whatever you configure.

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

Frequently Asked Questions

Do I need to know the calendar URI?

No. The calendar URI is the internal identifier Baikal gives a calendar, often a UUID when a CalDAV client created it. Tymeslot lists your calendars by their display names after you click [Discover calendars], so you never have to type one.

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

Yes, and that is the recommended address. From /dav.php, Tymeslot looks under /dav.php/calendars/USERNAME/ and lists every calendar it finds there.

Baikal is HTTP-only on my local network. Can I still use it?

On the managed service, no: it needs a publicly reachable server over HTTPS. Put Baikal behind a reverse proxy with a valid TLS certificate and a public DNS record; Caddy, or Nginx with Let's Encrypt, can issue the certificate for you.

If you self-host Tymeslot on the same network, yes. Set ALLOW_PRIVATE_IPS_FOR_CALENDAR=true, and Tymeslot then accepts plain http:// for a private IP address or an internal host name, such as a Docker service name or a name ending in .local, .lan or .internal.

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. Enter that address as the Server URL.

Related Articles

Read CalDAV Integration

CalDAV Integration

Sync Tymeslot with CalDAV calendars: Nextcloud, Radicale, Baikal, Zimbra, mailbox.org, iCloud and Fastmail. Conflict checks and new bookings work without a Google or Microsoft account.

Read Google Calendar Integration

Google Calendar Integration

Connect Tymeslot to Google Calendar. Busy, Tentative and Out of Office events all block bookings, so you are never double-booked, and every booking is added to your calendar.

Read Outlook Calendar Integration

Outlook Calendar Integration

Sync Tymeslot with Outlook Calendar via Microsoft Graph. Your Outlook events block conflicting bookings and every booking is added to your calendar. Works with Outlook.com and Microsoft 365.