Установка CalDAV / CardDAV сервиса Davical 1.1.5 + LDAP на CentOS 6.8
CalDAV (Calendaring Extensions to WebDAV) - это сетевой протокол, расширяющий WebDAV и позволяющий синхронизировать информацию о планировании времени между клиентами и сервером. Он позволяет пользователям синхронизировать свой календарь с CalDAV-сервером и использовать его на различных устройствах. CardDAV (vCard Extensions to WebDAV) - это открытый Интернет-стандарт для взаимодействия с информацией в адресных книгах. Он позволяет клиентам CardDAV обращаться к адресным книгам, хранимым на сервере, и синхронизировать контактную информацию между устройствами.
Скачиваем davical и awd
1
2
$ wget https://gitlab.com/davical-project/awl/repository/archive.tar.gz?ref=master -O awl.tar.gz
$ wget https://gitlab.com/davical-project/davical/repository/archive.tar.gz?ref=master -O davical.tar.gz
Распаковываем
1
2
$ tar -xzf awl.tar.gz
$ tar -xzf davical.tar.gz
Перемещаем
1
2
$ sudo mv awl-master-4c75c662e8605ed54ba4b8e65e4c3a8cc773052f/ /usr/share/awl
$ sudo mv davical-master-8313f765ce89f752af77e0e0a90f3d1f5981b5b5/ /usr/share/davical
Меняем права
1
2
$ sudo chmod 755 -R /usr/share/awl/
$ sudo chmod 755 -R /usr/share/davical/
Устанавливаем postgresql 9.6
1
2
$ sudo rpm -Uvh https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
$ sudo yum install postgresql96-server postgresql96 postgresql96-lib
Инициализируем базу данных
1
$ sudo service postgresql-9.4 initdb
Запускаем сервис и добавляем в автозагрузку
1
2
$ sudo service postgresql-9.4 start
$ sudo chkconfig postgresql-9.4 on
Настраитваем PostgreSQL 9.6 меняем listen_addresses = 'localhost'
на listen_addresses = '*'
1
$ sudo nano /var/lib/pgsql/9.6/data/postgresql.conf
Разрешаем доступ без авторизации (не безопасно)
1
2
3
4
5
6
7
8
$ sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
...
# "local" is for Unix domain socket connections only
local all all trust
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 trust
local davical davical_app trust
local davical davical_dba trust
Открывает порт в iptables
1
$ sudo nano /etc/sysconfig/iptables
Добавляем строчку:
1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
Перезагружаем postgresql и файерволл
1
2
$ sudo service postgresql-9.6 restart
$ sudo service iptables restart
Продолжаем установку davical
, инициализируем базу
1
$ sudo su - postgres -c /usr/share/davical/dba/create-database.sh
Если база инициировалась успешно, высветится сообщение, где будет указан логин и пароль
1
2
3
4
5
6
7
8
9
10
11
Supported locales updated.
Updated view: dav_principal.sql applied.
CalDAV functions updated.
RRULE functions updated.
Database permissions updated.
NOTE
====
* The password for the 'admin' user has been set to 'password'
Thanks for trying DAViCal! Check the configuration in /etc/davical/config.php.
For help, look at our website and wiki, or visit #davical on irc.oftc.net.
Если не получилось создать базу, разбираемся в чем проблема, удаляем не до конца созданную базу
1
$ sudo su postgres -c "dropdb davical"
У меня проблема возникла из-за не правильной настроки postgresql
, точнее из-за строчки в файле pg_hba.conf
1
local all all trust
Конфигурационный файл Apache (/etc/httpd/virtual/davical.local)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DocumentRoot /usr/share/davical/htdocs
DirectoryIndex index.php index.html
ServerName calendar.domainnamehere.com
ServerAlias davical.domainnamehere.com
Alias /images/ /usr/share/davical/htdocs/images/
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"
ErrorLog "logs/calendar.domainnamehere.com-error_log"
CustomLog "logs/calendar.domainnamehere.com-access_log" common
Конфигурационный файл davical (/usr/share/davical/config/config.php)
1
2
3
4
5
6
7
<?php
$c->domain_name = "davical.local";
$c->sysabbr = 'davical';
$c->admin_email = '[email protected]';
$c->system_name = "Example DAViCal Server";
$c->pg_connect[] = 'dbname=davical user=davical_app';
$c->default_locale = "ru_RU";
Конфигурационный файл davical+ldap (/usr/share/davical/config/config.php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
$c->pg_connect[] = "dbname=davical user=davical_app";
$c->system_name = "DAViCal CalDAV Server";
$c->readonly_webdav_collections = false;
$c->admin_email ='[email protected]';
$c->collections_always_exist = true;
$c->template_usr = array( 'active' => true,
'locale' => 'ru_RU',
'date_format_type' => 'E',
'email_ok' => date('Y-m-d')
);
$c->schedule_private_key = 'PRIVATE-KEY-BASE-64-DATA';
$c->external_refresh = 60;
$c->support_obsolete_free_busy_property = true;
$c->authenticate_hook['call'] = 'LDAP_check';
$c->authenticate_hook['config'] = array(
'host' => '192.168.1.2',
'port' => '389',
'bindDN' => 'admin@DOMAIN',
'passDN' => 'password',
'baseDNUsers' => 'dc=domain,dc=local',
// 'filterUsers' => 'objectClass=InetOrgPerson',
'protocolVersion' => 3,
'optReferrals' => 0,
'filterUsers' => '(&(objectcategory=person)(objectclass=user)(givenname=*))',
'mapping_field' => array('username' => 'sAMAccountName',
'updated' => 'whenChanged',
'fullname' => 'cn' ,
'email' => 'mail'),
'default_value' => array("date_format_type" => "E","locale" => "ru_RU"),
// 'default_value' => array("date_format_type" => "E","locale" => "en_NZ"),
'format_updated' => array('Y' => array(0,4),'m' => array(4,2),'d'=> array(6,2),'H' => array(8,2),'M'=>array(10,2),'S' => array(12,2))
// 'scope' => 'subtree',
);
//
// /* If there is some user you do not want to sync from LDAP, put their username in this list */
$c->do_not_sync_from_ldap = array( 'admin' => true );
include('drivers_ldap.php');
$c->default_locale = "ru_RU";
$c->domain_name = "davical.local";
$c->local_tzid = 'Europe/Moscow';
$c->allow_get_email_visibility = true;