Устанавливаем 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
  • Добавить комментарий

    Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания применять.