Установка и настройка сервера календаря и адресной книги Baikal на Linux Debian / Ubuntu

Сервер Baikal устанавливается как веб-приложение. В данной инструкции мы рассмотрим установку и настройка веб-сервера, портал Baikal и подключение клиентов. Примеры команд, представленные здесь будут приведены для Debian и Ubuntu.
Готовим систему
Настройка веб-сервера
Установка NGINX
Установка и настройка СУБД
PHP и необходимые компоненты
Настройка виртуальных доменов
Ставим сервер Baikal
Загрузка и распаковка
Завершение установки
Создание пользователя с календарем и адресной книгой
Настройка клиентов
Outlook
Thunderbird
Подготовка сервера
Перед настройкой сервера выполним предварительные действия.
1. Пакеты
Обновим список пакетов в репозиториях:
apt update
На свежеустановленной системе также рекомендуется выполнить обновление пакетов:
apt upgrade
Установим пакеты:
apt install wget unzip
* где unzip — для разархивирования zip-архивов, wget — загрузки файлов.
2. Настройка брандмауэра
По умолчанию в системах Deb сетевой экран не блокирует входящие соединения. Если в вашем случае фаервол настроен за запрет пакетов, то нам нужно открыть порты 80 и 443, которые используются для веб-запросов:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Для продуктивного использования лучше использовать https. В этом случае также открываем порт 443:
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Для сохранения правил можно использовать утилиту netfilter-persistent:
apt install iptables-persistent
netfilter-persistent save
Более подробнее про настройку брандмауэра с помощью iptables можно прочитать в инструкции Настройка netfilter с помощью iptables.
Настройка веб-сервера
На официальном сайте в разделе установки приложения мы можем ознакомиться с программными требованиями. На момент последнего обновления данной инструкции необходимо было установить:
- PHP. При этом, поддерживаемую версию разработчики рекомендуют посмотреть в composer.json на гитхабе (8.1 и выше на момент обновления инструкции).
- MySQL/MariaDB или SQLite.
- Apache или Nginx.
Итого, мы будем поднимать веб-сервер на базе NGINX + MariaDB + PHP 8 с 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;
* мы создадим базу с именем baikal.
Также нам нужен пользователь для подключения к базе:
> CREATE USER 'baikal'@'localhost' IDENTIFIED BY 'baikal123';
> GRANT ALL PRIVILEGES ON baikal.* TO baikal@localhost;
* мы создали пользователя baikal для подключения от локального хоста (localhost) и предоставит доступ к базе baikal. Пароль baikal123.
Выходим из командной консоли sql:
> quit
PHP и компоненты
Для работы приложения Baikal, как говорилось выше, нужна PHP версии 8.1 и выше. Проверим, какая версия может быть установлена в системе:
apt search --names-only '^php[.0-9]{3}$'
Если нужная нам версия присутствует в репозитории, то выполняем установку командой:
apt install php
Если в системном репозитории отсутствует нужная версия, то устанавливаем интерпретатор согласно одной из инструкций Установка разных версий PHP на Linux Ubuntu или Установка разных версий PHP на Linux Debian.
Помимо самого PHP необходимо установить несколько его расширений:
- dom
- openssl
- pdo
- zlib
* данный список представлен в вышеуказанном файле composer.json на гитхабе. Поэтому необходимо свериться с ним и доустановить другие расширения, если мой список устарел.
В зависимости от того, как мы устанавливали PHP, установка расширений будет отличаться.
а) Если установка выполнялась из родного репозитория (нужная нам версия была в системе):
apt install php-dom php-pdo php-zip php-fpm
б) Если нам пришлось подключать дополнительный репозиторий PHP:
PHP_VER=8.2
* допустим, мы установили версию 8.2.
apt install php${PHP_VER}-dom php${PHP_VER}-pdo php${PHP_VER}-zip php${PHP_VER}-fpm
Настройка виртуального домена
Создаем конфигурационный файл в nginx:
vi /etc/nginx/sites-enabled/baikal.conf
server {
listen 80;
server_name dav.dmosk.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.dmosk.ru — адрес портала для календаря; /var/www/baikal/html — полный путь, по которому будут располагаться файлы приложения.
** пример конфигурационного файла взят с официального сайта.
Проверяем корректность конфига и если мы не получили ошибку, перечитываем конфигурацию:
nginx -t && nginx -s reload
Создаем каталог, в котором будут располагаться файлы Baikal (в нашем примере, /var/www/baikal/html):
mkdir -p /var/www/baikal/html
Создаем индексный файл в созданном каталоге:
vi /var/www/baikal/html/index.php
<?php echo phpversion(); echo "\n" ?>
Для проверки вводим команду:
curl --header "Host: dav.dmosk.ru" http://127.0.0.1
* где dav.dmosk.ru — имя хоста, на котором отвечает настроенный ранее виртуальный домен веб-сервера.
Мы должны увидеть версию рабочего PHP. Например:
8.2.28
Можно переходить к установке сервера календарей и адресных книг.
Установка приложения Baikal
Установку разделим на 2 этапа:
- Загрузку и копирование приложения на сервере.
- Установку приложения через веб-интерфейс.
Разберем этапы по шагам.
1. Загрузка и копирование приложения
Переходим на страницу загрузки последней версии приложения Baikal. Копируем ссылку на архив zip:
* обратите внимание, что версия на скриншоте устарела. Проект развивается и его разработчики постоянно выпускают новые версии.
Воспользовавшись ссылкой, скачиваем архив:
wget https://github.com/sabre-io/Baikal/releases/download/0.10.1/baikal-0.10.1.zip
Распакуем его:
unzip baikal-*.zip
Удаляем каталог html, который нами был создан ранее (он имеется в распакованном архиве):
rm -fr /var/www/baikal/html
Переносим содержимое распакованного архива в каталог /var/www/baikal:
mv baikal/* /var/www/baikal/
Задаем владельца для каталога:
chown -R www-data:www-data /var/www/baikal
2. Установка приложения через веб
Открываем веб-браузер и переходим по нашему адресу (в данной инструкции dav.dmosk.ru).
Адрес нашего узла должен разрешаться в IP-адрес. Для этого соответствующее имя должно быть добавлено в DNS или можно использовать файл hosts.
В открывшемся окне заполняем поля и нажимаем Save changes:
* мне нужно было поменять часовой пояс, почтовый адрес, от которого будут приходить уведомления и пароль для учетной записи администратора baikal.
В следующем окне ставим галочку Use MySQL и заполняем поля для подключения к созданной базе:
* в нашем примере сервер баз данных находится на том же сервере, что и baikal (localhost); база данных была создана с именем baikal; логин и пароль для подключения к базе — baikal / baikal123.
Кликаем по Save changes. Установка завершена — переходим к панели настройки сервера, кликнув по Start using Baikal:
Создание пользователя
Следующий шаг — создать пользователя с адресной книгой и календарем. Переходим по адресу http://<имя виртуального домена>/admin/ и авторизовываемся в системе, введя логин admin и пароль, который создали на этапе установки.
Переходим в раздел Users and resources:
Кликаем по Add user:
В открывшейся форме заполняем поля и кликаем по Save changes:
Появится учетная запись, а справа от нее возможность перейти к календарю и адресной книге:
Настройка подключения к серверу
Рассмотрим в качестве примера подключение к адресной книге и календарю программами Outlook и Mozilla Thunderbird.
Microsoft Outlook
Сначала закроем программу Outlook (если она запущена в системе).
Для синхронизации Outlook с серверов webdav необходима программа CalDav Synchronizer. Переходим на страницу https://caldavsynchronizer.org/download-2 и выбираем для загрузки последнюю версию программного обеспечения:
После загрузки устанавливаем программу, распаковав архив и запустив файл msi. На вопросы мастера просто отвечаем Далее. После установки запускаем Outlook и переходим к вкладке CalDav Synchronizer - кликаем по Synchronization Profiles:
Кликаем по значку добавления профиля:
Заполняем профиль для создания синхронизации с календарем и кликаем по Test or discover settings:
* где DAV URL должен указывать на http путь до профиля календарей пользователя. В нашем случае, это http://dav.dmosk.ru/dav.php/calendars/dmosk/default/.
Мы должны увидеть сообщение об успешной проверке подключения. Завершаем создание профиля.
Снова кликаем по значку добавления профиля:
Заполняем поля для создания синхронизации с адресной книгой:
* где http://dav.dmosk.ru/dav.php/addressbooks/dmosk/default/ — это путь до профиля адресной книги созданного нами пользователя на сервере Baikal.
... и кликаем по Test or discover settings: — мы должны получить сообщение об успешной проверке.
Готово.
Mozilla Thunderbird
Открываем почтовый клиент Mozilla Thunderbird - нажимаем Alt - в появившемся меню кликаем по Инструменты - Дополнения:
Для поиска нужного дополнения вводим tbsync:
Среди результатов поиска находим TbSync и нажимаем Добавить в Thunderbird:
Снава переходим к поиску дополнения и вводим carddav:
Среди результатов находим Provider for CalDAV & CardDAV и кликаем по Добавить в Thunderbid:
После добавления дополнений перезагружаем почтовый клиент и снова нажимаем Alt - в появившемся меню Инструменты - Настройка дополнений - TbSync:
В нижней части окна кликаем по Действия для аккаунта - Добавить новый аккаунт - CalDAV & CardDAV:
Среди шаблонов настроек выбираем Пользовательская конфигурация:
Заполняем поля для добавления профиля:
* где:
- http://dav.dmosk.ru/dav.php/calendars/dmosk/default/ — путь для запросов к серверу календаря.
- http://dav.dmosk.ru/dav.php/addressbooks/dmosk/default/ — путь для запросов к серверу адресной книги.
Нажимаем Готово:
Кликаем по галочке Разрешить и синхронизировать этот аккаунт - после ставим галочки для синхронизации адресной книги и календаря. После нажимаем Синхронизировать сейчас: