Requirements
Baikal requires:
- PHP (refer to the source code to view the supported version)
- MySQL or SQLite
- Apache or Nginx
Installation instructions
To install Baïkal, download the latest zip file from the releases page on github. After downloading the file, unpack it and upload it to your server.
After uploading, you must make sure that the Specific and the config directories are writeable by your webserver process. This might mean that you need to give ‘world-write’ access via your FTP client, or maybe that you run chown -R www-data:www-data Specific config on a console.
After that step has been completed, you can access the installer by browsing …
Requirements
Baikal requires:
- PHP (refer to the source code to view the supported version)
- MySQL or SQLite
- Apache or Nginx
Installation instructions
To install Baïkal, download the latest zip file from the releases page on github. After downloading the file, unpack it and upload it to your server.
After uploading, you must make sure that the Specific and the config directories are writeable by your webserver process. This might mean that you need to give ‘world-write’ access via your FTP client, or maybe that you run chown -R www-data:www-data Specific config on a console.
After that step has been completed, you can access the installer by browsing to
http://yourserver.example.org/baikal/html/
Follow the instructions there to complete the installation.

Securing your installation
Only the html directory is needed to be accessible by your web browser. You may choose to lock out access to any other directory using your webserver configuration.
In particular you should really make sure that the Specific directory is not accessible directly, as this could contain your sql database.
Apache vhost installation
The following configuration file may be used as a standard template to configure an apache vhost as a dedicated Baïkal vhost:
<VirtualHost *:443>
DocumentRoot /var/www/baikal/html
ServerName dav.example.org
RewriteEngine on
# Generally already set by global Apache configuration
# RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule /.well-known/carddav /dav.php [R=308,L]
RewriteRule /.well-known/caldav /dav.php [R=308,L]
<Directory "/var/www/baikal/html">
Options None
# If you install cloning git repository, you may need the following
# Options +FollowSymlinks
AllowOverride None
# Configuration for apache-2.4:
Require all granted
# Configuration for apache-2.2:
# Order allow,deny
# Allow from all
</Directory>
<IfModule mod_expires.c>
ExpiresActive Off
</IfModule>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/dav.example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dav.example.org/privkey.pem
</VirtualHost>
Nginx configuration
The following configuration may be used for nginx:
server {
listen 80;
server_name dav.example.org;
root /var/www/baikal/html;
index index.php;
rewrite ^/.well-known/caldav /dav.php redirect;
rewrite ^/.well-known/carddav /dav.php redirect;
charset utf-8;
location ~ /(\.ht|Core|Specific|config) {
deny all;
return 404;
}
location ~ ^(.+\.php)(.*)$ {
try_files $fastcgi_script_name =404;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}