Поднимаем простой DAV server на Linux: различия между версиями

Материал из support.qbpro.ru
Нет описания правки
Нет описания правки
 
(не показаны 3 промежуточные версии этого же участника)
Строка 57: Строка 57:
  $c->admin_email = 'admin@davical.local';
  $c->admin_email = 'admin@davical.local';
  $c->pg_connect[] = 'dbname=davical user=davical_app';
  $c->pg_connect[] = 'dbname=davical user=davical_app';
  $c->default_locale = «uk_UA»;
  $c->default_locale = «ru_RU»;
  $c->use_old_sync_response_tag = true;
  $c->use_old_sync_response_tag = true;
  ?>
  ?>
Строка 73: Строка 73:
* Сам сервер уже настроен, но пока у нас ничего не работает. Делаем веб-интерфейсы.
* Сам сервер уже настроен, но пока у нас ничего не работает. Делаем веб-интерфейсы.


CalDavZap — установка и настройка.
* '''CalDavZap''' — установка и настройка.
Скачиваем архив программы со страницы http://www.inf-it.com/open-source/clients/caldavzap/
Скачиваем архив программы со [http://www.inf-it.com/open-source/clients/caldavzap/ страницы] <br>
И распаковываем его в /var/www
И распаковываем его в /var/www
Открываем его файл конфигурации и правим в нем строку globalNetworkCheckSettings
Открываем его файл конфигурации и правим в нем строку globalNetworkCheckSettings:
  var globalNetworkCheckSettings={href: 'http://davical.local/caldav.php/', hrefLabel: null, additionalResources: [],  
  var globalNetworkCheckSettings={href: 'http://davical.local/caldav.php/', hrefLabel: null, additionalResources: [],  
  forceReadOnly: null, showHeader: true, settingsAccount: true, timeOut: 30000, lockTimeOut: 10000, delegation: false,  
  forceReadOnly: null, showHeader: true, settingsAccount: true, timeOut: 30000, lockTimeOut: 10000, delegation: false,  
  backgroundCalendars: [], ignoreAlarms: false}
  backgroundCalendars: [], ignoreAlarms: false}


Теперь нужно настроить авторизацию в CalDavZap
* Теперь нужно настроить авторизацию в CalDavZap
Для этого делаем следующие настройки:
** Для этого делаем следующие настройки:
В файле auth/config.inc в двух местах в поле href нужно прописать имя нашего сервера. При чем остальную часть пути не трогать. То есть у нас должны получиться такие строки:
В файле auth/config.inc в двух местах в поле href нужно прописать имя нашего сервера.<br>
При чем остальную часть пути не трогать.То есть у нас должны получиться такие строки:
  'href'=>'http://davical.local/caldav.php/'.$_SERVER['PHP_AUTH_USER'].'/',
  'href'=>'http://davical.local/caldav.php/'.$_SERVER['PHP_AUTH_USER'].'/',
  'href'=>'http://davical.local/caldav.php/resource/',
  'href'=>'http://davical.local/caldav.php/resource/',
Строка 90: Строка 91:
  $pluginconfig['base_url']='http://davical.local;
  $pluginconfig['base_url']='http://davical.local;


Настройка Apache
* Настройка '''Apache'''
Осталось последнее действие — настроить веб-сервер.
Осталось последнее действие — настроить веб-сервер.<br>
Создаем файл /etc/apache2/sites-available/davical и записываем в него
Создаем файл /etc/apache2/sites-available/davical и записываем в него:
  <VirtualHost *:80>
  <VirtualHost *:80>
  DocumentRoot /usr/share/davical/htdocs
  DocumentRoot /usr/share/davical/htdocs
Строка 114: Строка 115:
И перезапускаем Apache
И перезапускаем Apache


Сейчас у нас стали доступны два веб-интерфейса
* Сейчас у нас стали доступны два веб-интерфейса
davical.local — веб-интерфейс самого Davical, где можно делать или общесистемные настройки, если есть админские права, или создавать себе дополнительные календари или адресные книги, если права обычного пользователя.
davical.local — веб-интерфейс самого Davical, где можно делать или общесистемные настройки, если есть админские права, или создавать себе дополнительные календари или адресные книги, если права обычного пользователя.
<hr>
* Рекомендую сразу же зайти сюда как admin и сменить тот пароль, который мы запомнили в самом начале при установке Davical
davical.local/cal — веб-интерфейс нашего календаря
* На последок две полезные ссылки, для подключения ресурсов к внешним клиентам, например к Evolution или Outlook
davical.local/caldav.php/USERNAME/addresses — подключение адресной книги
davical.local/caldav.php/USERNAME/calendar — подключение календаря.
* Не забудьте в этих ссылках заменить доменное имя и USERNAME на реально существующие
<hr>
<hr>
* [https://habr.com/ru/articles/212621/ Источник]
* [https://habr.com/ru/articles/212621/ Источник]

Текущая версия от 20:06, 25 сентября 2025

В использовании у меня получилось довольно много устройств — одних только ноутбуков три штуки, а еще комп на работе и смартфон. В какой-то момент я понял, что адресную книгу вот так в разброс хранить неудобно, и календарь тоже бы хотелось вести как-то единообразно. Синхронизировать такое количество устройств между собой как-то очень уж неудобно получается. Вот тут и пришло время придумать, как из этого всего выпутаться. Решил я посмотреть в сторону caldav и carddav серверов. Требования для них у меня были максимально простые — учетки брать или из LDAP, или по IMAP и наличие веб-интерфейса для просмотра календаря и адресной книги.

  • Под рассмотрение попали три таких реализации:
  1. Baikal — не подошел. Не понравилось то, что нужно было вести отдельную базу учетных записей.
  2. Radicale — вещь неплохая, но вебморду к нему прикрутить не удалось, хотя на сайте сказано, что CalDavZap с ним работает. Может я не очень и старался… Да и документация на него мне как-то не понравилась. Тоже не подошел.
  3. 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 на реально существующие