Baïkal¶
License: GPLv3
This guide is tested with Baïkal 0.12.1 on Uberspace 8.0.95. We can't guarantee it to work with newer versions.
Baïkal is a lightweight CalDAV+CardDAV server. It offers an extensive web interface with easy management of users, address books and calendars. It is fast and simple to install and only needs a basic php capable server. The data can be stored in a MariaDB or a SQLite database.
Prerequisites¶
Baïkal requires at least version 8.2 of PHP. The versions provided by default in Uberspace 8 Asteroids are already higher:
[isabell@moondust ~]$ php -v
PHP 8.4.22 (cli) (built: Jun 26 2026 11:09:06) (NTS)
[...]
Your website domain needs to be set up:
[isabell@moondust ~]$ uberspace web domain list
isabell.uber.space
[...]
Baïkal can store its data in SQLite or MariaDB. We'll be using SQLite for this guide. Keep in mind that once you've chosen either system, there's no automated way to migrate your data to the other.
Installation¶
Check what version the latest release is from the project's repository and download the pre-compiled .zip:
[isabell@moondust ~]$ cd /var/www/virtual/$USER/
[isabell@moondust isabell]$ VERSION="0.12.1" # This number can differ!
[isabell@moondust isabell]$ wget "https://github.com/sabre-io/Baikal/releases/download/${VERSION}/baikal-${VERSION}.zip"
[...] ‘baikal-0.12.1.zip’ saved [...]
Extract the app:
[isabell@moondust isabell]$ unzip "baikal-${VERSION}.zip"
[...]
[isabell@moondust isabell]$ rm "baikal-${VERSION}.zip"
Make its html directory the one where your Uberspace URL is pointing to:
[isabell@moondust isabell]$ rm isabell.uber.space
[isabell@moondust isabell]$ ln -s baikal/html isabell.uber.space
Warning
Make sure you point to the html subfolder, and not baikal, as this may expose private data to the public.
You can also install Baïkal under a subdomain or an external domain, but that's out of the scope of this guide. The manual is a good starting point for that.
Configuration¶
After the installation you need to open isabell.uber.space in your web browser to finish your setup with the help of Baïkal's own graphical interface.
Configure your timezone, whether you want to enable Cal/CardDAV; and the invite mail address, if any.
The authentication type we used for this guide is "basic". More information about other options can be found at https://sabre.io/dav/authentication.
Choose a strong password for the admin account and confirm it.
After saving, Baïkal should present you with "SQLite" selected by default, and the path where the database will be stored. Choose any of the other two options if you know what you are doing.
Save and log into Baïkal with the admin credentials you just created.
Open Users and resources → Add user and create a user with its own username and password. Baïkal creates a default calendar and address book for this user. The admin account manages the server; it cannot authenticate CalDAV or CardDAV clients.
In your calendar or contacts client, add a CalDAV or CardDAV account with the
server URL https://isabell.uber.space/dav.php/ and the new user's credentials.
Replace isabell.uber.space with your own domain.
Debugging¶
If something goes wrong, you might find some clues:
- in your
/home/$USER/logs/php_error.logfile, - in your
/home/$USER/logs/apache/error_log_apachefile, or - on Baïkal's troubleshooting page.
Updates¶
Note
Check the update feed regularly.
The Admin web console shows the current version number every time you log in, and whether there is a more up-to-date one.
A third-party script to check for newer versions exists.
Make a backup of your Specific and config directories:
[isabell@moondust ~]$ cd /var/www/virtual/$USER/
[isabell@moondust isabell]$ cp --recursive baikal/Specific /home/$USER/
[isabell@moondust isabell]$ cp --recursive baikal/config /home/$USER/
These commands print no output on success.
Your SQLite database will be also backed up. If you are using MariaDB the procedure will be different.
Set VERSION and download the newer release as shown under Installation,
then extract it using the command below instead of the original unzip command.
The -o option replaces application files, while -x keeps the existing
Specific and config directories intact, including your database and settings.
Keep the backups until you have verified the upgrade; no restore is needed
during a successful upgrade.
Example output (the version number may differ):
[isabell@moondust isabell]$ unzip -o "baikal-${VERSION}.zip" -x 'baikal/Specific/*' 'baikal/config/*'
Archive: baikal-0.12.1.zip
[...]
[isabell@moondust isabell]$ rm "baikal-${VERSION}.zip"
The rm command prints no output on success.
Open the administration panel (https://isabell.uber.space/admin/) and follow
the upgrade prompts. Afterwards, check that your clients can still access their
calendars and address books.
Baïkal's website offers detailed upgrade instructions.
Further Reading¶
For help, you can reach the development team through their mailing list or IRC channel.
