Синхронизация календарей и контактов при помощи Baïkal в Ubuntu 14.04

Сегодня многие пользуются одновременно несколькими устройствами – планшетами, смартфонами, компьютерами, – а потому часто возникает необходимость синхронизировать эти устройства. Современные технологии позволяют синхронизировать не только файлы, но также календари и контакты, не требуя при этом изменения их формата.

Стандарты CalDAV и CardDAV предоставляют возможность синхронизировать все устройства. В данном руководстве продемонстрирована настройка синхронизации календарей и контактов сервера при помощи простого сервера CalDAV и CardDAV под названием Baïkal.

Примечание: Сервер Baïkal довольно быстрый и простой в управлении, но он не предназначен для выполнения масштабных развёртываний. 

Требования

Для выполнения руководства понадобятся:

  • Свежий сервер Ubuntu 14.04 с SSH-доступом;
  • Учётная запись пользователя с расширенными привилегиями sudo;
  • В инструкциях Baïkal настоятельно рекомендуется иметь доменное имя, желательно поддомен. В данном руководстве будет использоваться условный домен example.com.

Также понадобится установить некоторые пакеты, необходимые для работы Baïkal, и SSL-сертификат (об этом можно прочитать ниже).

1: Установка Baïkal

Сначала нужно установить зависимости Baïkal, затем загрузить архив Baïkal и распаковать его.

В этом руководстве показано, как установить последнюю поддерживаемую версию Baïkal (на момент написания статьи – 0.2.7). Посетите сайт проекта и узнайте номер последней доступной версии; для этого нажмите на кнопку Download to get started или прокрутите вниз и найдите клавишу Get Baïkal. Если на сайте есть более новая версия, скопируйте ссылку для загрузки Regular package.

Войдите на сервер через SSH.

Теперь установите пакеты, необходимые для запуска Baïkal. Учитывая, что это свежий сервер Ubuntu, обновите репозиторий пакетов при помощи команды:

sudo apt-get update

Теперь можно установить зависимости: PHP, Apache и SQLite.

sudo apt-get install apache2 php5 php5-sqlite sqlite3

Примечание: Согласно установочному файлу Baïkal, Apache может быть заменен сервером Nginx, а вместо SQLite можно использовать MySQL.

Итак, теперь необходимые пакеты установлены. Можно приступать к установке Baïkal. Поскольку сервер Baïkal основан на PHP, его нужно загрузить и извлечь в каталог сайта Apache (по умолчанию это /var/www).

cd /var/www
sudo wget http://baikal-server.com/get/baikal-regular-0.2.7.tgz
sudo tar -xvzf baikal-regular-0.2.7.tgz

Примечание: В приведённой выше команде tar использованы следующие опции:

  • x (extract) – извлечь;
  • v (verbose) – дополнительный вывод;
  • z (unzip) – распаковать;
  • f (file) – задать имя файла (в данном случае baikal-regular-0.2.7.tgz).

После извлечения файлов удалите архив, переименуйте извлечённую папку и убедитесь, что пользователь Apache имеет право на чтение и запись в ней.

sudo rm baikal-regular-0.2.7.tgz
sudo mv baikal-regular example.com
sudo chown -R www-data:www-data example.com

Примечание: Конечно, для этой папки можно выбрать любое имя; однако гораздо удобнее назвать папку доменным именем сайта (особенно в случае размещения нескольких сайтов).

2: Настройка Apache

После установки Baïkal нужно настроить Apache для поддержки этого приложения. Для простоты настройки Baïkal поставляется с шаблоном конфигурационного файла для Apache. Скопируйте этот файл в каталог sites-available и отредактируйте его.

sudo cp /var/www/example.com/Specific/virtualhosts/baikal.apache2 /etc/apache2/sites-available/example_com.conf

При помощи любого удобного текстового редактора отредактируйте файл example_com.conf, заменив все URL-ы своим URL-адресом и указав путь к месту хранения файлов сайта. В результате файл должен выглядеть следующим образом:

sudo nano /etc/apache2/sites-available/example_com.conf
<VirtualHost *:80>
DocumentRoot /var/www/example.com/html
ServerName example.com
RewriteEngine On
RewriteRule /.well-known/carddav /card.php [R,L] RewriteRule /.well-known/caldav /cal.php [R,L] <Directory "/var/www/example.com/html">
Options None
Options +FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>

Теперь нужно создать SSL-сертификат.

Вы можете создать самоподписанный сертификат или же заказать заверенный сертификат у надёжного ЦС.

Предположим, что вы следовали предложенному выше руководству по созданию самоподписанного SSL-сертификата и что ключ и сертификат хранятся в каталоге /etc/apache2/ssl и называются apache.crt и apache.key. В случае необходимости замените эти пути путями на свой сертификат и ключ.

Теперь нужно настроить Apache для поддержки этого сертификата. Для этого нужно совместить конфигурационные файлы SSL-сертификата (default-ssl.conf) и приложения Baïkal. Назовите новый конфигурационный файл example_com-ssl.conf. В раскомментированном виде этот файл выглядит примерно так:

sudo nano /etc/apache2/sites-available/example_com-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/example.com/html
ServerName example.com
RewriteEngine On
RewriteRule /.well-known/carddav /card.php [R,L] RewriteRule /.well-known/caldav /cal.php [R,L] <Directory "/var/www/example.com/html">
Options None
Options +FollowSymlinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile    /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>

Всё почти готово. На данном этапе созданы все необходимые конфигурационные файлы. Теперь нужно включить модуль rewrite и включить сайты, а затем перезапустить Apache, чтобы активировать новые настройки.

sudo a2enmod rewrite
sudo a2ensite dav_example_com
sudo a2ensite dav_example_com-ssl
sudo service apache2 restart

3: Настройка Baïkal

Остальные действия нужно выполнить в браузере. Для включения Baïkal используется файл ENABLE_INSTALL. Прежде чем открыть браузер, убедитесь, что такой файл существует. Используйте команду touch: она создаст файл, если его не существует, или же просто обновит существующий файл.

sudo touch /var/www/example.com/Specific/ENABLE_INSTALL

Чтобы завершить установку Baïkal, откройте браузер и перейдите по ссылке:

https://example.com

На экране появится мастер инициализации Baïkal. Установите часовой пояс с помощью выпадающего меню, создайте новый пароль администратора (его нужно ввести дважды), а остальные настройки можно оставить по умолчанию. Нажмите кнопку Save changes.

Следующий экран позволяет настроить SQLite или включить поддержку MySQL.

Примечание: MySQL в качестве бэкэнда увеличивает производительность Baïkal, но если этот DAV-сервер не рассчитан на большие нагрузки, SQLite вполне подойдёт.

В данном руководстве на бэкэнде используется SQLite. Завершив настройку, нажмите Save changes.

На следующей странице нажмите Start using Baïkal. Это откроет домашнюю страницу приложения.

Примечание: Если на экране вместо Baïkal появилась стандартная страница Apache, отключите стандартный сайт Apache и перезапустите веб-сервер.

sudo a2dissite 000-default.conf
sudo service apache2 reload

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

Выполнив начальную настройку Baïkal, нужно создать пользователя, после чего можно приступать к настройке синхронизации устройств.

Чтобы создать пользователя, войдите на сайт Baïkal (используйте логин admin и установленный ранее пароль).

На экране появится панель инструментов, которая показывает, какие функции включены и запущены, а также предоставляет базовые статистические данные (количество пользователей, календарей и контактов).

Создать пользователя можно в три клика:

  • Кликните Users and resources в верхней панели;
  • Кликните + Add user в правой части экрана;
  • Заполните форму и кликните Save changes.

Примечание: У сервера нет никаких требований к формату имени пользователя, но некоторые клиенты требуют указывать имя пользователя в формате электронного адреса: myuser@example.com

Устранение неполадок

В случае возникновения проблем (к примеру, пароль администратора недействителен) можно использовать несколько команд для перезапуска приложения, что позволит вам выполнить его повторную настройку. Для этого вернитесь на сервер и запустите следующие команды.

Не делайте этого, если сервер работает должным образом!

cd /var/www/example.com/Specific/
sudo rm config*.php
sudo touch ENABLE_INSTALL

Теперь можно вернуться в веб-браузер и снова запустить мастер инициализации.

Заключение

Сервер синхронизации CalDAV и CardDAV успешно установлен! Теперь нужно настроить подключение клиентов к этому серверу. При этом используйте https://example.com в качестве имени хоста.

Tags: , , , , , , ,

2 комментария

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