Установка и настройка мессенджера Zulip

Ранее на своем сайте я поднимал тему бесплатного чат-сервера, при чем не один раз. Сегодня я ее продолжу и расскажу о том, как установить и настроить бесплатный корпоративный мессенджер Zulip. В целом мне понравился этот продукт и показался простым и удобным, но не без недостатков, о которых упомяну.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

Начну с того, что расскажу, о чем уже писал на сайте:

  • Форк слака - mattermost. В целом понравился, работает нормально, особых багов нет. Но в бесплатной версии много ограничений и мало функционала. В статье все это указано, плюс много полезных комментариев. Видел этот сервер в реальной эксплуатации. Пользоваться можно, если вас устраивает функционал.
  • Чат сервер matrix и клиент Riot к нему. Хороший функционал в бесплатной версии, но показался сырым. Все подробности и мое мнение про продукту представлено в статье, рекомендую ознакомиться.
  • Чат сервер MyChat. Обширный функционал и хорошая документация. Бесплатная версия на 20 пользователей с небольшими ограничениями. Невысокая цена за полную версию. Стабильный, легкий быстрый клиент как для PC, так и для смартфона.

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

Zulip в этом плане не сильно хуже или лучше, он в целом похож немного на mattermost и прочие клоны slack. Мне он понравился, так как не заметил существенных недостатков, но в целом они тоже есть и для кого-то будут критичными. Перечислю их:

  • Сервер только под Ubuntu. В плане установки и настройки каких-то серьезных проблем в связи с этим нет. Но если у вас вся инфраструктура на других дистрибутивах, не хочется использовать сторонние дистрибутивы. Как минимум, поддержку Centos и Debian можно было бы сделать. Лично я предпочитаю именно их. Есть возможность самому руками поставить все компоненты и связать друг с другом, но это очень хлопотно. Я в итоге взял убунту и поставил все автоматом на нее.
  • Плохая русификация. Когда выбираешь русский язык, тебе честно говорят, что переведено 97%, но на деле в настройках достаточно много пунктов на английском языке, перемешанных с русскими. Пользоваться в таком формате очень неудобно, поэтому остается только вариант использовать английский язык. Либо оставлять как есть, но лично я не люблю, когда что-то сделано коряво. Если переводить, то все, а не так, как сделано. Но тут важный момент. Когда я начинал писать статью, перевод был значительно хуже. С выходом последней версии 1.8.0 перевод улучшился значительно.
  • Некоторый функционал работает не очевидно и не очень понятно. Например, отправка уведомления в чаты через email. Если у вас русские названия чатов, то работать это не будет. Так же не очень понятно, как настроить авторизацию через ldap c AD. Информации в документации не достаточно.

Среди плюсов отмечу следующее:

  • Хорошая документация, за исключением отдельных моментов. Это редкость. В интернете нет никаких статей и примеров настройки, но я смог почти все сделать и во всем разобраться по документации. Можете сами оценить - pdf.
  • Простой и лаконичный интерфейс. Ничего лишнего, в основном все интуитивно понятно.
  • Отдельные ветки обсуждений в одной конференции. К примеру, можно создать конференцию ИТ отдел и в ней выделить несколько тем со своим ветвением диалогов. Например - закупки, поддержка пользователей, настройка серверов, заявки и т.д.
  • Возможность пересылки сообщений из email сразу в конференцию. Можно создать почтовый алиас, письма, отправленные в этот алиас, будут автоматом падать в конференцию в чате.
  • Хорошее логирование всех событий. Легко дебажить настройку.

Ниже схема работы серверной части мессенджера.

Схема работы сервера Zulip

В общем и целом продукт оставил приятное впечатление. Добротный и качественный софт без лишних багнутых свистелок. Приступим к его установке.

Системные требования

У сервера Zulip есть минимальные системные требования, которые необходимо соблюсти. На сервер, не удовлетворяющий этим параметрам, установить бесплатный мессенджер не получится.

Для установки Zulip вам необходимо:

  • Выделенный сервер или виртуальная машина.
  • Операционная система Ubuntu 16.04 Xenial 64-bit или Ubuntu 14.04 Trusty 64-bit (не рекомендуется)
  • Как минимум 2 Gb оперативной памяти и 10 Gb дискового пространства. Для 100+ пользователей 4 Gb RAM и 2 CPUs.
  • Имя сервера, корректно резолвящееся через dns.
  • Учетная запись почты для получения письма от сервера.

Установка Zulip

Как я уже говорил, у Zulip хорошая документация, так что устанавливать сервер мессенджера будем строго по ней. Вот прямая ссылка, можете воспользоваться ей - https://zulip.readthedocs.io/en/latest/production/install.html#step-2-install-zulip Так даже будет правильнее, потому что документация, скорее всего, будет более актуальной, чем моя статья. А если вам не хочется разбираться с документацией, то смотрите краткую выжимку из нее далее.

У меня следующая версия системы:

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial

Я сразу буду работать под root, без sudo.

Скачиваем сервер zulip:

# cd ~
# wget https://www.zulip.org/dist/releases/zulip-server-latest.tar.gz
# tar -xf zulip-server-latest.tar.gz

Установка zulip:

./zulip-server-*/scripts/setup/install --certbot --email=chat@serveradmin.ru --hostname=zulip.zeroxzed.ru
chat@serveradmin.ru почтовый ящик администратора чата
zulip.zeroxzed.ru доменное имя будущего сервера

Обращаю внимание на доменное имя. Для него нужен будет валидный сертификат. Либо уже существующий, либо получим бесплатный от let's encrypt. Без нормального сертификата использовать zulip неудобно, так как пользоваться им будем в основном через браузер.

Я получил ошибку установки.

Установка Zulip

Zulip installation failed! 
The install process is designed to be idempotent, so you can retry after resolving whatever issue caused the failure (there should be a traceback above). A log of this installation is available in /var/log/zulip/install.log

Досадно. Я рассчитывал, что для тестовой версии, работающей без нагрузки, мне будет достаточно гигабайта памяти. Но увы, сервер даже не захотел установиться на виртуалку, где меньше 2gb оперативной памяти.

Я для тестов использую виртуальные машины ihor, которые можно заказывать на сутки. Минимальная конфигурация стоит 10р. в день, с 2 гигабайтами памяти 14р. Очень удобно. Раньше свои сервера использовал, но со временем понял, что проще и дешевле пользоваться услугами хостеров. В итоге просто добавил к виртуалке еще один гигабайт оперативной памяти и перезагрузил ее. Продолжаем установку.

./zulip-server-*/scripts/setup/install --certbot --email=chat@serveradmin.ru --hostname=zulip.zeroxzed.ru

Установщик сразу попробует получить сертификат от let's encrypt с помощью certbot. Для этого нужно будет подтвердить лицензионное соглашение.

Получение бесплатного сертификата для чата

У меня сервер имеет выделенный ip адрес, доменное имя zulip.zeroxzed.ru настроено и нормально резолвится. Так что я сразу автоматически получил валидный сертификат для zulip сервера. Удобно сделан установщик - экономит наше время на настройку.

Установка будет длиться значительное время. У меня минут 15 прошло, пока не появилась информация о том, что сервер установлен.

Завершение установки Зулип

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

Создание организации в zulip

Обратите внимание, что веб сервер уже работает по https с помощью валидного сертификата. Дальше выполняете указания мастера по созданию организации. Не буду подробно на этом останавливаться. Там все очевидно и просто.

После создания организации, вы сразу же попадаете в веб интерфейс мессенджера.

Корпоративный мессенджер Zulip

На этом непосредственно установка корпоративного чата zulip закончена. Перейдем к его настройке.

Настройка Zulip

Отправка email сообщений

На предыдущем скриншоте видно, что сервер в самом верху выдал предупреждение о том, что надо настроить отправку email. Это нужно для отправления подтверждений регистрации, уведомлений о поступающих сообщения, когда вы в онлайне и для других нужд. Сервер активно использует email рассылки. Так что рекомендую обязательно настроить отправку почтовых сообщений.

Все настройки сервера хранятся в конфигурационном файле /etc/zulip/settings.py. Причем, они там неплохо задокументированы. Я первоначальную настройку выполнял только по этим комментариям. Потом уже пошел читать документацию.

Итак, настраиваем отправку email. Я буду использовать бесплатный ящик на яндексе с адресом - chat@serveradmin.ru. Настройка других провайдеров будет аналогичной, отличаться будут только адрес smtp сервера и рабочий порт.

Указываем следующие настройки для отправки email:

EMAIL_HOST = 'smtp.yandex.ru'
EMAIL_HOST_USER = 'chat@serveradmin.ru'
EMAIL_USE_TLS = True
EMAIL_PORT = 587

В файл /etc/zulip/zulip-secrets.conf добавляем пароль от ящика.

email_password = KG5Aj1DkYnCm

Зайдем в консоль под пользователем zulip и перезапустим сервер для применения настроек.

# su zulip 
# /home/zulip/deployments/current/scripts/restart-server

Проверяем отправку почты:

# /home/zulip/deployments/current/manage.py send_test_email zeroxzed@gmail.com

В указанный ящик должно упасть тестовое письмо. Если это не так, то разбирайтесь с ошибками. В этом помогут следующие лог файлы:

  • /var/log/zulip/errors.log
  • /var/log/zulip/send_email.log
  • /var/log/zulip/queue_error/email_senders.errors

Мне пришлось немного повозиться с отправкой, но это из-за особенности работы бесплатной почты Яндекса. Со своим сервером проблем никаких не было. Если будете использовать почтовый ящик от gmail, то у разработчиков есть рекомендации на этот счет. Если есть свой почтовый сервер, то лучше пользоваться им.

Базовые настройки сервера и клиента zulip

Выполним несколько настроек, которые мне показались полезными. Сначала начнем с сервера. Заходим в чат, нажимаем справа вверху на шестерёнку, попадаем в настройки. Выбираем вкладку Organization.

Настройка сервера Zulip

Дальше перечислю настройки, отличающиеся от дефолтных, на которые рекомендую обратить внимание:

  • Organization profile -> Organization avatar - установка изображения с логотипом компании.
  • Organization settings -> Default user settings Здесь можно указать язык, который будет установлен новым пользователям. Выбираете подходящий вам. Тут же я указываю использовать привычный нам 24-х часовой формат времени.
  • Organization permissions -> Joining the organization По-умолчанию, свободная регистрация пользователей закрыта. Зарегистрироваться можно только по специальной ссылке, которую может сформировать любой текущий пользователь. Вы можете открыть свободную регистрацию для всех, или разрешить приглашать новых пользователей только администраторам чата. Для того, чтобы отправить приглашение на почту новому пользователю, надо нажать на шестеренку с настройками и выбрать раздел invite users. Пригласить пользователя в чатВ этом же разделе можно запретить пользователям изменять свое имя и email адрес, так же настроить права на создание и управление чатами.
  • User Groups Здесь можно раскидать пользователей по группам. Я не понял, для чего этот функционал, где потом использовать эти группы. Если кто-то подскажет, буду рад.
  • Default streams Тут настраиваются чаты, которые будут подключены новому пользователю автоматически.

Это что касается серверной части. Дальше посмотрим на настройки пользователя.

  • В Display settings настраиваем язык, формат времени и некоторые другие элементы внешнего вида. Делать это нужно, если не подходят дефолтные настройки сервера, установленные администратором.
  • В Notifications настраиваем уведомления. Это будут дефолтные настройки для всех чатов. Можно отдельно изменить эти настройки для конкретного чата в его свойствах.
  • Любопытная настройка Alert words. Вам будут приходить оповещения каждый раз, когда в чатах будет присутствовать указанное вами слово.

Все остальное очевидно и не заслуживает отдельного внимания.

Думаю, сразу после установки имеет смысл удалить дефолтные чаты и создать свои. Сервер нормально понимает кириллицу, так что можно создавать чаты с русскими именами и пробелами. Но есть общая рекомендация - давать названия чатам краткие. Так удобнее работать с ними. После создания списка чатов можно сразу указать те из них, которые будут подключаться новым пользователям. Было бы очень удобно, если бы чаты подключались пользователям в зависимости от групп, в которых он состоит. Но я не увидел такой возможности.

Способы авторизации (email, Oauth2, GitHub, LDAP)

Zulip поддерживает несколько типов авторизации:

  1. Email and password. Данный способ доступен по-умолчанию и не требует отдельной настройки. Работает сразу после установки.
  2. Google accounts. Стандартная гугловская авторизация. Как ее подключить, описано в конфигурационном файле в комментариях.
  3. GitHub accounts.То же самое, что и гугл авторизация, только от github. По идее, что гугл, что гитхаб настраиваются просто, судя по описанию, но я не проверял.
  4. LDAP server. Тут можно использовать сервер AD от Microsoft. Очень привлекательная возможность, но у меня сходу не получилось настроить. Надо внимательно разбираться. Планирую сделать это и дополнить статью, либо написать отдельно.
  5. Apache-based SSO. Не понял точно, что это такое. Сам не сталкивался, судя по описанию, мне не очень надо, но подробно не смотрел.

Более подробно о способах авторизации рассказано в соответствующем разделе документации. Лично меня заинтересовал только первый и четвертый. Постараюсь позже разобраться с настройкой авторизации через LDAP в виде AD. Сходу не завелось.

Отправка сообщений в чат через email

Каждому чату в Zulip можно назначить почтовый алиас, который будет передавать почтовые сообщения, отправленные на этот алиас прямиком в чат. По-умолчанию данная функция не работает. Ее нужно настраивать отдельно. Этим и займемся. Есть 2 способа настроить данный функционал:

  1. Использовать локальный почтовый сервис.
  2. Использовать сторонний почтовый ящик, подключаясь к нему по imap с определенным интервалом.

Удобнее и быстрее настроить первый способ. Работает он немного криво. Я долго разбирался, чтобы понять, как его настроить по-человечески, но так и не понял. Расскажу подробнее по ходу дела. Нам нужно в конфиге задать один единственный параметр:

EMAIL_GATEWAY_PATTERN = "%s@zulip.zeroxzed.ru"

После этого выполняем от рута команду:

# /home/zulip/deployments/next/scripts/zulip-puppet-apply -f

Перезапускаем сервер:

# su zulip
# /home/zulip/deployments/current/scripts/restart-server

Теперь создадим новый канал, например IT. Для этого открываем настройки и заходим в Manage streams.

Настройка чатов

Создаем новый канал. В свойствах канала видим адрес, на который можно отправлять письма. В моем случае это адрес IT+09bf1d51e0ce94d4c6fa191e0a979d7e@zulip.zeroxzed.ru.

Email адрес чата

Я долго не мог понять, почему такой адрес. Почему не просто it@zulip.zeroxzed.ru. Но увы, понять не смог. Попытки как-то это исправить ни к чему не привели. Я перечитал всю документацию, все что смог найти в гугле, но ничего не помогло. Перестал искать после того, как увидел описание этого функционала на zulipchat - https://zulipchat.com/integrations/doc/email Я понял, что так и было задумано.

Теперь для того, чтобы сервер zulip мог получать почту, необходимо создать MX запись для домена zulip.zeroxzed.ru. Я это сделал через редактор доменных записей. Должно получиться примерно вот так:

mx запись в dns для сервера зулип

После этого отправил письмо на ящик канала и оно действительно попало в чат. То есть функционал вполне рабочий. Реализован с помощью postfix. Он принимает письма, потом передает в зулиповский доставщик почты. Информация о входящих письмах отражается в системном почтовом логе /var/log/mail.log. Если что, смотрите туда. Если там писем нет, значит они не доходят до сервера. Разбирайтесь, почему это так. Возможно не настроен фаервол или неправильно указаны dns записи.

Важный нюанс, который я заметил во время тестирования. Если у вас русские названия чатов, сервер автоматически им назначит email адрес с русским названием. Очевидно, что вы не сможете отправить на такой ящик письмо. Скорее всего это баг. Как исправить или обойти этот момент не знаю.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Я рассмотрел, как мне показалось, основные моменты, на которые стоит обратить внимание при установке и настройке zulip мессенджера. Такие моменты, как создание каналов, отправку сообщений, картинок и т.д. не стал описывать. Тут и так все понятно, надо самому зайти и посмотреть.

В целом, этот мессенджер подходит на роль корпоративного. Сделан добротно, каких-то существенных багов я не заметил. Правда, в эксплуатацию чат еще не вводил, пока только готовлюсь. Думаю, буду его использовать. Из бесплатного, он мне понравился больше, чем все, что я видел до него. Конечно, не без недостатков, но мне они показались не критичными.

Я забыл рассказать про десктопную и мобильную версию клиента. Десктопная практически ничем не отличается от того, что вы видите в браузере. Как я понимаю, это просто обертка, которая работает так же как и браузер по http. Там все идентично web версии, так что рассказывать не о чем. Мобильная версия ставится через google play. Мне в целом понравилась. Работает быстро, ничего лишнего, общаться удобно, уведомления есть.

Еще раз поднимаю тему бесплатного корпоративного мессенджера и прошу поделиться своими мыслями и предложениями на этот счет в комментариях. Сразу скажу, что лично устанавливал и тестировал Mattermost (эксплуатировал длительное время в реальном коллективе), Rocket.Chat (только тестировал, показался очень багнутым), Matrix (показался сыроват, но в целом ничего), Mychat (штука платная, но стоит недорого, внимательно его тестировал, но не понравился дремучий интерфейс "привет из 2000-х"). Zulip из этой компании понравился больше всего.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

На правах рекламы даю ссылку на виртуальные серверы в Германии с полным администрированием, с русской тех поддержкой. Вы можете заказать виртуальный сервер и попросить техподдержку настроить там zulip. Можно ссылку на мою статью дать. Они вам это сделают. Это для тех, кто не хочет заморачиваться. Главное не ошибиться и заказать именно с администрированием, включенным в стоимость.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

56 комментариев

  1. Добрый день, настроил все кроме LDAP, постоянно выдает ошибку. Настроил следующие строчки:
    AUTH_LDAP_SERVER_URI = "172.16.16.10"
    AUTH_LDAP_BIND_DN = "ldap" - у меня такой акаунт в АД.
    AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "OU=Staff,OU=Users and Groups,DC=XXX,DC=local", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"
    LDAP_APPEND_DOMAIN = "mydomain.com"
    LDAP_EMAIL_ATTR = "mail"
    AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch("OU=IT,OU=Staff,OU=Users and Groups,DC=XXX,DC=local",ldap.SCOPE_SUBTREE, "(mail=%(email)s)")
    AUTH_LDAP_USERNAME_ATTR = "sAMAccountName"
    Все остальное оставил по умолчанию.

  2. Добрый день, настроил все кроме LDAP, постоянно выдает ошибку. Настроил следующие строчки:
    AUTH_LDAP_SERVER_URI = "172.16.16.10"
    AUTH_LDAP_BIND_DN = "ldap" - у меня такой акаунт в АД.
    AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "OU=Staff,OU=Users and Groups,DC=XXX,DC=local", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"
    LDAP_APPEND_DOMAIN = "mydomain.com"
    LDAP_EMAIL_ATTR = "mail"
    AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch("OU=IT,OU=Staff,OU=Users and Groups,DC=XXX,DC=local",ldap.SCOPE_SUBTREE, "(mail=%(email)s)")
    AUTH_LDAP_USERNAME_ATTR = "sAMAccountName"
    Все остальное оставил по умолчанию.

  3. Ярослав

    Спасибо, столкнулся с такой задачей: нужно перенести zulip на другой домен/сервер и обновить до актуальной версии, может ли кто подсказать, как лучше организовать сей процесс?

  4. Ярослав

    У меня вот такая ситуация, нужно перенести zulip на другой сервер, попутно может и версию обновить. Достаточно ли будет дамп базы перенести? Ну и конфиги, конечно.

  5. Максим

    Коллеги, приветствую. Скиньте рабочий конфиг, плиз.

  6. Добрый день
    Правильно понимаю, что развернув систему, коллеги могут пользоваться как десктопными версиями, так и с андроид и айос?
    И еще, нам нужно будет самостоятельно менять иконку приложения на смартфонах на нашу и публиковать приложение?

  7. Владислав

    Здравствуйте. Есть свой сервер со статическим ip, можно ли все настроить без домена? Просто везде в инструкциях используются домен, а хочется без него. Домен купить не сложно, но хочется без него попробовать =)

    • Ну вы можете на него пробросить днс. либо оставить айпишник.
      Ни кто не запрещает Вам.

    • Конечно можно. Используйте везде ip вместо доменного имени и настраивайте.

  8. Инструкия почему то в последнее время вот это выдает
    Traceback (most recent call last):
    File "/srv/zulip-venv-cache/546c5f60162d0b5be09d52adebaa995f9c609da3/zulip-py3-venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
    File "/srv/zulip-venv-cache/546c5f60162d0b5be09d52adebaa995f9c609da3/zulip-py3-venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
    File "/srv/zulip-venv-cache/546c5f60162d0b5be09d52adebaa995f9c609da3/zulip-py3-venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
    File "./zerver/views/home.py", line 82, in home
    return home_real(request)
    File "./zerver/decorator.py", line 411, in _wrapped_view
    return view_func(request, *args, **kwargs)
    File "/srv/zulip-venv-cache/546c5f60162d0b5be09d52adebaa995f9c609da3/zulip-py3-venv/lib/python3.6/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view
    return view_func(request, *args, **kwargs)
    File "./zerver/decorator.py", line 464, in _wrapped_view_func
    return rate_limit()(view_func)(request, *args, **kwargs)
    File "./zerver/decorator.py", line 826, in wrapped_func
    return func(request, *args, **kwargs)
    File "./zerver/views/home.py", line 125, in home_real
    narrow=narrow)
    File "./zerver/lib/events.py", line 876, in do_events_register
    include_subscribers=include_subscribers)
    File "./zerver/lib/events.py", line 208, in fetch_initial_state_data
    state['realm_authentication_methods'] = realm.authentication_methods_dict()
    File "./zerver/models.py", line 396, in authentication_methods_dict
    supported_backends = [backend.__class__ for backend in supported_auth_backends()]
    File "./zerver/models.py", line 126, in supported_auth_backends
    supported_backends = django.contrib.auth.get_backends()
    File "/srv/zulip-venv-cache/546c5f60162d0b5be09d52adebaa995f9c609da3/zulip-py3-venv/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 40, in get_backends
    return _get_backends(return_tuples=False)
    File "/srv/zulip-venv-cache/546c5f60162d0b5be09d52adebaa995f9c609da3/zulip-py3-venv/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 29, in _get_backends
    backend = load_backend(backend_path)
    File "/srv/zulip-venv-cache/546c5f60162d0b5be09d52adebaa995f9c609da3/zulip-py3-venv/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 23, in load_backend
    return import_string(path)()
    File "./zproject/backends.py", line 322, in __init__
    check_ldap_config()
    File "./zproject/backends.py", line 257, in check_ldap_config
    assert settings.AUTH_LDAP_USERNAME_ATTR and settings.AUTH_LDAP_REVERSE_EMAIL_SEARCH

    • Вернее он после установки запускается. Но при установке LDAP сразу начинается вот это

  9. Всем привет.
    Имел честь познакомиться с данным чатом на днях!
    Не завелся на Ubuntu Server 18.04 (https://github.com/zulip/zulip/issues/10834 - проблема так и не решена),
    но завелся на свежей (обновленной) ubuntu Server 16.04.6 LTS
    Первые впечатления - так себе, но.... в процессе эксплутатации (2 дня) - очень даже ничего такое =)
    1) Установка в 1 команду
    2) Работает стабильно, даже во время перезапуска сервера в консоли (дисконнект на пару секунд).
    3) Простая интеграция с AD, причем пользователи создаются ТОЛЬКО после успешной авторизации по логину (обязательное заполненное поле email), в отличие от Rocket.Chat, который синхронизирует сразу всех пользователей (хреново, если вы не настроили фильтрацию пользователей по OU).
    4) Встроенная интеграция с Jitsi (создается полноценная конференция на https://meet.jit.si)
    5) Простой и удобный (ИМХО) интерфейс
    6) Куча дополнительных интеграций (zabbix, etc), есть полноценное API, что удобно для реализации интеграции с сайтами или учетными системами типа 1с
    7) Понятная и современная архитектура (Django (python3) + RabbitMQ + PG +Redis) - можно юзать как из коробки, так и если у тебя уже есть настроенный PG к примеру, можно использовать его (поправив конфиг Zulip)
    8) Создание ботов

    Немного минусов:
    1) не полноценный перевод, но можно вступить в сообщество на transiflex (спасибо товарищу Bast, за подсказку), что я и сделал, чтобы помочь ребятам с переводом.
    2) не совсем понятна (удобна) работа с темами в канале, но думаю, это дело времени

    Буду рад помочь с вопросами, если кому нужно пишите в телегу @morevsky
    Периодически буду добавлять +-.

    • У меня начались проблемы с клиентом, когда накопилось много сообщений. Найти что-то в переписке полугодовалой давности стало невозможно. Все тормозит и зависает. Но это, похоже, проблема всех чатов на Electron. В скайпе наблюдаю все то же самое. Печальная картина :(

  10. Коллеги , пришлите конфига файла settings.py

    Заранее спасибо.

  11. Здравствуйте! Подскажите, возможно ли отключить принудительную регистрацию по email? Хотя бы отключить обязательное подтверждение.
    Как вы понимаете, использовать внешний почтовый сервер - небезопасно, требует подключения к интернету и зависимость от него, в то время как подобные корпоративные чаты должны быть абсолютно автономны.
    А чтобы поднять внутренний почтовый сервер, нужно колхозить ещё и DNS сервер и доменную систему, и как это сделать - непонятно совсем.
    Вижу пока такую картину: 1 DNS сервер dnsmasq (10.50.1.2), в файле /etc/hosts прописаны хосты, например "10.50.1.3 mail.network", а в клиентских машинах прописать альтернативный DNS - 10.50.1.2. И потом уже поднять какой-нибудь iRedMail и указать в зулипе его SMTP адрес. Насколько корректна такая схема будет?

    • Вообще, в zulip достаточно много завязано на email, так что не уверен, что без него можно обойтись. Как отключить подтверждение - не знаю, не интересовался этим вопросом. Если вам не хочется использовать внешний почтовый сервер, пользуйтесь своим внутренним. Какие проблемы?

      Ставите свой dns сервер, почтовый сервер и настраиваете в dns записи для локального почтового сервера. На сервере с zulip используйте свой локальный dns. Это все не сложно настроить. Все статьи, кстати, есть у меня на сайте, и по dns, и по почтовому серверу. Так что вы правильно рассуждаете, но чтобы реализовать, придется разбираться.

  12. ярослав

    тоже стоклнулся с проблемой что настроил почту отправил и получил тестовое письмо. А запрос на приглашение юзеров не приходит. При этом мне вываливается куча ошибок на админскую почту
    Logger root, from module zerver.worker.queue_processors line 151:
    Error generated by Anonymous user (not logged in) on cloud deployment

    Traceback (most recent call last):
    File "/home/zulip/deployments/2019-02-22-22-51-51/zerver/worker/queue_processors.py", line 134, in consume_wrapper
    self.consume(data)
    File "/home/zulip/deployments/2019-02-22-22-51-51/zerver/worker/queue_processors.py", line 222, in consume
    do_send_confirmation_email(invitee, referrer)
    File "/home/zulip/deployments/2019-02-22-22-51-51/zerver/lib/actions.py", line 4475, in do_send_confirmation_email
    from_address=FromAddress.tokenized_no_reply_address(), context=context)
    File "/home/zulip/deployments/2019-02-22-22-51-51/zerver/lib/send_email.py", line 102, in send_email
    if mail.send() == 0:
    File "/home/zulip/deployments/2019-02-22-22-51-51/zulip-py3-venv/lib/python3.5/site-packages/django/core/mail/message.py", line 348, in send
    return self.get_connection(fail_silently).send_messages([self])
    File "/home/zulip/deployments/2019-02-22-22-51-51/zulip-py3-venv/lib/python3.5/site-packages/django/core/mail/backends/smtp.py", line 111, in send_messages
    sent = self._send(message)
    File "/home/zulip/deployments/2019-02-22-22-51-51/zulip-py3-venv/lib/python3.5/site-packages/django/core/mail/backends/smtp.py", line 127, in _send
    self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n'))
    File "/usr/lib/python3.5/smtplib.py", line 862, in sendmail
    raise SMTPSenderRefused(code, resp, from_addr)
    smtplib.SMTPSenderRefused: (553, b'5.7.1 Sender address rejected: not owned by auth user.', '=?utf-8?q?yaroslav_=28via_Zulip=29?= ')

    Deployed code:
    - ZULIP_VERSION: 1.9.2
    - version: 1.9.2

    Request info: none

    • У вас конкретная ошибка smtp сервера:
      553 5.7.1 Sender address rejected: not owned by auth user
      Подозреваю, что отправляете через Яндекс почту. Там эту ошибку часто вижу. Собственно, по тексту все понятно, в чем суть ошибки. Отправитель в письме не тот, кто авторизовался в ящике. Яндекс блокирует такую отправку.

      С Zulip все в порядке.

      • Ярослав

        ну вот смотрите. при установке сервера я указал почту example@yandex.ru. После установки в веб интерфейсе при регистрации указывал эту же почту. При правке файла также указывал pochta@yandex.ru. Парль указал верный. При попытке отправить выдает тоже ошибку авторизации но тестовое письмо приходит. подскажите куда рыть?

        • Я же сказал куда копать. Текст ошибки полностью понятен и раскрывает ее суть. Если не хочется заморачиваться, используйте другой smtp сервер. Я не помню, как решал этот вопрос. Зависит от конкретной ситуации, но смысл в том, что надо в адресе отправителя задавать тот же адрес, под которым авторизуетесь. Не знаю, насколько сложно это исправить в zulip. Можно использовать в качестве smtp сервера локальный postfix, а в нем уже настроить нормальную авторизацию в яндексе. В общем, тут нужно некоторое понимание темы.

    • Евгений

      Так можно тестить отправку писем: su zulip -c '/home/zulip/deployments/current/manage.py send_test_email user@example.com'
      У меня 1 одно письмо приходило, а второе(noreply) выдавало ошибку как у вас.

      Решил редактированием след. параметров в /etc/zulip/settings.py:
      NOREPLY_EMAIL_ADDRESS = '...@yandex.ru - тот же самый ящик, что и указывался для отправки'
      ADD_TOKENS_TO_NOREPLY_ADDRESS = False

  13. Аноним

    "Мне пришлось немного повозиться с отправкой, но это из-за особенности работы бесплатной почты Яндекса."
    Не могу разобраться с отправкой почты (не могу пригласить пользователей). Тестовое сообщение отправляется и приходит. Укажите направление куда копать.

  14. Он массовую рассылку поддерживает? а то часто надо отправить сообщение нескольким сотрудникам

    • Кстати не знаю, не проверял. Не увидел сходу, как это можно сделать. По идее, так просто не отправить. Можно написать сообщение и упомянуть несколько человек в нем. Они увидят уведомление. Либо создавать отдельный чат, позвать туда всех людей и написать сообщение.

    • 1. Интеграция с RHEL/CentOS понемногу делается, видел в github пул реквесты на эту тему.
      2. Перевод делается сообществом, потому качество такое. Если хотите его улучшить - добро пожаловать https://www.transifex.com/zulip/zulip/
      3. Интеграция и LDAP/AD работает, я ее делал. По моему запросу даже дополнили инструкцию касаемо входа через email, и через username.

      Единственное чего мне не хватает во всех этих бесплатных корпоративных мессенджерах - SSO, т.е. прозрачной авторизации. Только Mattermost обещает ее в платной версии, больше нигде не видел. Хотя грех жаловаться за бесплатный продукт.
      P.S. У Zulip есть свой чат chat.zulip.org, где тусят разработчики, если есть хорошее знание английского - можно с ними пообщаться.

  15. Сергей

    https://yadi.sk/d/vWuFK9bj3aKnm5
    конфиг рабочий, пароль zulip-secrets.conf указывать без кавычек

  16. Скиньте сюда конфиг пожалкйста

  17. Ой, а можно поделиться, проверю, может тоже заведется. Мое мыло mailromanowski@gmail.com

  18. Привет, а почему не ставил сразу на Ubuntu 18.04.1 LTS?

  19. А в чем проблема с почтой yandex? я просто тоже через почту яндекса настраиваю. Все настроил порт smtp ставил 465 и пробовал 587.. Не отправлется тестовое письмо, в логах никаких ошибок

  20. Для чайников подскажите, если нет статики, можно ли через ddns поднять, и как лучше это сделать?

  21. Тоже хочу присоединиться к благодарностям за статью, очень жду статью про способ авторизации посредством LDAP.

  22. Евгений

    Устанавливал по Вашей инструкции. На виртуальной машине. Доменное имя. Емайл. Я так понимаю ошибка связана с доменным именем, но что сделать надо не пойму. Можно подробнее? Заранее спасибо.
    A)gree/(C)ancel: A
    Obtaining a new certificate
    Performing the following challenges:
    http-01 challenge for zulip.sellers.su
    Waiting for verification...
    Cleaning up challenges
    Failed authorization procedure. zulip.sellers.su (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization ::
    Invalid response from http://zulip.sellers.su/.well-known/acme-challenge/u46_RAp8nSMJYLLCmv7CquF-sDhidTjT8ztCuKNMtjE: "

    404 Not Found

    <body style="color: #444; margin:0;font:"
    IMPORTANT NOTES:
    - The following errors were reported by the server:

    Domain: zulip.sellers.su
    Type: unauthorized
    Detail: Invalid response from
    http://zulip.sellers.su/.well-known/acme-challenge/u46_RAp8nSMJYLLCmv7CquF-sDhidTjT8ztCuKNMtjE:
    "

    404 Not Found

    <body style="color: #444; margin:0;font:"

    Чтобы исправить эти ошибки, пожалуйста, убедитесь, что ваше доменное имя было введено правильно и записи DNS A / AAAA для этого домена содержать правильный IP-адрес.
    - Ваши учетные данные были сохранены в Certbot каталог конфигурации в /etc/letsencrypt. Вы должны сделать безопасное резервное копирование этой папки.
    Этот каталог конфигурации будет также содержат сертификаты и закрытые ключи, полученные Certbot so создание регулярных резервных копий этой папки идеально.

    Zulip installation failed!

    The install process is designed to be idempotent, so you can retry after resolving whatever issue caused the failure (there should be a traceback above).
    A log of this installation is available in /var/log/zulip/install.log

    • Надо поднастроить доменное имя (создать запись А со значением вашего IP для вашего поддомена chat.site.ru допустим), и настроить немного маршрутизацию если сервер у Вас не напрямую подключен. После этого установка прошла успешно

  23. Доброго.

    https://www.opennet.ru/opennews/art.shtml?num=48460
    Интегрирована поддержка видеовызовов, для проведения которых задействована свободная система видеоконференций Jitsi Meet. В будущем ожидается добавление поддержки и других провайдеров видеосвязи (в том числе Google Hangouts);

  24. Только сегодня Mattermost прикрутил вместо Rocket.Chat, а тут ещё Zulip. Не буду)

  25. Дмитрий

    Спасибо, интересные статьи, продолжайте.Хотелось бы все таки увидеть Рокетчат в вашем исполнении.

    • Посмотрим, может для сравнения напишу и на него обзор. Я видел некоторое время назад информацию, что за последние пол года у него неплохо подправили баги, и вообще он в целом стал лучше. Имеет смысл проверить эту информацию. Хотя по нему и так ее достаточно. Продукт известный, в отличие от Zulip.

      • Фаррух

        Подскажите пожалуйста знаете-ли Вы оперсорсные мессенджеры(с виде и аудио вызовом) для корпоративного использование? Zulip установил по вашей инструкции, при видео вызове он использует jitsi, а эту уже внешний трафик. Для моей задачи нужно чтоб все ходило по внутреннему трафику.

      • Евгений

        Здравствуйте. Подскажите планируете ли еще выпустить статью про Рокетчат.
        Тоже присоединяюсь к вопросу о возможных оперсорсных мессенджеров с виде и аудио вызовом, чтобы при этом трафик не выходил во внешнюю сеть.

        • Отвечая на свой вопрос.
          Покопался на сайте zulip'a. Нашел вот такую штуку https://zulipchat.com/help/start-a-call, осталось провести эксперимент (развернуть зулип и проверить работоспособность этой фичи)

        • Пока в планах нет. Желание есть обновить информацию по всем чатам, но нет времени всем этим заниматься. Да и чаты все эти на electron просто надоели. Глюкавые и тормозные поделки. У меня уже бомбит от них.

  26. Спасибо за статьи, очень интересно читать, особенно когда пишут о подводных камнях, сейчас очень трудно руководство и людей отучить от ватцапа и скайпа, а как ваше руководство смотрит на внедрение?

    • Воцап и Скайп совершенно разные продукты для разных задач. А Zulip вообще на них не похож. Как мне кажется, все эти продукты решают разные задачи. Популярные бесплатные мессенджеры подходят только для небольших коллективов. Когда у вас 100+ человек, я не представляю, как можно пользоваться воцаппом или телеграмом. Как управлять учетками, группами и т.д.? Это все подходит для личной переписки, но не для организации рабочего процесса средней и крупной компании.

      Так что уговаривать никого не приходится. Надо только нормально все объяснить.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar