Установка и настройка мессенджера Zulip
Ранее на своем сайте я поднимал тему бесплатного чат-сервера, при чем не один раз. Сегодня я ее продолжу и расскажу о том, как установить и настроить бесплатный корпоративный мессенджер Zulip. В целом мне понравился этот продукт и показался простым и удобным, но не без недостатков, о которых упомяну.
Введение
Начну с того, что расскажу, о чем уже писал на сайте:
- Форк слака - mattermost. В целом понравился, работает нормально, особых багов нет. Но в бесплатной версии много ограничений и мало функционала. В статье все это указано, плюс много полезных комментариев. Видел этот сервер в реальной эксплуатации. Пользоваться можно, если вас устраивает функционал. к нему. Хороший функционал в бесплатной версии, но показался сырым. Все подробности и мое мнение про продукту представлено в статье, рекомендую ознакомиться. . Обширный функционал и хорошая документация. Бесплатная версия на 20 пользователей с небольшими ограничениями. Невысокая цена за полную версию. Стабильный, легкий быстрый клиент как для PC, так и для смартфона.
Если вы выбираете для себя корпоративный мессенджер, рекомендую ознакомиться со статьями и попробовать как минимум поставить сервер и хотя бы одним глазком взглянуть на него. Продукты вполне рабочие и возможно вам подойдут.
Zulip в этом плане не сильно хуже или лучше, он в целом похож немного на mattermost и прочие клоны slack. Мне он понравился, так как не заметил существенных недостатков, но в целом они тоже есть и для кого-то будут критичными. Перечислю их:
- Сервер только под Ubuntu. В плане установки и настройки каких-то серьезных проблем в связи с этим нет. Но если у вас вся инфраструктура на других дистрибутивах, не хочется использовать сторонние дистрибутивы. Как минимум, поддержку Centos и Debian можно было бы сделать. Лично я предпочитаю именно их. Есть возможность самому руками поставить все компоненты и связать друг с другом, но это очень хлопотно. Я в итоге взял убунту и поставил все автоматом на нее.
- Плохая русификация. Когда выбираешь русский язык, тебе честно говорят, что переведено 97%, но на деле в настройках достаточно много пунктов на английском языке, перемешанных с русскими. Пользоваться в таком формате очень неудобно, поэтому остается только вариант использовать английский язык. Либо оставлять как есть, но лично я не люблю, когда что-то сделано коряво. Если переводить, то все, а не так, как сделано. Но тут важный момент. Когда я начинал писать статью, перевод был значительно хуже. С выходом последней версии 1.8.0 перевод улучшился значительно.
- Некоторый функционал работает не очевидно и не очень понятно. Например, отправка уведомления в чаты через email. Если у вас русские названия чатов, то работать это не будет. Так же не очень понятно, как настроить авторизацию через ldap c AD. Информации в документации не достаточно.
Среди плюсов отмечу следующее:
- Хорошая документация, за исключением отдельных моментов. Это редкость. В интернете нет никаких статей и примеров настройки, но я смог почти все сделать и во всем разобраться по документации. Можете сами оценить - pdf.
- Простой и лаконичный интерфейс. Ничего лишнего, в основном все интуитивно понятно.
- Отдельные ветки обсуждений в одной конференции. К примеру, можно создать конференцию ИТ отдел и в ней выделить несколько тем со своим ветвением диалогов. Например - закупки, поддержка пользователей, настройка серверов, заявки и т.д.
- Возможность пересылки сообщений из email сразу в конференцию. Можно создать почтовый алиас, письма, отправленные в этот алиас, будут автоматом падать в конференцию в чате.
- Хорошее логирование всех событий. Легко дебажить настройку.
Ниже схема работы серверной части мессенджера.
В общем и целом продукт оставил приятное впечатление. Добротный и качественный софт без лишних багнутых свистелок. Приступим к его установке.
Системные требования
У сервера 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 Так даже будет правильнее, потому что документация, скорее всего, будет более актуальной, чем моя статья. А если вам не хочется разбираться с документацией, то смотрите краткую выжимку из нее далее.
У меня следующая версия системы:
Я сразу буду работать под root, без sudo.
Скачиваем сервер zulip:
chat@serveradmin.ru почтовый ящик администратора чата zulip.zeroxzed.ru доменное имя будущего сервера
Обращаю внимание на доменное имя. Для него нужен будет валидный сертификат. Либо уже существующий, либо получим бесплатный от let's encrypt. Без нормального сертификата использовать zulip неудобно, так как пользоваться им будем в основном через браузер.
Я получил ошибку установки.
Досадно. Я рассчитывал, что для тестовой версии, работающей без нагрузки, мне будет достаточно гигабайта памяти. Но увы, сервер даже не захотел установиться на виртуалку, где меньше 2gb оперативной памяти.
Я для тестов использую виртуальные машины ihor, которые можно заказывать на сутки. Минимальная конфигурация стоит 10р. в день, с 2 гигабайтами памяти 14р. Очень удобно. Раньше свои сервера использовал, но со временем понял, что проще и дешевле пользоваться услугами хостеров. В итоге просто добавил к виртуалке еще один гигабайт оперативной памяти и перезагрузил ее. Продолжаем установку.
Установщик сразу попробует получить сертификат от let's encrypt с помощью certbot. Для этого нужно будет подтвердить лицензионное соглашение.
У меня сервер имеет выделенный ip адрес, доменное имя zulip.zeroxzed.ru настроено и нормально резолвится. Так что я сразу автоматически получил валидный сертификат для zulip сервера. Удобно сделан установщик - экономит наше время на настройку.
Установка будет длиться значительное время. У меня минут 15 прошло, пока не появилась информация о том, что сервер установлен.
Переходим по приведенной ниже ссылке, чтобы подтвердить установку и зарегистрировать организацию.
Обратите внимание, что веб сервер уже работает по https с помощью валидного сертификата. Дальше выполняете указания мастера по созданию организации. Не буду подробно на этом останавливаться. Там все очевидно и просто.
После создания организации, вы сразу же попадаете в веб интерфейс мессенджера.
На этом непосредственно установка корпоративного чата zulip закончена. Перейдем к его настройке.
Настройка Zulip
Отправка email сообщенийНа предыдущем скриншоте видно, что сервер в самом верху выдал предупреждение о том, что надо настроить отправку email. Это нужно для отправления подтверждений регистрации, уведомлений о поступающих сообщения, когда вы в онлайне и для других нужд. Сервер активно использует email рассылки. Так что рекомендую обязательно настроить отправку почтовых сообщений.
Все настройки сервера хранятся в конфигурационном файле /etc/zulip/settings.py. Причем, они там неплохо задокументированы. Я первоначальную настройку выполнял только по этим комментариям. Потом уже пошел читать документацию.
Итак, настраиваем отправку email. Я буду использовать бесплатный ящик на яндексе с адресом - chat@serveradmin.ru. Настройка других провайдеров будет аналогичной, отличаться будут только адрес smtp сервера и рабочий порт.
Указываем следующие настройки для отправки email:
В файл /etc/zulip/zulip-secrets.conf добавляем пароль от ящика.
Зайдем в консоль под пользователем zulip и перезапустим сервер для применения настроек.
Проверяем отправку почты:
В указанный ящик должно упасть тестовое письмо. Если это не так, то разбирайтесь с ошибками. В этом помогут следующие лог файлы:
- /var/log/zulip/errors.log
- /var/log/zulip/send_email.log
- /var/log/zulip/queue_error/email_senders.errors
Мне пришлось немного повозиться с отправкой, но это из-за особенности работы бесплатной почты Яндекса. Со своим сервером проблем никаких не было. Если будете использовать почтовый ящик от gmail, то у разработчиков есть рекомендации на этот счет. Если есть свой почтовый сервер, то лучше пользоваться им.
Базовые настройки сервера и клиента zulipВыполним несколько настроек, которые мне показались полезными. Сначала начнем с сервера. Заходим в чат, нажимаем справа вверху на шестерёнку, попадаем в настройки. Выбираем вкладку Organization.
Дальше перечислю настройки, отличающиеся от дефолтных, на которые рекомендую обратить внимание:
- 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 поддерживает несколько типов авторизации:
- Email and password. Данный способ доступен по-умолчанию и не требует отдельной настройки. Работает сразу после установки.
- Google accounts. Стандартная гугловская авторизация. Как ее подключить, описано в конфигурационном файле в комментариях.
- GitHub accounts.То же самое, что и гугл авторизация, только от github. По идее, что гугл, что гитхаб настраиваются просто, судя по описанию, но я не проверял.
- LDAP server. Тут можно использовать сервер AD от Microsoft. Очень привлекательная возможность, но у меня сходу не получилось настроить. Надо внимательно разбираться. Планирую сделать это и дополнить статью, либо написать отдельно.
- Apache-based SSO. Не понял точно, что это такое. Сам не сталкивался, судя по описанию, мне не очень надо, но подробно не смотрел.
Более подробно о способах авторизации рассказано в соответствующем разделе документации. Лично меня заинтересовал только первый и четвертый. Постараюсь позже разобраться с настройкой авторизации через LDAP в виде AD. Сходу не завелось.
Отправка сообщений в чат через emailКаждому чату в Zulip можно назначить почтовый алиас, который будет передавать почтовые сообщения, отправленные на этот алиас прямиком в чат. По-умолчанию данная функция не работает. Ее нужно настраивать отдельно. Этим и займемся. Есть 2 способа настроить данный функционал:
- Использовать локальный почтовый сервис.
- Использовать сторонний почтовый ящик, подключаясь к нему по imap с определенным интервалом.
Удобнее и быстрее настроить первый способ. Работает он немного криво. Я долго разбирался, чтобы понять, как его настроить по-человечески, но так и не понял. Расскажу подробнее по ходу дела. Нам нужно в конфиге задать один единственный параметр:
После этого выполняем от рута команду:
Теперь создадим новый канал, например IT. Для этого открываем настройки и заходим в Manage streams.
Создаем новый канал. В свойствах канала видим адрес, на который можно отправлять письма. В моем случае это адрес IT+09bf1d51e0ce94d4c6fa191e0a979d7e@zulip.zeroxzed.ru.
Я долго не мог понять, почему такой адрес. Почему не просто it@zulip.zeroxzed.ru. Но увы, понять не смог. Попытки как-то это исправить ни к чему не привели. Я перечитал всю документацию, все что смог найти в гугле, но ничего не помогло. Перестал искать после того, как увидел описание этого функционала на zulipchat - https://zulipchat.com/integrations/doc/email Я понял, что так и было задумано.
Теперь для того, чтобы сервер zulip мог получать почту, необходимо создать MX запись для домена zulip.zeroxzed.ru. Я это сделал через редактор доменных записей. Должно получиться примерно вот так:
После этого отправил письмо на ящик канала и оно действительно попало в чат. То есть функционал вполне рабочий. Реализован с помощью postfix. Он принимает письма, потом передает в зулиповский доставщик почты. Информация о входящих письмах отражается в системном почтовом логе /var/log/mail.log. Если что, смотрите туда. Если там писем нет, значит они не доходят до сервера. Разбирайтесь, почему это так. Возможно не настроен фаервол или неправильно указаны dns записи.
Заключение
Я рассмотрел, как мне показалось, основные моменты, на которые стоит обратить внимание при установке и настройке zulip мессенджера. Такие моменты, как создание каналов, отправку сообщений, картинок и т.д. не стал описывать. Тут и так все понятно, надо самому зайти и посмотреть.
В целом, этот мессенджер подходит на роль корпоративного. Сделан добротно, каких-то существенных багов я не заметил. Правда, в эксплуатацию чат еще не вводил, пока только готовлюсь. Думаю, буду его использовать. Из бесплатного, он мне понравился больше, чем все, что я видел до него. Конечно, не без недостатков, но мне они показались не критичными.
Я забыл рассказать про десктопную и мобильную версию клиента. Десктопная практически ничем не отличается от того, что вы видите в браузере. Как я понимаю, это просто обертка, которая работает так же как и браузер по http. Там все идентично web версии, так что рассказывать не о чем. Мобильная версия ставится через google play. Мне в целом понравилась. Работает быстро, ничего лишнего, общаться удобно, уведомления есть.
Еще раз поднимаю тему бесплатного корпоративного мессенджера и прошу поделиться своими мыслями и предложениями на этот счет в комментариях. Сразу скажу, что лично устанавливал и тестировал Mattermost (эксплуатировал длительное время в реальном коллективе), Rocket.Chat (только тестировал, показался очень багнутым), Matrix (показался сыроват, но в целом ничего), Mychat (штука платная, но стоит недорого, внимательно его тестировал, но не понравился дремучий интерфейс "привет из 2000-х"). Zulip из этой компании понравился больше всего.
Онлайн курcы по Mikrotik
- Знания, ориентированные на практику;
- Реальные ситуации и задачи;
- Лучшее из международных программ.
Спасибо, столкнулся с такой задачей: нужно перенести zulip на другой домен/сервер и обновить до актуальной версии, может ли кто подсказать, как лучше организовать сей процесс?
У меня вот такая ситуация, нужно перенести zulip на другой сервер, попутно может и версию обновить. Достаточно ли будет дамп базы перенести? Ну и конфиги, конечно.
Коллеги, приветствую. Скиньте рабочий конфиг, плиз.
Добрый день Правильно понимаю, что развернув систему, коллеги могут пользоваться как десктопными версиями, так и с андроид и айос? И еще, нам нужно будет самостоятельно менять иконку приложения на смартфонах на нашу и публиковать приложение?
Пользоваться могут, а причем тут иконка и публикация?
Здравствуйте. Есть свой сервер со статическим ip, можно ли все настроить без домена? Просто везде в инструкциях используются домен, а хочется без него. Домен купить не сложно, но хочется без него попробовать =)
Ну вы можете на него пробросить днс. либо оставить айпишник. Ни кто не запрещает Вам.
Конечно можно. Используйте везде ip вместо доменного имени и настраивайте.
Инструкия почему то в последнее время вот это выдает 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 сразу начинается вот это
Всем привет. Имел честь познакомиться с данным чатом на днях! Не завелся на 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. В скайпе наблюдаю все то же самое. Печальная картина :(