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.