Ранее на своем сайте я поднимал тему бесплатного чат-сервера, при чем не один раз. Сегодня я ее продолжу и расскажу о том, как установить и настроить бесплатный корпоративный мессенджер 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 вам необходимо:
- Выделенный сервер или виртуальная машина.
- Операционная система 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 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 прошло, пока не появилась информация о том, что сервер установлен.
Переходим по приведенной ниже ссылке, чтобы подтвердить установку и зарегистрировать организацию.
Обратите внимание, что веб сервер уже работает по https с помощью валидного сертификата. Дальше выполняете указания мастера по созданию организации. Не буду подробно на этом останавливаться. Там все очевидно и просто.
После создания организации, вы сразу же попадаете в веб интерфейс мессенджера.
На этом непосредственно установка корпоративного чата 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.
Дальше перечислю настройки, отличающиеся от дефолтных, на которые рекомендую обратить внимание:
- 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 с определенным интервалом.
Удобнее и быстрее настроить первый способ. Работает он немного криво. Я долго разбирался, чтобы понять, как его настроить по-человечески, но так и не понял. Расскажу подробнее по ходу дела. Нам нужно в конфиге задать один единственный параметр:
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.
Я долго не мог понять, почему такой адрес. Почему не просто 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 из этой компании понравился больше всего.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Добрый день, настроил все кроме 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"
Все остальное оставил по умолчанию.
Добрый день, настроил все кроме 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"
Все остальное оставил по умолчанию.
Спасибо, столкнулся с такой задачей: нужно перенести 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. В скайпе наблюдаю все то же самое. Печальная картина :(
Коллеги , пришлите конфига файла settings.py
Заранее спасибо.
Здравствуйте! Подскажите, возможно ли отключить принудительную регистрацию по 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, и по почтовому серверу. Так что вы правильно рассуждаете, но чтобы реализовать, придется разбираться.
тоже стоклнулся с проблемой что настроил почту отправил и получил тестовое письмо. А запрос на приглашение юзеров не приходит. При этом мне вываливается куча ошибок на админскую почту
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
"Мне пришлось немного повозиться с отправкой, но это из-за особенности работы бесплатной почты Яндекса."
Не могу разобраться с отправкой почты (не могу пригласить пользователей). Тестовое сообщение отправляется и приходит. Укажите направление куда копать.
Он массовую рассылку поддерживает? а то часто надо отправить сообщение нескольким сотрудникам
Кстати не знаю, не проверял. Не увидел сходу, как это можно сделать. По идее, так просто не отправить. Можно написать сообщение и упомянуть несколько человек в нем. Они увидят уведомление. Либо создавать отдельный чат, позвать туда всех людей и написать сообщение.
жаль. буду пробовать найти что-то подходящее
1. Интеграция с RHEL/CentOS понемногу делается, видел в github пул реквесты на эту тему.
2. Перевод делается сообществом, потому качество такое. Если хотите его улучшить - добро пожаловать https://www.transifex.com/zulip/zulip/
3. Интеграция и LDAP/AD работает, я ее делал. По моему запросу даже дополнили инструкцию касаемо входа через email, и через username.
Единственное чего мне не хватает во всех этих бесплатных корпоративных мессенджерах - SSO, т.е. прозрачной авторизации. Только Mattermost обещает ее в платной версии, больше нигде не видел. Хотя грех жаловаться за бесплатный продукт.
P.S. У Zulip есть свой чат chat.zulip.org, где тусят разработчики, если есть хорошее знание английского - можно с ними пообщаться.
https://yadi.sk/d/vWuFK9bj3aKnm5
конфиг рабочий, пароль zulip-secrets.conf указывать без кавычек
Скиньте сюда конфиг пожалкйста
https://yadi.sk/d/vWuFK9bj3aKnm5
Сам я не проверял его.
У меня с ним не заработало, но это из-за нюансов в моей AD. Сделал по другому, отписался по почте
У меня заработало
Ой, а можно поделиться, проверю, может тоже заведется. Мое мыло mailromanowski@gmail.com
Привет, а почему не ставил сразу на Ubuntu 18.04.1 LTS?
На момент написания статьи Ubuntu 18 либо еще в релиз не ушел, либо еще не поддерживался зулипом.
С AD в итоге получилось подружить?
Мне прислал один читатель конфиг, сказал, что у него завелось. Сам я не проверял.
А в чем проблема с почтой yandex? я просто тоже через почту яндекса настраиваю. Все настроил порт smtp ставил 465 и пробовал 587.. Не отправлется тестовое письмо, в логах никаких ошибок
Для чайников подскажите, если нет статики, можно ли через ddns поднять, и как лучше это сделать?
Тоже хочу присоединиться к благодарностям за статью, очень жду статью про способ авторизации посредством LDAP.
Устанавливал по Вашей инструкции. На виртуальной машине. Доменное имя. Емайл. Я так понимаю ошибка связана с доменным именем, но что сделать надо не пойму. Можно подробнее? Заранее спасибо.
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 допустим), и настроить немного маршрутизацию если сервер у Вас не напрямую подключен. После этого установка прошла успешно
Доброго.
https://www.opennet.ru/opennews/art.shtml?num=48460
Интегрирована поддержка видеовызовов, для проведения которых задействована свободная система видеоконференций Jitsi Meet. В будущем ожидается добавление поддержки и других провайдеров видеосвязи (в том числе Google Hangouts);
Только сегодня Mattermost прикрутил вместо Rocket.Chat, а тут ещё Zulip. Не буду)
А чем Рокет не зашёл?
Унылое мобильное приложение не понравилось. Их аж три версии, и каждая со своими кхм... особенностями.
У Mattermost, когда я смотрел, мобильное приложение было тоже очень унылое.
Ощущение складывается такое, что и нет какой-то золотой середины.
Спасибо, интересные статьи, продолжайте.Хотелось бы все таки увидеть Рокетчат в вашем исполнении.
Посмотрим, может для сравнения напишу и на него обзор. Я видел некоторое время назад информацию, что за последние пол года у него неплохо подправили баги, и вообще он в целом стал лучше. Имеет смысл проверить эту информацию. Хотя по нему и так ее достаточно. Продукт известный, в отличие от Zulip.
Подскажите пожалуйста знаете-ли Вы оперсорсные мессенджеры(с виде и аудио вызовом) для корпоративного использование? Zulip установил по вашей инструкции, при видео вызове он использует jitsi, а эту уже внешний трафик. Для моей задачи нужно чтоб все ходило по внутреннему трафику.
Здравствуйте. Подскажите планируете ли еще выпустить статью про Рокетчат.
Тоже присоединяюсь к вопросу о возможных оперсорсных мессенджеров с виде и аудио вызовом, чтобы при этом трафик не выходил во внешнюю сеть.
Отвечая на свой вопрос.
Покопался на сайте zulip'a. Нашел вот такую штуку https://zulipchat.com/help/start-a-call, осталось провести эксперимент (развернуть зулип и проверить работоспособность этой фичи)
Пока в планах нет. Желание есть обновить информацию по всем чатам, но нет времени всем этим заниматься. Да и чаты все эти на electron просто надоели. Глюкавые и тормозные поделки. У меня уже бомбит от них.
Спасибо за статьи, очень интересно читать, особенно когда пишут о подводных камнях, сейчас очень трудно руководство и людей отучить от ватцапа и скайпа, а как ваше руководство смотрит на внедрение?
Воцап и Скайп совершенно разные продукты для разных задач. А Zulip вообще на них не похож. Как мне кажется, все эти продукты решают разные задачи. Популярные бесплатные мессенджеры подходят только для небольших коллективов. Когда у вас 100+ человек, я не представляю, как можно пользоваться воцаппом или телеграмом. Как управлять учетками, группами и т.д.? Это все подходит для личной переписки, но не для организации рабочего процесса средней и крупной компании.
Так что уговаривать никого не приходится. Надо только нормально все объяснить.