вторник, 2 октября 2012 г.

Как я искал, устанавливал и настраивал сервер общих календарей.

Хочу рассказать о своем опыте поиска, выбора, установки, настройки и использования сервера общих календарей.
Начальство поставило задачу: "Нужны общие календари!". Что именно, какой функционал и вообще для каких целей, сразу узнать мне не удалось, поэтому я просто кинулся в интернет, чтобы поискать и найти хороший, годный сервер. Естественно, одним из главных условий было, чтобы этот сервер нам обошелся забесплатно, ну или, хотя бы, недорого.
Картинка для привлечения внимания.
Сначала я вообще не знал, что нужно именно сервер календарей, поэтому искал поначалу какой-нибудь сервер совместной работы. Нашел несколько вариантов. Предоставил начальству. Выбрали сначала Zimbra Collaboration Suite (википедия). Очень хорошая и мощная вещь, да еще и от VMware! Там вам и почта, и файловое хранилище (у каждого пользователя свое, но можно шарить его), и календари, и тонкая настройка всех этих дел, и еще кучи настроек, о которых я вообще даже сейчас мало понятия имею. Поставил, посмотрел - красота! Показал начальству. Сказали, что САМЫЙ ГЛАВНЫЙ НАЧАЛЬНИК хочет, чтобы все это чудо дружило с Аутлуком, что от Дядюшки Билла. А еще чтобы и с айфонами дружил (конечно, желательно без сторонних приложений), и с андроидами. Посмотрел я в возможности Зимбры. Сначала обрадовался, есть там все это, да только потом огорчился. Zimbra Collaboration Suite: Open Source Edition - это бесплатная версия и именно в ней всех этих возможностей нет, зато есть они в платной версии Zimbra Network Edition (сравнение версий), да не просто в платной, а в платной профессиональной. Прикинул я, во сколько нам она обойдется (на наше количество пользователей) - получилось около 9000 евро. Ну я начальству-то эту цифру кинул, на всякий случай, но сам понимал, какой будет ответ. Так и вышло.

Забросил я вариант с Зимброй. Стал искать дальше. Находил в основном лишь серверы совместной работы. Я уже понял, что нам это не подойдет, по причине того, что в таких серверах уже обычно и почта есть своя и еще куча ненужных прибамбасов, которые абсолютно нам не нужны. Но почтовый сервер у нас есть настроенный и переносить его нет смысла лишь из-за календарей, а прибамбасы пока что тоже не нужны. Как понадобятся - найдем.
Подумав, я упрекнул себя, что не может такого быть, чтобы во всех интернета лишь мне нужна была такая конфигурация (только календари, максимум еще контакты, без всяких лишних примочек) и значит я плохо ищу. Потом понял, что в русских интернетах такого нет. Значит надо сёрчить иностранные. Начал активно искать какие-либо самостоятельные календарные серверы, причем мне не принципиально было, чтобы там был веб-интерфейс и визуальная настройка,достаточно было, чтобы настройка была возможна хотя бы через консоль.
Сначала нашел довольно удобный сервер Bedework. На первый взгляд довольно годный и удобный. Правда с установкой я немного помучался. Вроде quickstart работает, но при попытке его развернуть нормально, у меня выскакивали то одна проблема, то другая. В итоге вроде нормально удалось его на сервере развернуть, но, как обычно, не повезло, при попытке добавить пользователя в базу, выскакивала ошибка, что добавление невозможно. Поискав в интернете, нашел вопрос пользователя разрабам насчет этой ошибки (правда там вопрос задавался под винду, но суть одна и та же), но ответа от них так и не было получено. Решив забросить эту гиблую идею, начал копать дальше.
Нашел Darwin Calendar Server (как я понял - это офицальный Эппловский серв). Точнее нашел я его раньше, но сразу не разобрался, как поставить и настроить (не нашел мануалов) и взялся за Bedework. Так вот, я решил попробовать заняться им. Еще немного упорно полазил в интернете и нашел несколько довольно годных и подробных мануалов (к примеру тут и тут). Поставил по ним, настроил. Попробовал в Lightning'е (плагин для Mozilla Thunderbird - клиента почты, который использует 99% сотрудников организации). Заработало! Все пашет норм! Фух! Теперь дело за малым - подружить его с Аутлуком. Посмотрев, нашел Outlook Openconnector. Поставил. Пробую. Что-то не то. Не получается (аутлук ставил 2010 - триальный скачал с сайта микрософтов). Это плохо, конечно. Поупорствовал пару-тройку дней, понастраивал, поискал в инете. В итоге нашел один замечательный сайт, где есть примеры нескольких разных коннекторов для аутлука. И вот там внизу напротив OpenConnector написано, что он уже давным-давно не поддерживается. А я-то, дурачок, упорствовал. Взял едиственный рабочий коннектор из приведенного списка (поддержка остальных заглохла еще где-то в 2008 году), начал исследовать его.
Сразу скажу - программа рабочая и очень хорошая. Работает с большинством серверов календарей, существующих на текущий момент. Даже пробовали настроить его на сервер, который не заявлен в официальном списке серверов, которые им поддерживаются - все получилось с первого раза! И стоит недорого - всего 20 евро (себе бы я не стал брать, а вот для организации такие деньги - пшик).
Так вот, быстренько настроил, подключил к аутлуку - работает! Отлично! Надо теперь потестить. Потестил - вроде норм. Пошел с работы домой, оставив коннектор работать в фоне (там есть такая функция), утром прихожу - оишбка 404 выскочила в процессе работы ночью при попытке одной из синхронизаций. Смотрим логи сервера, логи апача - вроде никаких проблем особых нет. Странно. Ну мало ли, может глюкнула. Еще раз тестим, ставим на ночь - то же самое. Блин, ладно, покажу начальству, вдруг у них норм заработает, у меня-то комп уже засран всякими программами по самое не балуй. Отправил ссылку, описание, инструкцию, как ставить. Чреез неделю только получилось проверить - ошибка 404. Бида-бида. Начал искать, в чем проблема. Ничего толком нигде нет. Нашел несколько форумов, где высвечивается подобная ошибка, на одном написано, что надо в настройках изменить тип авторизации (попробовал - не помогло), на другом написано, что человек просто сделал авторизацию через LDAP, но у нас такое реализовать нельзя. Нашел даже один форум, что меня больше всего позабавило: "Тема: Бла-бла-бла, ошибка 404, кто может помочь?", 1-й комментарий - "Помочь не могу, но могу сказать, что у меня такая же ошибка", 2-й комментарий - "Тоже не могу помочь, но тоже столкнулся с такой ошибкой. Поставил другой сервер." и так далее.
В общем, САМОМУ ГЛАВНОМУ НАЧАЛЬНИКУ в таком виде показывать все это нельзя, поэтому стал искать еще вариант.
В общем, в данный момент решили попробовать сервер DAViCal. Так вот - это самый годный и самый рабочий сервер из всех, которые я пробовал. Установка простейшая, единственное, что может для кого-нибудь предоставить трудности, она требует PostgreSQL. Но инструкции по установке сервера БД тоже ищутся легко. Из преимуществ DAViCal могу сразу сказать - нормальная безглючная работа (поставили еще пару недель назад, тестили разнообразно - все отлично), с ним нормально работает iCal4OL (никаких ошибок не выскакивает и нормально синхронизирует), есть веб-интерфейс (у Bedework и Darwin Calendar Server их не было, пользователей добавляешь вручную через консоль), простая установка и практически не требует настройки.

---------------------------------------------------------------------------------------------------------------
Краткая инструкция по установке DAViCal для не умеющих в английский язык :) :



Для установки DAViCal необходимо сначала установить и подключить PostgreSQL.
Инструкция по установке PostgreSQL: apt-get install postgresql
После этого создаем базу данных, как указано в инструкции на офсайте DAViCal (http://davical.dhits.nl/index.php?title=Debian) пункты Connecting to the Database и Creating and Building the Database. Если создать базу не получается с первого раза, мне помогло полное ее удаление, а потом создание заново. :3

После этого настраиваем апач. В папке sites-available, в файле default, у меня такая запись (использую виртуал-хост):


# Virtual Host def for Debian packaged DAViCal

<VirtualHost davical.srv.orgname.ru >

DocumentRoot /usr/share/davical/htdocs

DirectoryIndex index.php index.html

ServerName davical.srv.orgname.ru

ServerAlias davical.srv.orgname.ru

Alias /images/ /usr/share/davical/htdocs/images/

<Directory /usr/share/davical/htdocs/>

AllowOverride None

Order allow,deny

Allow from all

</Directory>

AcceptPathInfo On

#

# You probably don't need to enable any of these sorts of things other than in exceptional

# circumstances. Apart from the include path (which DAViCal will discover if it is anywhere

# 'normal') they are the default in newer PHP versions. 

#

php_value include_path /usr/share/awl/inc

php_flag magic_quotes_gpc off

php_flag register_globals off

php_value error_reporting "E_ALL & ~E_NOTICE"

php_value default_charset "utf-8"

</VirtualHost>

На офсайте еще указана возможность настройки без виртуал-хоста, но я не пробовал, потому что не было такой надобности, все заработало нормально и так. Поэтому и манипуляции типа "edit /etc/php5/apache2/php/ini in order to change the PHP include path to include the AWL include directory" мне не понадобились.

После всего этого перезапускаем апач и, если еще не перезапускали, PostgreSQL.



Теперь надо настроить сам DAViCal: необходимо в папке с конфигами (у меня это папка /etc/davical/) создать файл с названием <имя, по которому обращаетесь к серверу>-conf.php , в котором должны быть следующие строки:

<?php

$c->domain_name = '<имя, по которому обращаетесь к серверу>'; //на офсайте такой строки нет, но я много рылся и нашел, что у кого-то она была, решил попробовать, сейчас убирать уже  лень, поэтому пусть будет. :)
$c->sysaddr = 'davical'; //этой строки тоже на офсайте нет, но, как было сказано чуть выше...
$c->system_name = 'DAViCal CalDAV Server';
$c->admin_email = '<имейл админа>';
$c->pg_connect[] = 'dbname=davical user=davical_app';
$c->default_locale = "ru_RU";
?>


К примеру, у меня имя конфига выглядело примерно так: davical.srv.orgname.ru-conf.php 
И вот таких конфигов необходимо создать столько, по скольким именам вы собираетесь обращаться к серверу. То есть, если планируете обращаться кроме имени, еще и по IP, то и конфиг нужно создать еще и такой: 192.168.1.123-conf.php



--------------------------------------------------------------------------------------------------------------------


Сервер показал своему начальству, там заценили, одобрили. Потом сообщили, что САМЫЙ ГЛАВНЫЙ НАЧАЛЬНИК хочет, чтобы работала фича приглашения на встречи (это, как я понял одна из основных фич, которые используются в общих календарях). Попробовали. Столкнулись с проблемой, что нельзя кинуть приглашение. То есть оно вроде бы отправляется, но никуда не приходит. Пробовали разными способами решить проблему, в итоге получилась такой гайд:

Для начала в кратце общий принцип как всё работает.
Сервер поддерживает только календарь. Он позволяет смотреть свой календарь, и
подглядывать в чужой.
События в календарь вносятся только самим владельцем календаря. В чужой
календарь ничего внести нельзя.
События передаются только электронной почтой. Через сервер ничего не передаётся.
Цикл события такой: Организатор создаёт событие, вносит его себе в календарь,
рассылает приглашения по электронной почте, участники получают приглашения и
вносят их себе в календари самостоятельно (добробольно, т.е. хотят-вносят, не
хотят - не вносят).
Таким образом, чтобы всё работало, требуется: 1) работоспособный функционал
просмотра занятости участников (подглядеть чужой календарь); 2) работоспособный
функционал отправки приглашений. Как следствие - Sunbird для коллективной работы
не подходит, т.к. никак не связано с электронной почтой а значит рассылать
приглашения не умеет, работает только со своим календарём. 
  1. Для корректной работы функционала просмотра занятости участников требуется отключить кеширование (в клиенте Мозиллы)! Оказалось оно глючит.
  2. Для корректной работы отправки приглашений требуется чтобы адрес электронной почты в календаре совпадал с адресом электронной почты одной из учётных записей электронной почты. При создании события высвечивается окошко с предложением отправить приглашения. Если такое окошко не высвечивается, значит нет аккаунта электронной почты с адресом как в календаре.Нажимаем ОК, приглашения рассылаются.



Ну вот, в итоге как-то так я искал, устанавливал и настраивал серверы календарей. Да, наверное, все это как-то бестолково было, но в начале поисков я даже толком не понимал, что нам необходимо.
Надеюсь эта статья поможет тем 3,5 человекам, которые когда-нибудь заглянут сюда. И если, вдруг, они захотят задать какие-либо вопросы, милости прошу к нашему шалашу.


ОЧЕНЬ ВАЖНЫЙ ПОСТСКРИПТУМ: Все настройки, описанные в этой статье актуальны для davical версии 0.9.9.3. На других версиях не факт, что все настраивается идентично. В частности, к примеру, в новых версиях путь к календарю прописывается по-другому (что даже указано на сайте продукта): In older versions of DAViCal (pre 0.9.9.5) the default calendar was named 'home' and there was no default addressbook.

23 комментария:

  1. http://baikal-server.com/ Этот полностью соответствует Вашим требованиям.. Тут все может работать и с другим транспортом для приглашения.

    ОтветитьУдалить
    Ответы
    1. Спасибо большое за совет.
      Насколько помню, этот сервер тоже рассматривал мельком, но, по каким-то причинам (сейчас уже не вспомню, по каким точно - давно это было) он нас тоже не устроил. Хотя сервер, насколько я понял, тоже неплохой.
      Сейчас, вот уже год, как используем ту связку, которая описана в этой статье.

      Удалить
  2. У Вас двач головного мозга

    ОтветитьУдалить
  3. Здравствуйте!
    Во-первых, большое спасибо за хорошую статью.
    А во-вторых, хотелось бы получить совет.:)
    Сейчас пытаюсь настроить DAViCal.
    Пункты Connecting to the Database и Creating and Building the Database по официальному ману выполнил.
    Проблема похоже с настройкой апача/DAViCal.
    В апаче строчки должны быть любыми, или зависеть от доменного имени компьютера?
    VirtualHost davical.srv.orgname.ru
    ServerName davical.srv.orgname.ru
    ServerAlias davical.srv.orgname.ru
    Просто не получается войти через браузер в веб-интерфейс Davical...
    Подскажите, пожалуйста, как через адресную строку браузера войти в админку?
    Заранее спасибо.

    ОтветитьУдалить
    Ответы
    1. В апаче строчки должны быть внесены те, по которым идет обращение к этому компьютеру в сети или из интернета. То есть, если ваш сервер с календарем называется vasya-pupkin.ooovektor.ru (или на DNS-сервере он прописан так), тогда и в виртуал-хосте прописывать надо то же самое.
      Если все установлено правильно, тогда зайти в веб-интерфейс необходимо по тому же адресу: vasya-pupkin.ooovektor.ru - появится веб-форма входа в админку. Вбиваете логин-пасс и входите.

      Удалить
    2. Спасибо за быстрый ответ.
      Насколько я понимаю, имя компьютера хранится в /etc/hostname и /etc/hosts.
      У меня admind.desktop.
      Конфиг /etc/apache2/sites-available/default:
      # Virtual Host def for Debian packaged DAViCal


      DocumentRoot /usr/share/davical/htdocs
      DirectoryIndex index.php index.html
      ServerName admind.desktop
      ServerAlias admind.desktop
      Alias /images/ /usr/share/davical/htdocs/images/

      AllowOverride None
      Order allow,deny
      Allow from all

      AcceptPathInfo On
      #
      # You probably don't need to enable any of these sorts of things other than in exceptional
      # circumstances. Apart from the include path (which DAViCal will discover if it is anywhere
      # 'normal') they are the default in newer PHP versions.
      #
      php_value include_path /usr/share/awl/inc
      php_flag magic_quotes_gpc off
      php_flag register_globals off
      php_value error_reporting "E_ALL & ~E_NOTICE"
      php_value default_charset "utf-8"


      При перезапуске апача усиленно ругается:

      [Wed Dec 04 11:10:02 2013] [warn] VirtualHost admind.desktop:0 overlaps with VirtualHost admind.desktop:0, the first has precedence, perhaps you need a NameVirtualHost directive
      [Wed Dec 04 11:10:02 2013] [warn] NameVirtualHost *:80 has no VirtualHosts
      ... waiting [Wed Dec 04 11:10:04 2013] [warn] VirtualHost admind.desktop:0 overlaps with VirtualHost admind.desktop:0, the first has precedence, perhaps you need a NameVirtualHost directive
      [Wed Dec 04 11:10:04 2013] [warn] NameVirtualHost *:80 has no VirtualHosts

      Доступа к админке http://admind.desktop/, соответственно никакого нет...

      Удалить
    3. Криво скопировал. Конфиг апача такой:


      # Virtual Host def for Debian packaged DAViCal


      DocumentRoot /usr/share/davical/htdocs
      DirectoryIndex index.php index.html
      ServerName admind.desktop
      ServerAlias admind.desktop
      Alias /images/ /usr/share/davical/htdocs/images/

      AllowOverride None
      Order allow,deny
      Allow from all

      AcceptPathInfo On
      #
      # You probably don't need to enable any of these sorts of things other than in exceptional
      # circumstances. Apart from the include path (which DAViCal will discover if it is anywhere
      # 'normal') they are the default in newer PHP versions.
      #
      php_value include_path /usr/share/awl/inc
      php_flag magic_quotes_gpc off
      php_flag register_globals off
      php_value error_reporting "E_ALL & ~E_NOTICE"
      php_value default_charset "utf-8"

      Удалить
    4. Это парсер режет все непонятные "теги".
      Попробуйте во все места, где вводите имя компа, ввести вместо него свой IP-адрес и потом в браузере ввести IP-адрес, вместо имени компа.
      Если не получится, тогда гуглите по ошибкам, которые выдает апач. Либо можете спросить, к примеру, на toster.ru или на admin.hashcode.ru

      Удалить
    5. Похоже, проблема в конфигурационном файле davical.
      Если удалить в /etc/davical/ php-шный файл кофигурации, то появляется окно с инфой что конфигурация не настроена.
      Если создать файл, то после ввода белая страница в браузере...

      Удалить
  4. Вроде бы все получилось, админка доступна, завожу пользователей, пароли.
    Но осталась еще проблема.
    При подключении календаря Thunderbird пишет что календарь временно недоступен.
    В браузере вводим http://%server_IP_addres%/caldav.php/%username%/calendar то выводит окно запроса логина-пароля.
    Ввожу логин пароль файл календаря становится доступным для открытия/скачивания.
    Подскажите, как можно исправить это?
    Ведь при подключении календаря в Thunderbird данных для аутентификации(пароль) указать нельзя…

    ОтветитьУдалить
    Ответы
    1. Вводите в Thunderbird следующее:
      http://%server_IP_addres%/caldav.php/%username%/home

      Удалить
    2. Все равно недоступно. Так же появляется окно c запросом логина-пароля "«http://10.0.0.88» запрашивает имя пользователя и пароль. Сайт сообщает: «DAViCal CalDAV Server»".
      Хотя вроде здесь http://www.davical.org/clients.php написано обращаться к .../calendar.
      Возможно, надо разрешить доступ клиентским компьютерам к базе davical(как то-так):
      host davical davical_app 10.0.0.1/8 trust
      Буду пробовать.

      Удалить
  5. Есть еще один вопрос.
    Пользователи, календари созданы, права доступа раздал.
    Если приглашаю другого сотрудника на событие в моем календаре, то у сотрудника только активируется строка снизу Thunderbird-a «Приглашения:1″. И никакого оповещения в виде письма на входящий ящик сотрудника. И, соответственно, если сотрудник примет/отклонит мое приглашение, то я не получаю никакого уведомления от него и не узнаю согласился или отказал он…
    Подскажите, пожалуйста, как выглядит это у Вас(есть ли уведомления на почтовые ящики)?
    PS Кэширование отключено, адреса в календаре пользователей совпадают с адресами учетных записей почты.
    Причем для локальных календарей и ics отправка работает без проблем. В Caldav календарях галочка "Уведомить участников" стоит и заблокирована.

    ОтветитьУдалить
    Ответы
    1. Вот так примерно все это выглядит. http://imgur.com/1JanZRz

      Удалить
    2. Спасибо за ответ. У меня беда начинается на моменте подтверждения приглашения участников http://imgur.com/P40bCuE
      Галочка заблокирована и дальше окно с подтверждением отправки уведомлений не появляется. Как и писем с приглашениями в ящиках приглашенный. Возможно как-то cвязаться с Вами и сверить конфиг davical? Думаю все-таки загвоздка в нем. Или конфиг, приведенный выше, остался неизменным?

      Удалить
    3. И, если не сложно, какая версия davical+awl на сервере а также thunderbird+lightning на клиенте у Вас?

      Удалить
    4. В моем профиле указан мой адрес электронной почты.

      Удалить
  6. А мы пользуемся плагином EVO Collaborator for Outlook, который подружил Zibmra и Outlook http://alex-golubev85.livejournal.com/2592.html

    Данный плагин кроме всего поддерживает синхронизацию с iPhone, Gmail, Yandex и DAViCAL (в бета-режиме)

    ОтветитьУдалить
  7. жаль, что затухло ...я вотне понимаю почему после того как юзеры наполнились в справочник из ЛДАпа , их не видно в адресной книге . И по ходу только у меня )))

    ОтветитьУдалить
    Ответы
    1. да нет - у меня тоже непонятка .. пользователи синхранизировались из ЛДАП а в адресном справочнике пусто .. если руками создовать - то да они там появляются
      мне нужно , чтобы адресная книга была заполнена данными из LDAP: телефон, электронная почта. и другие данные, которые есть в LDAP.

      Удалить
  8. Спасибо. Реально годная статья.

    ОтветитьУдалить
  9. VarangaOfficial - купить варанга в москве - проверенные и достоверные факты. Воспользовавшись услугами нашего ресурса, вы получите возможность узнать всеисчерпывающую информацию касательно этого натурального лекарственного комплекса. Увидеть данные о клиническом тестировании геля, прочесть реальные отзывы пользователей и медицинского персонала. Ознакомиться с инструкцией по применению, прочесть особенности и методы работы комплекса, уяснить, почему крем Варанга настолько эффективен, где можно купить оригинальный сертифицированный препарат и, как не нарваться на фальсифицированный товар. Мы очень тщательно и скурпулезно проверяем публикуемые данные. Предоставляем посетителям нашего онлайн-ресурса сведения, которые были взяты исключительно из надежных источников. Если вы нашли у себя признаки грибка или же долго и безрезультатно стараетесь избавиться от этого неприятного коварного недуга, наш сайт покажет вам простой и быстрый способ устранения проблемы. Приобщайтесь и живите полноценной, здоровой жизнью. Мы собрали ответы на все вопросы на одном информационном ресурсе.

    ОтветитьУдалить

Напишите свой комментарий. Можно даже анонимно.