Используемые термины: Zulip , Ubuntu .
В данной инструкции мы установим в выполним основные настройки для корпоративного сервера чата Zulip. В качестве операционной системы будет использоваться Linux Ubuntu 20.04 (на данный момент поддерживаются только Debian и Ubuntu).
Требования к инфраструктуре
Подготовка системы
Установка Zulip
Отправка уведомлений по почте
Настройка уведомлений на мобильные устройства
Вход в систему под учетными записями LDAP
Читайте также
Zulip предъявляет к инфраструктуре некоторые принципиальные требования, без удовлетворения которых мы не сможем его установить:
Ссылки на инструкции по настройке постовой системы и DNS смотрите ниже .
Как показывает практика, первых 2 пункта условные — если залезть в настройки поглубже, то можно их обойти.
Выполним некоторые настройки перед тем, как приступим к установке зулипа.
Для правильного отображения времени сообщения, настроим его синхронизацию.
Сначала выставим часовой пояс:
timedatectl set-timezone Europe/Moscow
Устанавливаем программу для синхронизации времени и разрешаем ее автозапуск:
apt-get install chrony
systemctl enable chrony
По умолчанию, в системе Ubuntu фаервол ничего не запрещает и в его настройке нет необходимости. Если же мы его настраивали за запрет, нужно убедиться в том, что порты для работы веб-сервера открыты:
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
iptables -I INPUT -p tcp —dport 443 -j ACCEPT
Для сохранения правил используем iptables-persistent:
apt-get install iptables-persistent
netfilter-persistent save
Мы готовы перейти к установке.
Процесс развертывания прост — достаточно скачать дистрибутив и запустить скрипт установки, который все сделает за нас.
Загрузку выполним командой:
wget https://www.zulip.org/dist/releases/zulip-server-latest.tar.gz
Распакуем скачанный архив:
tar zxf zulip-server-latest.tar.gz
Запускаем скрипт для установки:
./zulip-server-*/scripts/setup/install —certbot —email=postmaster@remontka.com —hostname=zulip.remontka.com
* в данном примере мы указали установщику получить бесплатный сертификат от Let’s Encrypt (опция certbot).
Однако, если мы предполагаем только внутреннее использование (без публикации в Интернет) или наш сервер будет работать через http-прокси, то получить сертификат от Let’s Encrypt мы не сможем, и установщик вернет ошибку. Для этого есть опция self-signed-cert , которая сгенерирует самоподписанный сертификат:
./zulip-server-*/scripts/setup/install —self-signed-cert —email=postmaster@remontka.com —hostname=zulip.remontka.com
** нам нужно передать 2 обязательных параметра — адрес почты и имя хоста, по которому мы будем заходить в чат.
Команда будет выполняться некоторое время. Если мы выполнили ее с опцией для получения сертификата от Let’s Encrypt, на определенном этапе установщик запросит принять соглашение — отвечаем утвердительно:
(A)gree/(C)ancel: A
В итоге мы получим сообщение:
Please visit the following secure single-use link to register your
new Zulip organization:
https://zulip.remontka.com/new/5omfct4jpnimufagc66xadbn
Установка, почти, завершена — осталось перейти по ссылке в данном сообщении. В нашем примере, переходим на страницу https://zulip.remontka.com/new/5omfct4jpnimufagc66xadbn . Мы должны увидеть форму для создания организации — вводим электронную почту:
Кликаем по Создать организацию . На следующей странице заполняем форму создания организации и кликаем Зарегистрироваться :
* в данной форме мы указываем название организации, адрес почты администратора, логин и пароль для первой учетной записи.
Готово. Сервер развернут.
Как говорилось выше, для zulip важно наличие рабочего почтового сервера для отправки сообщений. В данной инструкции мы не будем рассматривать настройку почтового сервера — ссылку на нужную информацию можно найти ниже .
Выполним настройку Zulip для использования сервера MTA. Для этого открываем файл:
vi /etc/zulip/settings.py
Приводим к виду следующие опции:
EMAIL_HOST = ‘smtp.remontka.com’
EMAIL_HOST_USER = ‘postmaster@remontka.com’
Если наш почтовый агент требует подключения по защищенному каналу, добавляем опции:
EMAIL_USE_TLS = True
EMAIL_PORT = 587
* где:
Открываем файл:
vi /etc/zulip/zulip-secrets.conf
Добавляем опцию для прохождения аутентификации на почтовом сервере:
email_password = abcd1234
* в данном примере предполагается использование пароля abcd1234 для учетной записи postmaster@remontka.com , которую мы указали выше. Обратите внимание, что мы можем настроить почтовую систему таким образом, что аутентификация не потребуется — в этом случае нет необходимости в редактировании данного файла.
Пробуем отправить тестовое сообщение:
su zulip -c «/home/zulip/deployments/current/manage.py send_test_email postmaster@remontka.com»
* в данном примере на тот же ящик postmaster@remontka.com .
Если письмо отправляется, перезагружаем наш сервис для применения настроек:
su zulip -c «/home/zulip/deployments/current/scripts/restart-server»
Мы можем установить приложение для работы с чатом на мобильное устройство. Однако, мы не будем видеть уведомления при получении новых сообщений. Чтобы это исправить, нам нужно настроить PUSH_NOTIFICATION.
Открываем файл:
vi /etc/zulip/settings.py
Снимаем комментарий:
PUSH_NOTIFICATION_BOUNCER_URL = ‘https://push.zulipchat.com’
Выполняем регистрацию нашего сервера на сервисе push.zulipchat.com:
su zulip -c ‘/home/zulip/deployments/current/manage.py register_server’
Система попросит принять соглашение — отвечаем утвердительно:
To register, you must agree to the Zulipchat Terms of Service: https://zulip.com/terms/
Do you agree to the Terms of Service? [Y/n] Y
Готово. Перезагружаем zulip:
su zulip -c «/home/zulip/deployments/current/scripts/restart-server»
В настройках zulip в веб-интерфейсе нужно убедиться, что у нас выставлена галочка для получения уведомлений на мобильные устройства:
Дополнительно рассмотрим возможность входа в систему под учетными записями, хранящимися в LDAP. В нашем примере будет использоваться реализация на базе Microsoft Active Directory .
1. Прежде всего подключимся к серверу LDAP и создадим учетную запись, которая будет использоваться для подключения к каталогу.
Предположим, что мы создали пользователя zulip с паролем zulip_ldap_password .
2. Переходим на сервер zulip и открываем файл:
vi /etc/zulip/zulip-secrets.conf
Добавим опцию:
auth_ldap_bind_password = zulip_ldap_password
* опция auth_ldap_bind_password позволяет указать пароль для LDAP BIND пользователя (в нашем примере, пароль — zulip_ldap_password ).
Теперь открываем файл с настройками zulip:
vi /etc/zulip/settings.py
Приводим к виду следующие основные настройки:
AUTHENTICATION_BACKENDS: Tuple[str, …] = (
…
‘zproject.backends.ZulipLDAPAuthBackend’, # LDAP, setup below
..
)
## LDAP integration.
##
## Zulip supports retrieving information about users via LDAP, and
## optionally using LDAP as an authentication mechanism.
…
AUTH_LDAP_SERVER_URI = «ldap://dc1.remontka.com»
…
AUTH_LDAP_BIND_DN = «zulip»
…
AUTH_LDAP_USER_SEARCH = LDAPSearch(
«dc=remontka,dc=ru», ldap.SCOPE_SUBTREE, «(sAMAccountName=%(user)s)»
)
…
LDAP_APPEND_DOMAIN = «remontka.com»
…
LDAP_EMAIL_ATTR = «mail»
…
AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch(«dc=remontka,dc=ru»,
ldap.SCOPE_SUBTREE, «(mail=%(email)s)»)
…
AUTH_LDAP_USERNAME_ATTR = «sAMAccountName»
Если мы хотим ограничить доступ по группам, добавим опции:
AUTH_LDAP_REQUIRE_GROUP = «cn=enabled,ou=groups,dc=example,dc=com»
AUTH_LDAP_DENY_GROUP = «cn=disabled,ou=groups,dc=example,dc=com»
* где:
Проверяем нашу настройку:
su zulip -c «/home/zulip/deployments/current/manage.py query_ldap ldap_user»
* где ldap_user — имя учетной записи в LDAP.
Мы должны увидеть что-то на подобие:
full_name: ldap_user
email: ldap_user@remontka.com
* ldap_user — учетная запись; ldap_user@remontka.com — адрес электронной почты для учетной записи.
Перезапускаем сервис zulip:
su zulip -c «/home/zulip/deployments/current/scripts/restart-server»
В инструкции не говорится о развертывании некоторых сервисов, работа которых нужна для Zulip. Более подробную информацию можно найти в статьях:
1. Установка и настройка bind на Ubuntu .
2. Большой почтовый сервер на Ubuntu Server .
3. Получение бесплатного SSL сертификата Let’s Encrypt .
4. Как установить роль контроллера домена на Windows Server .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…