Baïkal, synchronize your calendar and contacts

baikal logoIn a previous article, I’ve presented Owncloud, that includes CalDAV and CardDAV, allowing you to synchronize your calendar and contacts on your iOS, Android,… devices or directly with your Thunderbird and co applications.

But if you are only looking for a CalDAV and CardDAV server, no need to install Owncloud, simply use Baïkal.


Indeed, Baïkal let you synchronize your calendars and address books over CalDAV and CardDAV. Baïkal implements the IETF standards for centralized calendar and address book collections and is compatible with a large set of applications such as iOS/Mac OSX Calendar, Contacts and reminders, but also Android’s, Linux, Windows similar applications.

Basically, as long the application is CalDAV and CardDAV capable, Baïkal will works.

baikail server user

Easy to install, with a small footprint (<2MB codebase), Baïkal runs on PHP 5.3+ while the user data can be stored in a SQLite or MySQL database.A Web interface is included to simplify the administration such as user, calendar and address book collection management, etc… A dashboard provides a simple overview over the running system.baikal web interface dashboard



I assume you already have a working Apache server and SQLlite or MySQL installed.


1) Download and extract the latest archive in your /var/www

In Root:

cd /var/www
tar xvf baikal-regular-0.2.7.tgz
rm baikal-regular-0.2.7.tgz

(assuming the latest one is still the version 0.2.7)


2) Create an empty file named ENABLE_INSTALL

Per default, Baikal Install Tool is locked, to unlock it, you need to create an empty file named ENABLE_INSTALL (uppercase, no file extension) in the Specific/ folder.

cd baikal-regular/Specific


3) Change the owner of the folder to avoid permission issues

chown -R www-data:www-data /var/www/baikal-regular


4) Access the web installation panel

baikail web installation

To run the web installation, simply go to http://YourIP/baikal-regular/html

And follow the 2 steps installation.

At the second step, you will need to choose either to use SQLite or MySQL. If you use SQLite, no additional configuration will be needed. If you choose MySQL, simply set the hostname, user, password, etc… of your MySQL database.


5) Create a dedicated virtualhost with a sub domain as Baikail need it to run properly when you will connect your devices to it.

What you will need:

– Create a A redirection in your DNS server/registrar with something like dav.domain.tld to your IP

– Copy the apache virtualhost included in the Specific folder

In root, run:

cp /var/www/baikal-regular/Specific/virtualhosts/baikal.apache2 /etc/apache2/sites-enabled/baikal

and tweak its content to suit your domain name and folder path:

nano /etc/apache2/sites-enabled/baikal

<VirtualHost *:80>

        DocumentRoot /var/www/baikal-regular/html
        ServerName dav.mydomain.tld

        RewriteEngine On
        RewriteRule /.well-known/carddav /card.php [R,L]
        RewriteRule /.well-known/caldav /cal.php [R,L]

        <Directory "/var/www/baikal-regular/html">
                Options None
                Options +FollowSymlinks
                AllowOverride All


You will need to change the DocumentRoot, ServerName and <Directory “xxxxxx”> values

When done, save the file (CTRL+X then Yes) and reload apache: (In root)

/etc/init.d/apache2 reload


You should now be able to access the web interface through http://dav.domain.tld directly and connect all your devices to your Baikal instance.

turn signal synchronized


Loves to discover web-based apps to install on his own server@home and write articles about it


Add a comment