Поднимаем простой DAV server на Linux: различия между версиями
Vix (обсуждение | вклад) (Новая страница: «В использовании у меня получилось довольно много устройств — одних только ноутбуков три штуки, а еще комп на работе и смартфон. В какой-то момент я понял, что адресную книгу вот так в разброс хранить неудобно, и календарь тоже бы хотелось вести как-то ед...») |
(нет различий)
|
Версия от 19:14, 25 сентября 2025
В использовании у меня получилось довольно много устройств — одних только ноутбуков три штуки, а еще комп на работе и смартфон. В какой-то момент я понял, что адресную книгу вот так в разброс хранить неудобно, и календарь тоже бы хотелось вести как-то единообразно. Синхронизировать такое количество устройств между собой как-то очень уж неудобно получается. Вот тут и пришло время придумать, как из этого всего выпутаться. Решил я посмотреть в сторону 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 = «uk_UA»;
$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 — установка и настройка. Скачиваем архив программы со страницы http://www.inf-it.com/open-source/clients/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, где можно делать или общесистемные настройки, если есть админские права, или создавать себе дополнительные календари или адресные книги, если права обычного пользователя.
