Наконец-то получилось прикрутить CalDav календарь к Roundcube

Прошло уже примерно 2 года с того момента, как я перестал пользоваться бесплатными почтовыми серверами и полностью переехал на свой собственный почтовик. То есть всё моё почтовое хозяйство крутится на моём собственном виртуальном сервере, доступ на который есть только у меня*. То есть у меня есть некоторые основания считать, что сейчас моя почта никем не сканируется и не пополняет чью-нибудь базу знаний о пользователях. Но сейчас не об этом.

Удобно, когда кроме стандартных почтовых программ можно получить доступ к почте из любого браузера через веб-интерфейс. (Например, если политика безопасности в офисе разрешает исходящие соединения с рабочих компьютеров только на http/https.) И для этих целей у меня настроена веб-почта Roundcube.

Рис. 1

Эта самая Roundcube прекрасно работает, но для того, чтобы она умела работать с моим сервером контактов, доступным по протоколу CardDav, а также с моим сервером календаря, доступным по протоколу CalDav, приходится прилагать дополнительные усилия.

И контакты, и календарь прикручиваются с помощью специальных плагинов для Roundcube.

С контактами всё просто: нужный плагин нашёлся сразу и подключился без проблем. А вот с календарём почему-то было всё непросто. Плагинов для подключения CalDav-календарей в штатном репозитории Roundcube оказалось совсем немного, вроде бы их толи 2, толи 3, причём, как мне кажется, это клоны, имеющие общего предка. И все они давно заброшены и с моим сервером не работают. (Насколько я понял, они изначально разрабатывались для работы исключительно с OwnCloud, а там есть свои нюансы.)

Недавно я после очередного перерыва снова занялся календарём, и нашёл вот это: https://kb.vander.host/application-software/how-to-connect-roundcube-to-a-calendar/. Это было почти то, что нужно. Календарь заработал. Вот только то, что там заработало, не умело подключаться с CalDav серверам, а работало со своей собственной базой. Это не совсем то, что мне было нужно.

И вот буквально вчера я набрёл на эту страничку: http://www.kentavr.com.ru/forum/viewtopic.php?t=9133. Нужная мне часть там выглядела предельно лаконично:

Рис. 2

Оставалось только пройти по указанной ссылке и выполнить находящуюся там инструкцию по установке. И оно заработало (см. рис. 1). Оно стало уметь добавлять CalDav календари и без проблем с ними работать.

Рис. 3

Теперь у меня есть веб-клиент с контактами и календарём, которые синхронизируются со всеми моими компьютерами и устройствами. И на мой вкус, Roundcube в работе заметно удобнее, чем всякие ГМейлы, Яндекс-почты и прочие мейл.ру.


* — Я понимаю, что админы VPS-провайдера всё равно могут на мой сервер залезть, используя инструменты для управления виртуальными машинами. Но вряд ли это им надо, и в любом случае подобное проникновение оставит следы, которые я сумею увидеть.

Наконец-то получилось прикрутить CalDav календарь к Roundcube: 42 комментария

  1. Добрый день, могли бы вы выложить в облако три папки:

    Потому как по всей видимости на днях убрали поддержку caldav из этого источника

    calendar
    libcalendaring
    libkolab

    1. я недавно ставил плагин из того источника на тестовую машину, да поддержка Caldav была, сейчас вновь развернул roundcube, установил roundcube все увы поддержки caldav нет.

      1. Добрый день.
        Думаю, что проблему надо искать на вашей стороне, т.к. файлы (по ссылке на github) не менялись уже давно:

        Если работало «недавно», то должно работать и сейчас.

        Файлами с моего работающего в данный момент сайта я поделиться не могу; в первую очередь — исходя из соображений безопасности.

      1. У вас на скриншоте версия dev-master
        У меня в тот раз также было, а в этотраз там стоят версии

        calendar 3.5.7 AGPL-3,0 Загрузить
        libcalendaring 3.5.11 AGPL-3,0 Загрузить
        libkolab dev-master AGPL-3,0 Загрузить

        1. Ну можно попробовать удалить плагины вручную и повторить установку в точности по инструкции со странички на гитхабе.

          Но я бы не мудрил, и ставил бы roundcube 1.5.x

          1. Обратите внимание, в самих исходниках плагина в каталоге «skins» есть описания стилей только для скина Larry. Я, конечно, веб-программист ненастоящий, но для меня это значит, что Larry — это единственный поддерживаемый скин.

  2. Поставил версию 1.5.4 плагин установился, но не дает сохранять и добавлять ни события ни календари.
    подскажите пожалуйста, какой веесии у вас PHP и Composer?

    Скин кстати не причем.

  3. Мда странно как то все это:
    Debian 11
    php7.4
    composer 2.4.2
    roundcube 1.5.3
    postgres 13
    может базу данных надо поменять на что то другое, раз он сохранять не хочет и вываливает в ошибку.

  4. По всей видимости нет!
    Они автоматом должны создаваться? или руками?

    Список отношений
    Схема | Имя | Тип | Владелец
    ———+———————-+———+————
    public | attachments | таблица | roundcube
    public | cache | таблица | roundcube
    public | cache_index | таблица | roundcube
    public | cache_messages | таблица | roundcube
    public | cache_shared | таблица | roundcube
    public | cache_thread | таблица | roundcube
    public | calendars | таблица | roundcube
    public | carddav_accounts | таблица | roundcube
    public | carddav_addressbooks | таблица | roundcube
    public | carddav_contacts | таблица | roundcube
    public | carddav_group_user | таблица | roundcube
    public | carddav_groups | таблица | roundcube
    public | carddav_migrations | таблица | roundcube
    public | carddav_xsubtypes | таблица | roundcube
    public | collected_addresses | таблица | roundcube
    public | contactgroupmembers | таблица | roundcube
    public | contactgroups | таблица | roundcube
    public | contacts | таблица | roundcube
    public | dictionary | таблица | roundcube
    public | events | таблица | roundcube
    public | filestore | таблица | roundcube
    public | identities | таблица | roundcube
    public | itipinvitations | таблица | roundcube
    public | kolab_alarms | таблица | roundcube
    public | responses | таблица | roundcube
    public | searches | таблица | roundcube
    public | session | таблица | roundcube
    public | system | таблица | roundcube
    public | users | таблица | roundcube
    (29 строк)

    1. В инструкции с гитхаба написано:

      cd /pathTo/roundcubemail

      composer config repositories.calendar vcs https://github.com/JodliDev/calendar
      composer config repositories.libcalendaring vcs https://github.com/JodliDev/libcalendaring
      composer config minimum-stability dev
      composer require kolab/calendar

      bin/initdb.sh --dir=plugins/calendar/drivers/caldav/SQL

      Последняя строчка, по идее, и должна создавать нужные таблицы.
      Должен подхватываться и выполняться скрипт postgres.initial.sql для постгреса. Ну или можно залогиниться в базу пользователем roundcube и выполнить скрипт вручную.

      Кстати, таблицы calendars, events, attachments у вас скорее всего пустые и их можно удалить. Для CalDav они не нужны.

  5. Сейчас у себя смотрю вижу немного другой путь
    /var/www/roundcube/plugins/calendar/drivers/kolab/SQL

    Если выполнять
    bin/initdb.sh —dir=/var/www/roundcube/plugins/calendar/drivers/kolab/SQL

    то получаем
    Creating database schema… ERROR: [7] ОШИБКА: отношение «kolab_alarms_user_id_idx» уже существует (SQL Query: CREATE INDEX kolab_alarms_user_id_idx ON kolab_alarms (user_id))
    [FAILED]
    ERROR: [7] ОШИБКА: отношение «kolab_alarms_user_id_idx» уже существует

  6. не там посмотрел

    root@roundcube3:/var/www/roundcube# bin/initdb.sh —dir=plugins/calendar/drivers/kolab/SQL
    Creating database schema… ERROR: [7] ОШИБКА: отношение «itipinvitations_user_id_event_uid_idx» уже существует (SQL Query: CREATE INDEX itipinvitations_user_id_event_uid_idx ON itipinvitations (user_id, event_uid))
    [FAILED]
    ERROR: [7] ОШИБКА: отношение «itipinvitations_user_id_event_uid_idx» уже существует

  7. Прошу прощения, опять не там посмотрел.
    В общем спасибо вам за помощь, все заработало.

    напишу наверное подробную инструкцию, могу вам прислать чтоб опубликовали, я думаю многим пригодится.

  8. Рано радовался, календари создаются, записываются, но события уходят в ошибку.
    Щас еще посмотрю может что-то где то еще надо проверить.

  9. Таблицы создались
    У вас какая база данных? mysql
    public | caldav_attachments | таблица | roundcube
    public | caldav_calendars | таблица | roundcube
    public | caldav_events | таблица | roundcube
    public | caldav_sources | таблица | roundcube

  10. Все как то странно.
    все тоже самое что у вас. все компоненты
    при установке самого плагина
    Do you want to activate the plugin calendar? [Y|n] y
    Updated local config at /var/www/roundcube/config/config.inc.php
    Creating package config file
    Running database initialization script for calendar
    Creating database schema… ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘system (name, value) VALUES (‘calendar-database-version’, ‘2015022700’)’ at line 1 (SQL Query: REPLACE INTO system (name, value) VALUES (‘calendar-database-version’, ‘2015022700’))
    [FAILED]
    ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘system (name, value) VALUES (‘calendar-database-version’, ‘2015022700’)’ at line 1

    потом запускаем еще раз команду: composer require kolab/calendar
    Ошибок второй раз нет.
    инициализируем root@roundcube-ubuntu:/var/www/roundcube# bin/initdb.sh —dir=plugins/calendar/drivers/caldav/SQL

    При создании события в календаре ошибки.

    1. Выглядит так, как будто функционал, добавляющий CalDav source, и функционал, добавляющий события в календарь, не согласованы.

      1) удаляйте все плагины календаря
      2) удаляйте таблицы: calendars, events, attachments, caldav_sources, caldav_calendars, caldav_attachments, caldav_events
      3) повторяйте установку по инструкции с гитхаба. После установки убеждайтесь, что:
      — версии календарных плагинов = «dev-master»
      — созданы ТОЛЬКО таблицы caldav_* (таблиц calendars, events, attachments быть не должно)

      Если таблицы calendars, events, attachments появляются, то надо искать, кто их создаёт; это и будет виновник того, что не работает создание событий.

      Я бы так делал.

  11. Доброго дня.

    С календарями вроде бы разобрались, работают.

    Пытаюсь заставить одновременно работать плагин carddav, с календарями.
    Активируешь плагин с адресными книгами, плагин календаря вообще не хочет открываться.
    Выключаешь плагин адресной книги, календари начинают работать.
    Какая то ерунда.

  12. Странно, с недавних пор перестала отправляться почта.
    ничего не менялось.
    При этом ошибка: smtp ошибка -1 сбой соединения с сервером.
    Обновляю до версии 1.6.0 и выше почта ходит великолепно
    сейчас стояла 1.5.3 пробовал обновлять до 1.5.6 тоже самое.

  13. проблема найдена в конфиге:
    Было так

    $config[‘smtp_host’] = ‘ssl://mail.ваш почтовый сервер:465’;
    а надо так
    $config[‘smtp_server’] = ‘ssl://mail.ваш почтовый сервер’;
    $config[‘smtp_port’] = 465;

Добавить комментарий