Будет описан процесс установки Rocket Chat с версией сервера 4.3.1 и версией клиента 3.7.6 на Ubuntu Server 20
Установка сервера
Все следующие команды выполняются с правами суперпользователя
apt-get update
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
apt-get install -y build-essential mongodb-org nodejs graphicsmagick
npm install -g inherits nИ можно установить нужную версию Node.js командой
n 12.22.1
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgzРаспаковать его
tar -xzf /tmp/rocket.chat.tgz -C /tmpМожно удалить архив
rm /tmp/rocket.chat.tgzПерейти в каталог для установки
cd /tmp/bundle/programs/serverИ установить
npm installПереместить и переименовать каталог с Rocket Chat
mv /tmp/bundle /opt/Rocket.Chat
useradd -M rocketchat usermod -L rocketchatИзменить владельца каталога
chown -R rocketchat:rocketchat /opt/Rocket.Chat
Нужно создать файл
touch /lib/systemd/system/rocketchat.serviceИ записать в него следующее
[Unit] Description=The Rocket.Chat server After=network.target remote-fs.target nss-lookup.target mongod.service [Service] ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js StandardOutput=syslog StandardError=syslog SyslogIdentifier=rocketchat User=rocketchat Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://rocketchat:3000 PORT=3000 [Install] WantedBy=multi-user.targetВ параметре ROOT_URL указывается hostname сервера, на котором устанавливается Rocket Chat, по этому имени можно будет осуществлять подключение клиента, вместо ip-адреса сервера
Для mongoDB 4.0 и ниже выполнить
sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.confДля mongoDB 4.2 и выше выполнить
sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.confЭти команды изменяют конфигурацию в файле /etc/mongod.conf
systemctl enable mongod systemctl start mongod
systemctl status mongodЕсть такие ошибки
mongod.service: Main process exited, code=dumped, status=4/ILL mongod.service: Failed with result 'core-dump'.Возможно дело в том, что mongoDB последних версий не поддерживает старые процессоры и нужно удалить установленную версию mongoDB командами
apt-get purge mongodb-org* apt-get purge mongodb* rm -rf /var/log/mongodb /var/lib/mongodb apt-get autoremoveУдалить репозиторий
/etc/apt/sources.list.d/mongodb-org-4.4.listИ провести установку более старой версии.
mongo --eval "printjson(rs.initiate())"Должен быть примерно следующий вывод
MongoDB shell version v4.0.27 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("51d6857c-ebb9-474c-aeb1-c64bd2c03c71") } MongoDB server version: 4.0.27 { "operationTime" : Timestamp(1642588702, 3), "ok" : 0, "errmsg" : "already initialized", "code" : 23, "codeName" : "AlreadyInitialized", "$clusterTime" : { "clusterTime" : Timestamp(1642588702, 3), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }Если вывод не полный нужно перезапустить службу mongod
systemctl enable rocketchat systemctl start rocketchatЕсли проверить статус командой
systemctl status rocketchatВывод должен быть примерно таким
| MongoDB Engine: wiredTiger | | Platform: linux | | Process Port: 3000 | | Site URL: http://rocketchat:3000 | | ReplicaSet OpLog: Enabled | | Commit Hash: 21045735b2 | | Commit Branch: HEAD |Если появляется примерно такая ошибка
/opt/Rocket.Chat/programs/server/node_modules/fibers/future.js:313 #011#011#011#011#011#011throw(ex); #011#011#011#011#011#011^ MongoServerSelectionError: Server selection timed out after 30000 ms at Timeout._onTimeout (/opt/Rocket.Chat/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb/lib/core/sdam/topology.js:437:30) at listOnTimeout (internal/timers.js:554:17) at processTimers (internal/timers.js:497:7) { reason: TopologyDescription { type: 'ReplicaSetNoPrimary', setName: null, maxSetVersion: null, maxElectionId: null, servers: Map {}, stale: false, compatible: true, compatibilityError: null, logicalSessionTimeoutMinutes: null, heartbeatFrequencyMS: 10000, localThresholdMS: 15, commonWireVersion: 9Значит стоит неправильная версия Node.js
Установка клиента
Скачать нужную версию можно с |сайта|.
После установки нужно провести первоначальную настройку.
http://rocketchat:3000Или
http://192.168.10.15:3000
Затем нужно создать учетную запись администратора
Информацию об организации можно не указывать
В информации о сервере нужно указать тип - Закрытое сообщество
В регистрации сервера - Сохранять автономность
Подключение к домену
Если нет домена, можно создать пользователей Rocket Chat вручную, а если домен есть, можно настроить получение пользователей из него. Можно создать в домене пользователя для обмена данными с Rocket Chat или использовать существующего.
- Пусть домен имеет следующие характеристики:
- Название домена: office.domain.com
- Ip-адрес контроллера домена: 192.168.10.25
- Пользователь домена: rocket_domain
- Папка в которой создан пользователь rocket_domain: Users


- и сделать следующие настройки:
- Включить LDAP
- Server Type: Active Directory
- Хост: 192.168.10.25
- LDAP порт: 389
- Включить: Переподключение
- Включить: Резервная авторизация
-
- Раздел Authentification
- Включить
- User DN: cn = rocket_domain, cn = Users, dc = office, dc = domain, dc = com
- Пароль: пароль указанного пользователя

На вкладке User Search, в разделе Search Filter указать параметр
Base DN: dc = office, dc = domain, dc = com

На вкладке Data Sync указать домен по умолчанию, если его не будет, пользователи, у которых в AD не указана почта - не добавятся
office.domain.com

Теперь можно выполнить проверку соединения нажав на соответствующую кнопку и введя имя доменного пользователя. Затем можно нажать Запуск фоновой синхронизации.
Другие полезные настройки которые можно добавить
- Раздел Внешний вид ⇒ Пользовательский интерфейс
- Использовать инициалы полного имени для создания аватара (ВКЛ)
- Использовать настоящее имя (ВКЛ)
- Показывать роли пользователей (ВЫКЛ)
- Раздел Общие настройки ⇒ Уведомления
- Максимальное количество участников комнаты до отключения всех текстовых уведомлений
- Раздел Учетные записи
- Истечение срока авторизации в днях: 0 (без истечения срока)
- Разрешить смену имени (ВЫКЛ)
- Разрешить изменять логин (ВЫКЛ)
- Разрешить пользователю изменять настройки профиля (ВЫКЛ)
- Разрешить изменение пароля для пользователей OAuth (ВЫКЛ)
- Разрешить уведомления по электронной почте (ВЫКЛ)
- Раздел Учетные записи ⇒ Регистрация
- Отправить электронное письмо пользователю, когда пользователь активирован (ВЫКЛ)
- Отправить письмо пользователю, когда пользователь деактивирован (ВЫКЛ)
- Раздел Учетные записи ⇒ Пользовательский интерфейс
- Использовать инициалы полного имени для создания аватара (ВКЛ)
- Использовать настоящее имя (ВКЛ)
- Показывать роли пользователей (ВЫКЛ)
- Раздел Учетные записи ⇒ Настройка пользователя по умолчания
- Установка статуса "Нет на месте" (ВКЛ)
- Требовать взаимодействия для отклонения уведомления на рабочем столе (ВКЛ)
- Скрывать роли пользователей (ВКЛ)
- Офлайн уведомления по Email (ВЫКЛ)
- Уведомление о новой публичной комнате (ВЫКЛ)
- Раздел Учетные записи ⇒ Двухфакторная аутентификация
- Включить двухфакторную аутентификацию (ВЫКЛ)
- Раздел Сообщение
- Скрыть Системные Сообщения
Настройка времени показа уведомлений о новых сообщениях
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Control Panel\Accessibility] "MessageDuration"=dword:00002710где 2710 - это количество секунд в шестнадцатиричном виде или 10000 секунд в десятичном виде.
После записи значения в реестр все сообщения системы и чата будут отображаться, пока не пройдет 10000 секунд от получения сообщения. Эту настройку так же можно распространить через групповые политики.
Установка клиента Rocket Chat через групповые политики(gpo) Active directory
:: Проверка, установлен ли Rocket Chat if not exist %LOCALAPPDATA%\Programs\rocketchat\ (goto GO) else (goto STOP) :GO if not exist %APPDATA%\Rocket.Chat\ md %APPDATA%\Rocket.Chat\ :: Копирование конфигурационного файла copy /y \\192.168.10.25\netlogon\config.json %APPDATA%\Rocket.Chat\ :: Установка msiexec /i \\192.168.10.25\netlogon\rocketchat-setup-3.7.6.msi /quiet TIMEOUT /T 30 :: Добавление в автозапуск copy /y "%USERPROFILE%\desktop\Rocket.Chat.lnk" "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\" :STOPКопирование конфигурационного файла config.json позволяет после установки не вводить на каждом компьютере адрес сервера.
Сам файл config.json можно взять из папки %APPDATA%\Rocket.Chat на компьютере где установлен и настроен Rocket Chat.
Для установки через домен нужно поместить bat файл, установочный пакет msi клиента Rocket Chat и файл config.json в общедоступную папку. Затем создать групповую политику, в которую по пути
Конфигурация пользователя Политики Конфигурация Windows СценарииДобавить путь к bat файлу описанному выше. После применения политики Rocket Chat будет установлен и в него можно будет залогиниться.
Ссылки
Алгоритм установки на сайте Rocket Chat: |ссылка|
Алгоритм установки MongoDB: |ссылка|
Серверная часть Rocket Chat: |ссылка|
Клиентская часть Rocket Chat: |ссылка|