Baïkal: CalDav и CardDav

Установка и конфигурация Baïkal #

Согласно домашней странице, Baïkal - это легковесный CalDAV + CardDAV сервер, предназначенный для развёртывания точки синхронизации календарей и адресных книг на собственных мощностях.

Сам по себе он обладает вполне пригодной для применения инструкцией по установке, однако, есть некоторые нюансы, которые следует учитывать в случае, если операционной системой для него выступает Debian.

ℹ️ Общая информация
В данном руководстве рассматривается развёртывание Baïkal 0.10.1 на Debian 13.2.
Ввиду того, что развёртывание полагается применять для личных и семейных целей, в качестве СУБД будет использоваться sqlite3, а в качестве веб-сервера - NGINX.

Для примера, мы будем рассматривать установку на свеже-развёрнутый Debian в варианте “с установкой стандартных системных утилит”.

После авторизации на сервере, настройки IP-адреса, доменного имени и часового пояса, нам потребуется установить сопутствующее программное обеспечение:

sudo apt install unzip nginx php-fpm php-sqlite3 php8.4-xml

Затем, нам необходимо загрузить дистрибутив Baïkal и распаковать его в директорию с веб-сайтами.
Также мы удалим дистрибутив Baïkal после распаковки:

wget https://github.com/sabre-io/Baikal/releases/download/0.10.1/baikal-0.10.1.zip && \
sudo unzip baikal-0.10.1.zip -d /var/www/ && \
rm baikal-0.10.1.zip

Теперь необходимо изменить владельца двух директорий в папке сайта.
Baïkal будет использовать их для файла конфигурации и базы данных:

sudo chown -R www-data:www-data /var/www/baikal/Specific /var/www/baikal/config

Можем переходить к настройке NGINX.
Создадим файл конфигурации для Baïkal:

sudo touch /etc/nginx/sites-available/baikal

После создания мы поместим в него конфигурацию для NGINX (например, при помощи nano):

server {
  listen      80;
  server_name baikal.example;

  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:/run/php/php8.4-fpm.sock;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
  }
}

⚠️ Обратите внимание
В качестве значения директивы server_name приведёно имя baikal.example.
Не забудьте изменить его на назначенное вашему серверу доменное имя!

Отключим стандартный сайт NGINX, подключим сайт Baïkal и перезапустим NGINX:

sudo rm /etc/nginx/sites-enabled/default && \
sudo ln -s /etc/nginx/sites-available/baikal /etc/nginx/sites-enabled/baikal && \
sudo systemctl restart nginx.service

Готово.
Можем попробовать перейти по ссылке:

http://baikal.example

Если всё было сделано правильно, то должна открыться страница первичной конфигурации:

Страница конфигурации

⚠️ Обратите внимание
В приведённом руководстве развёртывание намеренно произведено без использования SSL, так как предметом рукововодства выступает именно Baïkal.
Если ваш экземпляр Baïkal доступен из сети Интернет, то я настоятельно рекомендую использовать SSL.

На этом развёртывание можно считать завершённым.