2026-09-19

Установка и настройка Baikal на Debian/Ubuntu: CalDAV и CardDAV сервер

Baikal — сервер календарей и адресных книг по протоколам CalDAV/CardDAV. Устанавливается как веб-приложение и позволяет синхронизировать календари и контакты между Outlook, Thunderbird, смартфонами и другими клиентами.

Актуальная версия на сентябрь 2026 — Baikal 0.12.1. Инструкция для Debian и Ubuntu.


Подготовка сервера

1. Пакеты

apt update
apt upgrade
apt install wget unzip

где unzip — распаковка zip, wget — загрузка файлов.

2. Брандмауэр

Открываем порты 80 и 443:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save

Для продакшена используйте HTTPS (443).


Настройка веб-сервера

Требования Baikal (см. официальную инструкцию):

  • PHP 8.1+ (точные требования — в composer.json на GitHub);
  • MySQL/MariaDB или SQLite;
  • Apache или Nginx.

Поднимаем NGINX + MariaDB + PHP-FPM.

NGINX

apt install nginx

Открываем http://<IP-сервера> — увидим стартовую страницу NGINX.

MariaDB

apt install mariadb-server
mysql
> CREATE DATABASE baikal DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> CREATE USER 'baikal'@'localhost' IDENTIFIED BY 'baikal123';
> GRANT ALL PRIVILEGES ON baikal.* TO baikal@localhost;
> quit

Создана база baikal, пользователь baikal / baikal123 с доступом с localhost.

PHP и компоненты

apt search --names-only '^php[.0-9]{3}$'

Если нужная версия есть в репозитории:

apt install php

Иначе — по инструкциям Установка разных версий PHP на Ubuntu или на Debian.

Необходимые расширения: dom, openssl, pdo, zlib (сверяйтесь с composer.json).

а) Из родного репозитория:

apt install php-dom php-pdo php-zip php-fpm

б) Из дополнительного репозитория:

PHP_VER=8.3
apt install php${PHP_VER}-dom php${PHP_VER}-pdo php${PHP_VER}-zip php${PHP_VER}-fpm

Виртуальный домен

vi /etc/nginx/sites-enabled/baikal.conf
server {
    listen       80;
    server_name  dav.imaxis.ru;
    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/php-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
    }
}

где dav.imaxis.ru — адрес портала, /var/www/baikal/html — путь к файлам приложения.

Конфигурация взята с официального сайта Baikal.

nginx -t && nginx -s reload
mkdir -p /var/www/baikal/html
vi /var/www/baikal/html/index.php
<?php echo phpversion();

Проверяем:

curl --header "Host: dav.imaxis.ru" http://127.0.0.1

Должны увидеть версию PHP, например 8.3.12.


Установка Baikal

1. Загрузка и копирование

Скачиваем последнюю версию со страницы релизов:

wget https://github.com/sabre-io/Baikal/releases/download/0.12.1/baikal-0.12.1.zip
unzip baikal-*.zip

Удаляем ранее созданный каталог (он есть в архиве):

rm -fr /var/www/baikal/html
mv baikal/* /var/www/baikal/
chown -R www-data:www-data /var/www/baikal

2. Установка через веб-интерфейс

Открываем адрес портала (dav.imaxis.ru). Имя должно разрешаться в IP через DNS или hosts.

Заполняем поля и нажимаем Save changes: часовой пояс, email для уведомлений, пароль администратора.

В следующем окне ставим галочку Use MySQL и указываем параметры подключения к базе:

В примере сервер БД — localhost, база baikal, логин/пароль baikal / baikal123.

Нажимаем Save changesStart using Baikal.


Создание пользователя

Переходим на http://<домен>/admin/, входим под admin и паролем из установки.

Раздел Users and resourcesAdd user → заполняем поля → Save changes.

Справа от учётной записи появятся ссылки на её календарь и адресную книгу.


Подключение клиентов

Microsoft Outlook

Закрываем Outlook. Для синхронизации нужен CalDav Synchronizer со страницы загрузки.

Устанавливаем (распаковать архив, запустить .msi, мастер — Далее). В Outlook переходим на вкладку CalDav SynchronizerSynchronization Profiles → добавляем профиль.

Для календаря:

DAV URL: http://dav.imaxis.ru/dav.php/calendars/imaxis/default/

Нажимаем Test or discover settings — должно появиться сообщение об успешной проверке. Завершаем создание профиля.

Аналогично для адресной книги:

http://dav.imaxis.ru/dav.php/addressbooks/imaxis/default/

Mozilla Thunderbird

Открываем Thunderbird → AltИнструментыДополнения.

Устанавливаем два дополнения:

  1. TbSync (поиск: tbsync);
  2. Provider for CalDAV & CardDAV (поиск: carddav).

Перезагружаем клиент → AltИнструментыНастройка дополненийTbSyncДействия для аккаунтаДобавить новый аккаунтCalDAV & CardDAVПользовательская конфигурация.

Заполняем:

  • календарь: http://dav.imaxis.ru/dav.php/calendars/imaxis/default/;
  • адресная книга: http://dav.imaxis.ru/dav.php/addressbooks/imaxis/default/.

Готово → отмечаем Разрешить и синхронизировать этот аккаунт → ставим галочки для календаря и адресной книги → Синхронизировать сейчас.


Тонкости и подводные камни

  • Версия PHP — Baikal 0.12 требует PHP 8.1+; на старых Ubuntu ставьте ondrej/php.
  • Расширения PHP — сверяйтесь с composer.json; кроме dom/pdo/zip часто нужны mbstring, xml, curl.
  • Права www-data — каталог /var/www/baikal должен принадлежать пользователю веб-сервера.
  • Сокет PHP-FPM — путь unix:/var/run/php/php-fpm.sock зависит от версии PHP; проверьте /etc/php/*/fpm/pool.d/.
  • .well-known редиректы — нужны для авто-обнаружения CalDAV/CardDAV клиентами.
  • Закрытые каталогиCore, Specific, config должны быть недоступны извне (это уже сделано в конфиге).
  • HTTPS обязателен — CalDAV/CardDAV передают учётные данные; на проде — только TLS.
  • Пути к календарям — включают имя пользователя (/calendars/imaxis/...); для каждого пользователя они свои.

Шпаргалка

apt install nginx mariadb-server php php-dom php-pdo php-zip php-fpm wget unzip
mysql -e "CREATE DATABASE baikal; CREATE USER 'baikal'@'localhost' IDENTIFIED BY 'baikal123'; GRANT ALL ON baikal.* TO baikal@localhost;"
mkdir -p /var/www/baikal/html
wget https://github.com/sabre-io/Baikal/releases/download/0.12.1/baikal-0.12.1.zip
unzip baikal-*.zip && rm -fr /var/www/baikal/html && mv baikal/* /var/www/baikal/
chown -R www-data:www-data /var/www/baikal
# nginx vhost с /.well-known/caldav и /.well-known/carddav
nginx -t && nginx -s reload
# веб-установка -> admin -> Users and resources

Проверено на: Ubuntu 22.04/24.04/26.04, Debian 12 + Baikal 0.12.1.
Дата: Сентябрь 2026.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *