Categories: Шпаргалки

Установка и настройка сервера Zulip на Ubuntu

Используемые термины: Zulip , Ubuntu .

В данной инструкции мы установим в выполним основные настройки для корпоративного сервера чата Zulip. В качестве операционной системы будет использоваться Linux Ubuntu 20.04 (на данный момент поддерживаются только Debian и Ubuntu).

Программно-аппаратные требования

Zulip предъявляет к инфраструктуре некоторые принципиальные требования, без удовлетворения которых мы не сможем его установить:

  • Настроенное доменное имя, по которому мы будем подключаться к чату. Для этого в нашей локальной системе DNS должна быть соответствующая А-запись, которая ведет на сервер Zulip. В данной инструкции предполагается, что мы используем имя zulip.remontka.com .
  • Наличие почтового сервера, через который мы будем отправлять приглашения новым пользователям.
  • 2GB RAM и 10GB дискового пространства — в противном случае, установщик вернет ошибку.

Ссылки на инструкции по настройке постовой системы и 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

* где:

  • EMAIL_HOST — адрес почтового сервера для отправки сообщений.
  • EMAIL_HOST_USER — email, от которого система будет отправлять письма.
  • EMAIL_USE_TLS — использовать или нет защищенное соединение TLS.
  • EMAIL_PORT — порт, к которому нужно подключаться для отправки почты.

Открываем файл:

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 уведомления для мобильных устройств

Мы можем установить приложение для работы с чатом на мобильное устройство. Однако, мы не будем видеть уведомления при получении новых сообщений. Чтобы это исправить, нам нужно настроить 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

Дополнительно рассмотрим возможность входа в систему под учетными записями, хранящимися в 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»

* где:

  • AUTHENTICATION_BACKENDS — группа опций, где перечислены методы аутентификации. По умолчанию все, кроме email закомментированы. В нашем случае мы должны снять комментарий с опции zproject.backends.ZulipLDAPAuthBackend .
  • AUTH_LDAP_SERVER_URI — адрес, по которому мы должны подключаться к нашему серверу LDAP.
  • AUTH_LDAP_BIND_DN — учетная запись, под которой мы должны подключаться к LDAP. В нашем примере, под zulip .
  • AUTH_LDAP_USER_SEARCH — область поиска объектов для входа в систему. В данном примере мы указали на корень домена remontka.com (при желании, можно ограничить определенным контейнером или организационным юнитом). Тут же мы указали, что в качестве логинов для входа нам нужно использовать атрибут sAMAccountName .
  • LDAP_APPEND_DOMAIN — указываем конкретный домен, для которого будет выполняться аутентификация через LDAP.
  • LDAP_EMAIL_ATTR — указываем атрибут в LDAP, в котором хранятся адреса email пользователей.
  • AUTH_LDAP_REVERSE_EMAIL_SEARCH — область поиска объектов для получения email-адресов.
  • AUTH_LDAP_USERNAME_ATTR — атрибут для имени учетной записи.
  • AUTH_LDAP_REQUIRE_GROUP — группа, в которую должны входить пользователи, чтобы они могли входить в Zulip.
  • AUTH_LDAP_DENY_GROUP — группа, пользователям которой необходимо запретить вход.

Проверяем нашу настройку:

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 .

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago