Устанавливаем Rocket.Chat на платформе Docker, настраиваем обратный прокси для HTTPS-доступа и выполняем интеграцию с Active Directory
устанавливаем Docker Engine - Community и Docker Compose, как рассказывается в этой статье
создаем папку для хранения параметров развертывания контейнеров
mkdir /etc/docker/rocketchat
создаем файл /etc/docker/rocketchat/docker-compose.yml с параметрами развертывания контейнеров
version: '3.7'
networks:
net:
ipam:
config:
- subnet: 192.168.102.1/24
volumes:
db:
conf:
app:
proxy:
services:
db:
container_name: rocketchat_db
image: mongo:latest
networks:
- net
volumes:
- db:/data/db
- conf:/data/configdb
command: mongod --replSet rs0
restart: always
app:
depends_on:
- db
container_name: rocketchat_app
image: rocket.chat:latest
networks:
- net
volumes:
- app:/app/uploads
environment:
- PORT=3000
- ROOT_URL=https://chat.domain.com/
- MONGO_URL=mongodb://db/rocketchat
- MONGO_OPLOG_URL=mongodb://db/local
restart: always
proxy:
depends_on:
- app
container_name: rocketchat_proxy
image: httpd
networks:
- net
ports:
- 80:80
- 443:443
volumes:
- proxy:/usr/local/apache2
restart: always
создаем контейнеры, разделы и сети
docker-compose -f /etc/docker/rocketchat/docker-compose.yml up --no-start
запускаем контейнер базы данных
docker container start rocketchat_db
подключаемся к контейнеру
docker exec -t -i rocketchat_db bash
запускаем интерфейс командной строки MongoDB
mongo
выполняем инициализацию набора репликации
rs.initiate({ _id : "rs0", members: [{ _id: 0, host: "localhost:27017" }] })
проверяем параметры и статус репликации
rs.conf()
rs.status()
выходим из интерфейса командной строки MongoDB
exit
отключаемся от контейнера базы данных
exit
запускаем контейнер приложения
docker container start rocketchat_app
запускаем контейнер прокси
docker container start rocketchat_proxy
настраиваем Apache контейнера прокси так же, как в этой статье, за исключением следующего:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
<VirtualHost *:80>
Redirect permanent / https://chat.domain.com/
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateKeyFile /usr/local/apache2/conf/private.key
SSLCertificateFile /usr/local/apache2/conf/public.cer
SSLCertificateChainFile /usr/local/apache2/conf/chain.cer
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://app:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://app:3000/$1 [P,L]
ProxyPassReverse / http://app:3000/
</VirtualHost>
проходим в браузере по ссылке https://chat.domain.com
в разделе "Администрирование - Настройки - Протокол LDAP" выполняем настройку интеграции с Active Directory
основные
включить LDAP - да
резервная авторизация - да (иначе авторизация под локальным администратором будет невозможна)
найти пользователя после входа в систему - да
хост - dc.domain.local
ldap-порт - 389
переподключение - да
шифрование - без шифрования
base DN - cn=users,dc=domain,dc=local
аутентификация
включить - да
user DN - cn=rocketchat,cn=users,dc=domain,dc=local
пароль - ...
синхронизация/импорт
поле "Имя пользователя" - sAMAccountName
поле уникального идентификатора - objectGUID
домен по умолчанию - не указан
объединить существующих пользователей - да
синхронизация пользовательских данных - да
карта пользовательских данных - {"displayName":"name", "mail":"email"}
синхронизация групп - нет
синхронизация пользовательских аватаров - да
фоновая синхронизация - да
интервал фоновой синхронизации - every 8 hours
фоновая синхронизация импортирует новых пользователей - да
Фоновая синхронизация обновляет сущестующих пользователей - да
поиск пользователей
фильтр - (&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(memberOf:1.2.840.113556.1.4.1941:=cn=пользователи rocket.chat,cn=users,dc=domain,dc=local))
область - sub
поле поиска - sAMAccountName
замечание: для успешного импорта пользователей соответствующие учетные записи Active Directory должны включать атрибут mail
включаем использование для отображения имен пользователей атрибута displayName (вместо sAMAccountName)
внешний вид - пользовательский интерфейс - использовать настоящее имя - да
включаем поддержку кириллицы в названиях каналов
общие настройки - UTF8 - проверка имен UTF8 - добавляем диапазоны символов А-Яа-я
выполняем тихую установку клиентов использую параметры установщика /S /allusers /disableAutoUpdates