Поднимаем простой DAV server на Linux
В использовании у меня получилось довольно много устройств — одних только ноутбуков три штуки, а еще комп на работе и смартфон. В какой-то момент я понял, что адресную книгу вот так в разброс хранить неудобно, и календарь тоже бы хотелось вести как-то единообразно. Синхронизировать такое количество устройств между собой как-то очень уж неудобно получается. Вот тут и пришло время придумать, как из этого всего выпутаться. Решил я посмотреть в сторону caldav и carddav серверов. Требования для них у меня были максимально простые — учетки брать или из LDAP, или по IMAP и наличие веб-интерфейса для просмотра календаря и адресной книги.
- Под рассмотрение попали три таких реализации:
- Baikal — не подошел. Не понравилось то, что нужно было вести отдельную базу учетных записей.
- Radicale — вещь неплохая, но вебморду к нему прикрутить не удалось, хотя на сайте сказано, что CalDavZap с ним работает. Может я не очень и старался… Да и документация на него мне как-то не понравилась. Тоже не подошел.
- Davical — А вот этотот заработал. При чем именно так, как мне и хотелось. Поэтому рассмотрим его установку и настройку:
Установка и настройка Davical В качестве серверного дистрибутива использовался Ubuntu ServerPack 12.04
Устанавливаем необходимый набор пакетов программ:
# apt-get install install postgresql apache2 php5 php5-pgsqll davical php5-curl php5-imap
После установки нужно сделать небольшую настройку postrgesql. Открываем /etc/postgresql/9.1/main/pg_hba.conf Комментируем строку
local all postgres peer
И добавляем две другие
local davical davical_app trust local davical davical_dba trust
После чего перезапускаем postgresql
# service postgresql restart
Далее нужно выполнить скрипт, который создаст нужную базу данных
# su postgres -c /usr/share/davical/dba/create-database.sh
Вывод будет примерно такой:
Supported locales updated. Updated view: dav_principal.sql applied. CalDAV functions updated. RRULE functions updated. Database permissions updated. NOTE ==== * You will need to edit the PostgreSQL pg_hba.conf to allow the 'davical_dba' database user access to the 'davical' database. * You will need to edit the PostgreSQL pg_hba.conf to allow the 'davical_app' database user access to the 'davical' database. * The password for the 'admin' user has been set to 'co/e9Ap3' Thanks for trying DAViCal! Check in /usr/share/doc/davical/examples/ for some configuration examples. For help, visit #davical on irc.oftc.net.
- Смотрим на него внимательно. Там будет админский логин и пароль в веб-и нтерфейс davical
- Создадим файл конфигурации /etc/davical/config.php
<?php
$c->authenticate_hook['call'] = 'IMAP_PAM_check';
$c->authenticate_hook['config'] = array(
'imap_url' => '{davical.local:993/imap/tls/novalidate-cert}',
);
include('/usr/share/davical/inc/drivers_imap_pam.php');
$c->domain_name = 'davical.local';
$c->sysaddr = 'davical';
$c->system_name = 'DAViCal CalDAV Server';
$c->admin_email = 'admin@davical.local';
$c->pg_connect[] = 'dbname=davical user=davical_app';
$c->default_locale = «ru_RU»;
$c->use_old_sync_response_tag = true;
?>
- Обратите внимание, на строку imap_url. Судя по их вики davical.dhits.nl тут предусматривается несколько возможных вариантов:
{localhost:143/imap/}
{localhost:143/imap/tls/}
{example.com:993/imap/ssl/}
{example.com:143/imap/tls/novalidate-cert}
- Так вот — все это работает (по крайней мере у меня) только в том случае, если в конце строки НЕ СТАВИТЬ “/”
В общем каждый прописывает эту строку с теми параметрами, с которыми ему нужно.
- Сам сервер уже настроен, но пока у нас ничего не работает. Делаем веб-интерфейсы.
- CalDavZap — установка и настройка.
Скачиваем архив программы со страницы
И распаковываем его в /var/www
Открываем его файл конфигурации и правим в нем строку globalNetworkCheckSettings:
var globalNetworkCheckSettings={href: 'http://davical.local/caldav.php/', hrefLabel: null, additionalResources: [],
forceReadOnly: null, showHeader: true, settingsAccount: true, timeOut: 30000, lockTimeOut: 10000, delegation: false,
backgroundCalendars: [], ignoreAlarms: false}
- Теперь нужно настроить авторизацию в CalDavZap
- Для этого делаем следующие настройки:
В файле auth/config.inc в двух местах в поле href нужно прописать имя нашего сервера.
При чем остальную часть пути не трогать.То есть у нас должны получиться такие строки:
'href'=>'http://davical.local/caldav.php/'.$_SERVER['PHP_AUTH_USER'].'/', 'href'=>'http://davical.local/caldav.php/resource/',
Кроме этого в файле auth/plugins/generic_conf.inc меняем значение в одной строке
$pluginconfig['base_url']='http://davical.local;
- Настройка Apache
Осталось последнее действие — настроить веб-сервер.
Создаем файл /etc/apache2/sites-available/davical и записываем в него:
<VirtualHost *:80> DocumentRoot /usr/share/davical/htdocs DirectoryIndex index.html index.php ServerName davical.local Alias /images/ /usr/share/davical/htdocs/images/ Alias /cal /var/www/caldavzap/ <Directory /usr/share/davical/htdocs/> AllowOverride None Order allow,deny Allow from all php_value include_path /usr/share/awl/inc php_value magic_quotes_gpc 0 php_value register_globals 0 php_value error_reporting «E_ALL & ~E_NOTICE» php_value default_charset «utf-8»
- Создаем ссылку на этот файл в /etc/apache2/sites-enabled/
И перезапускаем Apache
- Сейчас у нас стали доступны два веб-интерфейса
davical.local — веб-интерфейс самого Davical, где можно делать или общесистемные настройки, если есть админские права, или создавать себе дополнительные календари или адресные книги, если права обычного пользователя.
- Рекомендую сразу же зайти сюда как admin и сменить тот пароль, который мы запомнили в самом начале при установке Davical
davical.local/cal — веб-интерфейс нашего календаря
- На последок две полезные ссылки, для подключения ресурсов к внешним клиентам, например к Evolution или Outlook
davical.local/caldav.php/USERNAME/addresses — подключение адресной книги davical.local/caldav.php/USERNAME/calendar — подключение календаря.
- Не забудьте в этих ссылках заменить доменное имя и USERNAME на реально существующие
