Устанавливаем 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 контейнера прокси так же, как в этой статье, за исключением следующего:
    • определения виртуальных хостов должны иметь вид
    • <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>
      
    • дополнительно должны быть включены модули mod_rewrite и mod_proxy_wstunnel
    • LoadModule rewrite_module modules/mod_rewrite.so
      LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
  • проходим в браузере по ссылке 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
  • Добавить комментарий