Baikal сервис хранения контактов и календарей.

Baikal — является лёгким CalDAV+CardDAV сервером. Используется для хранения своей контактной книги со всеми метаданными и изображениями контактов, а так же для хранения событий календаря, задач и заметок. Подразумевается возможность совместного использования или же использования с нескольких устройств. Исходя из этого вполне может подходить для ведения корпоративной адресной книги, которую например можно подключать сотрудникам на корпоративные устройства в режиме чтения. Таким образом спектр применения весьма широкий и вариативный.

Я использую для личных нужд, храню адресную книгу с телефона, веду личные заметки и задачи (todo).

1. Установка

Минимальные требования для установки:

  • PHP 7+;
  • MySQL или SQLite;
  • Apache или Nginx;

Скачиваем архив с файлами. Далее распаковываем исходные файлы в каталог на веб сервере:

# mkdir /var/www/baikal

Добавляем права на каталог:

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

Далее создадим виртуал хост на Apache:

# nano /etc/apache2/sites-available/dav.yourdomain.ru.conf
<VirtualHost *:80>
    ServerName dav.yourdomain.ru
    DocumentRoot /var/www/baikal/html
    <Directory /var/www/baikal/html>
            AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/baikal-error.log
    CustomLog ${APACHE_LOG_DIR}/baikal-access.log combined
</VirtualHost>

Включим сайт и перезапустим апач:

# a2ensite
# systemctl reload apache2

На это этапе уже можно проверить работу сервера по протоколу http. Далее выпустим сертификат Let’s encrypt:

# certbot --apache

Немного модифицируем созданную certbot’ом конфигурацию для https:

# nano /etc/apache2/sites-available/dav.yourdomain.ru-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName dav.yourdomain.ru
    DocumentRoot /var/www/baikal/html

    <Directory /var/www/baikal/html>
            AllowOverride None
            Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/baikal-error.log
    CustomLog ${APACHE_LOG_DIR}/baikal-access.log combined

RewriteEngine on
RewriteRule /.well-known/carddav /dav.php [R=308,L]
RewriteRule /.well-known/caldav  /dav.php [R=308,L]

    <IfModule mod_expires.c>
        ExpiresActive Off
    </IfModule>

SSLCertificateFile /etc/letsencrypt/live/dav.yourdomain.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dav.yourdomain.ru/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Перезапускаем Apache:

# systemctl reload apache2

Далее создадим базу данных, пользователя для этой базы и дадим ему необходимые права:

# mysql -u root -p
>CREATE DATABASE baikal;
>CREATE USER 'baikal'@'localhost' IDENTIFIED BY 'password';
>GRANT ALL PRIVILEGES ON baikal.* TO 'baikal'@'localhost';
>FLUSH PRIVILEGES;

Дальше идём по адресу нашего сервера и попадаем в обычную админку.

Тут уже всё как у всех, вводим необходимые данные, включаем нужные нам параметры, прописываем базу данных, пользователя и пароль.

На этом установка по сути и настройка закончена. Останется только в веб панели управления создать нужных пользователей.

2. Обновление/Резервное копирование

Останавливаем web сервер:

# systemctl stop apache2

Делаем бэкап базы:

# mysqldump -u root -p baikal > baikal.sql

Бэкапим каталог:

# cp -R baikal baikal.bak

На этом этапе, можно скопировать созданные бэкапы в надёжное место.

Скачиваем релиз:

wget https://github.com/sabre-io/Baikal/releases/download/0.9.3/baikal-0.9.3.zip

unzip baikal-0.9.3.zip

Скопируйте новые файлы поверх старых. Важно, нельзя перезаписывать содержимое каталогов Specific и config.

Запускаем Apache:

# systemctl start apache2

Далее идём по адресу:

https://dav.yourdomain.ru/admin

Попадаем в веб интерфейс обновления:

Если всё прошло хорошо то видим примерно следующее:

Удаляем лишние файлы:

# rm -R baikal.bak baikal*.zip

3. Использование

Вариантов использования протоколов CalDAV или CardDAV множество, как именно будете это делать вы, решать вам. Лично я использую эту связку на телефоне (Android). Для Android поставил приложение DAVx⁵. После установки приложения появится новый аккаунт «DAVx⁵». Добавьте аккаунт DAVx⁵ через Настройки → Аккаунты → Добавить аккаунт и введите используемый сервер. Далее в приложении «Контакты» можно указать DAVx⁵ для синхронизации и при создании новых записей в адресной книге, указывать для хранения адлресную книгу DAVx⁵. Плюс можно поставить приложение jtx Board — это менеджер задач\ведение заметок\журналов, с достаточно минималистичным дизайном и достаточным функционалом, так же синхронизируется через наш сервер Baikal.