Инструменты пользователя

Инструменты сайта


beget:soloshin.su:mail:carddav:baikal

Сервер контактов Baikal

На фоне паранойи, происходящей на территории России, я уже несколько лет задумываюсь над тем, как обезопасить свои данные от внезапных санкций «их» против нас и нас против «их»… Не ну а что, хлобысь, и все – китайский или корейский сценарий – геморрой, паника, неразбериха, а твои письма и контакты где-то там, на серверах Google или Apple. Случиться это, конечно, не должно, но… «это Россия, детка» и лучше быть готовым. 8-)

Следующей птичкой стала регистрация собственного домена, поднятия на нем своей почты и постепенная миграция социальных связей на свой новый ящик. Однако, Beget не гигант, типа всем известных Google-Apple-Mail.Ru-Yandex, и для почты предоставляет только базовые службы, которые не включают сервер контактов и календарей. Почесав тогда в затылке, я пошел на компромисс, добавив новый ящик в аккаунт Google и временно забив на все, т.к. на тот момент основная цель – всем писать с нового ящика и получать на него ответы – была решена1) по методу «и овцы целы (контакты и календари) и волки сыты (довольный я с красивым адресом)».

И вот, с покупкой Apple Watch пора пришла! Ну да, не понятно, как это все связано… Но нет, все просто – Google что-то не торопится делать приложение для часов и… надо менять почтовый клиент на телефоне! Вот черт! LOL

Естественно, т.к. я давно и плотно переехал на iPhone и обратно на ведроиды не собираюсь2), я стараюсь по максимуму использовать предоставляемые Apple приложения, ибо они, не побоюсь сказать, крутые и простые3) – сперва перенес «Напоминания», «Заметки», потом перетащил данные в «Календарь».

А вот когда настал черед контактов, пришла засада – если использовать Gmail, как основное и единственное приложение для доступа к почте, но контакты хранить в iCloud, то они будут видны только на телефоне и ни как иначе! Но обратно – если хранить контакты в Google, то доступны они будут и в Gmail и на телефоне во всех приложения. Засада же, ну! m(

И как быть? Да просто! Скрипя сердцем отказаться от приложения Gmail и его web-реализации4), не отказываясь от старого адреса, а контакты перенести куда?.. Куда-то, где они будут доступны всем – и телефону, и почтовому клиенту.

:!: Кстати, для тех, у кого нет паранойи, но есть часы и не хочется или не можется заморачиваться, есть промежуточный вариант, описанный в конце статьи, а всем остальным Welcome в мир боли и геморроя! ^_^

Подготовка

Все службы и программы, описанные ниже, можно использовать, как с поддомена, типа contacts.soloshin.su, так и из каталога домена, к примеру, soloshin.su/contacts. Но тут я буду исходить из первого варианта, как более красивого и элегантного. 8-)

Исходные данные

  1. свой красивый домен ;-);
  2. оплаченный хостинг;
  3. действительный сертификат5).

Считаем, что у нас уже есть поддомен mail.<domain.zone>6) и contacts.<domain.zone>, направленные на сайт, находящийся в каталоге <site-name>/public_html. А также установлены сертификаты для домена и поддменов и настроена переадресация с HTTP на HTTPS. Ну и сразу – выбрана версия PHP не ниже 7.1.

Baïkal from sabre.io

  1. Скачиваем последний релиз7);
  2. распаковываем на хостинге в корневую папку web-сервера8);
  3. переходим в браузере по адресу contacts.<domain.zone>/baikal/html и попадаем в конфигуратор, где ничего, кроме часового пояса и пароля администратора можно не менять;
  4. после сохранения настроек, попадаем на страницу настройки базы данных, где при использовании SQLite желательно выбрать каталог для хранения базы выше уровня каталога web-сервера9).

Теперь осталось авторизоваться и на закладке «Users and resources» добавить пользователей. Адресная книга и календарь по умолчанию создаются автоматически.

.well-known/carddav

Для автоматического обнаружения сервиса контактов, в корневой папке web-сервера нужно создать файл .htaccess со следующим содержимым:

.htaccess
<IfModule mod_alias.c>
	Redirect 308 /.well-known/carddav https://contacts.<domain.zone>/baikal/html/dav.php
</IfModule>

CardDavMATE

В качестве фронтэнда… хотел бы сказать «я выбрал», но увы, выбора нет, т.к. это единственный найденный мной вариант. Однако, полностью функциональный. :-)

:!: Если вы предполагаете использовать календари, вам нужен «CalDavZAP» или «InfCloud»10). Но мне пока нужны только контакты, поэтому я выбрал «CardDavMATE».

И так. Не взирая на кажущуюся сложность настройки11), все, в общем случае, крайне просто!

  1. распаковываем на хостинге в корневую папку web-сервера и открываем файл config.js;
  2. в секции globalNetworkCheckSettings меняем значение параметра href на 'https://contacts.<domain.zone>/baikal/html/dav.php/principals/';
  3. меняем значение globalInterfaceLanguage на ru_RU, а globalDefaultAddressCountry на ru;
  4. раскомментируем и меняем значение параметра globalUseJqueryAuth на true13).

Все! Профит! Теперь переходим по адресу contacts.<domain.zone>/carddavmate/, вводим логин и пароль, выбираем язык и видим созданные ранее адресные книги – ура, можно добавлять14), удалять и редактировать контакты.

Вишенка на торте

Для удобства обращения к контактам в файл .htaccess можно добавить:

.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^contacts.<domain.zone>$ [NC]
RewriteRule ^$ https://contacts.<domain.zone>/carddavmate/ [R=308,L]

Теперь CardDavMATE будет открываться при переходе по адресу contacts.<domain.zone>, что намного удобнее, чем contacts.<domain.zone>/carddavmate/!

Импорт контактов

В этом месте я затормозился надолго… Перебрал много разных вариантов, которые так или иначе работали не так, как нужно и, в итоге, нашел! Основными критериями поиска были – простота и воспроизводимость.

Этим оказался почтовый клиент «Mozilla Thunderbird» и дополнение для него «CardBook»15)! Причем настраивать клиент не обязательно – его необходимо просто установить, запустить и добавить дополнение, которое и нужно настроить:

  1. Закрываем мастер первого запуска и открываем вкладку CardBook16);
  2. заходим в «Параметры» → «Синхронизация», где снимаем галочки «Синхронизировать изменения» и «Выполнять синхронизацию…»17);
  3. открываем «Меню CardBook»18) → «Адресная книга» → «Добавить адресную книгу»;
  4. выбираем «В сети», далее «CardDAV»;
  5. в поле «URL» вводим https://contacts.<domain.zone>;
  6. вводим «Имя пользователя» и «Пароль»19), нажимаем «Проверить» и, если все хорошо, два раза нажимаем «Далее»;
  7. открываем «Меню CardBook» → «Адресная книга» → «Импортировать контакт из файла»;
  8. выбираем экспортированный ранее файл .VCF и открываем.

Далее редактируем контакты, если нужно, и нажимаем «Синхронизация»20).

RainLoop Webmail

Перед тем, как остановиться на этом клиенте, я перепробовал некоторое количество прочих и этот оказался самым простым, легким и… в общем, подойдет, как для личного использования, так и коммерческого – причем в обоих случаях можно бесплатно и легально!

:!: Если хотите бесплатно для личного использования, то лучше «Standard edition», т.к. доступны обновления в «один клик»; если для коммерческого использования, но также бесплатно, то нужно качать «Community edition».

  1. распаковываем на хостинге в корневую папку web-сервера;
  2. заходим в папку data и создаем файл .htaccess с текстом Deny from all22);
  3. открываем в браузере адрес https://mail.<domain.zone>/?admin и вводим логин/пароль «admin»/«12345»;

Все остальные настройки просты и интуитивны. Стоит обратить внимание только на закладки:

  • «Домены», где при использовании публичных сервисов типа Gmail.com, желательно в свойствах заполнить «Белый список», чтобы левые через ваш сервер не авторизовывались;
  • «Логин», где стоит указать «Основной домен», чтобы можно было входить вводя только первую часть электронного адреса;
  • «Контакты», где нужно поставить все галочки и, если нужно, изменить базу данных с SQLite на что-то более серьезное23);
  • «Безопасность», где нужно сменить пароль администратора и, желательно, включить 2-шаговую проверку, а еще лучше – форсированную!

Все, теперь можно авторизоваться в своем ящике перейдя по адресу https://mail.<domain.zone> и добавить в настройках созданную и заполненную ранее адресную книгу24)! Осталось немного подождать, чтобы она автоматически синхронизировалась25) и теперь вот совсем уже все! =)

Еще из приятного – авторизовавшись в основном аккаунте, можно подключить любые другие дополнительные аккаунты, домены для которых были настроены в админке, и с легкостью между ними переключаться. Причем при последующей авторизации в основном аккаунте, они уже будут.

Контакты в iPhone

Для подключения контактов на iPhone, нужно зайти «Настройки» → «Контакты» → «Учетные записи» → «Новая учетная запись» → «Другое» → «Учетная запись CardDAV», ввести адрес contacts.<domain.zone> и логин с паролем. Все.

Google CardDAV

Это немного не в тему, но достоверной информации на русском я не нашел.

У Контактов Google тоже есть CardDAV сервер и для его использования в том же «RainLoop» нужно использовать адрес https://www.googleapis.com/carddav/v1/principals/<user-name>@gmail.com/lists/default/, логин вида <user-name>@gmail.com и сгенерированный тут пароль приложения.

В Apple iOS, скорее всего, будет работать адрес https://www.googleapis.com/.well-known/carddav или даже просто https://www.google.com, но лично не проверял. Знаю точно, что в «RainLoop» они не работают. :-\


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
Кстати, достаточно элегантно, что достойно отдельной статьи.
2)
Спасибо! С 2010 и до 2017 их у меня было достаточно, чтобы понять, что один другого хуже! Но, да, это не тема для полемики…
3)
Да, там есть необходимый минимум и ничего лишнего + «чистый» интерфейс!
4)
Правда, после закрытия прекрасного «Google Inbox», сердце уже не так сильно скрипело…
5)
Можно ныне популярный «Let’s Encrypt».
6)
Где <domain.zone>, это ваш домен, типа «soloshin.su»
7)
У меня, это 0.8.0.
8)
У Beget'а, это <site-name>/public_html.
9)
У Beget'а, это будет выглядеть примерно так: /home/a/<account-name>/<site-name>/databases/baikaldb.sqlite. Отсутствующие каталоги нужно заранее создать через панель управления хостингом или FTP – в данном примере у меня нет каталога «databases».
10)
Который объединяет в себе оба продукта.
11)
А документация реально страшная!
12)
У меня, это 0.13.1 от Сентября 2015 года.
13)
Это нужно, чтобы работала дайджест-авторизация. В документации предупреждается, что может не работать, но в Chrome 90+ работает!
14)
Вот только импорта тут нет, увы… Но об этом как раз ниже.
15)
Я использовал версии 78.10.1 и 58.7, соответственно.
16)
Одна из иконок справа, возле свернуть-развернуть-закрыть.
17)
Это не обязательно, но желательно, чтобы лишний раз не синхронизироваться…
18)
3 полоски слева
19)
Указанные в разделе настройки сервера контактов.
20)
Если контактов много, возможно, потребуется нажать ее много раз, т.к., к примеру, у меня за раз синхронизируется только около 30 контактов – следить за статусом и остатком можно в статусной строке справа внизу.
21)
В моем случае стартовая версия 1.15.0.
22)
Для разных версий web-серверов эта настройка может отличаться, подробнее тут.
23)
Скорее всего не актуально для частного использования!
24)
Точно также, как и в разделе с импортом (п.5-6).
25)
Если открыть контакты и вручную тыкать на синхронизацию, почему-то она завершается ошибкой, а потом контакты начинают дублироваться…

Обсуждение

Юрий Витальевич Демиденко, 2023/03/06 02:37
Почему то не заходит на CardDavMATE. Без всякой ошибки. Просто логин по кругу
Николай Солошин, 2023/03/09 18:59
Доброго. Мало данных для помощи. ) А так, пятый пункт раздела CardDavMATE не забыли?
Александр, 2023/10/23 23:04
Подскажи пожалуйста, как настроить одну адресную книгу многим пользователям. Чтобы удалять и добавлять мог только один - я :-)
Что вижу - я создаю аккаунт, создаю адресную книгу.
у каждого аккаунта свои адресные книги, которыми они пользуются дополняют/удаляют.
CardDavMATE - решит мой вопрос?
Николай Солошин, 2023/10/24 14:38
Увы и ах, не могу сказать, не помню, т.к. уже давно не пользуюсь этим продуктом, перенеся контакты полностью в iCloud.
Ваш комментарий:
P B N S K Q E R Q Z X N G C Y B
 
Последнее изменение: 2022/02/12 11:40 (внешнее изменение)