Rocket.chat
Содержание:
Видео обзор
Watch this video on YouTube
Онлайн курс «Сетевой инженер»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные сети, рекомендую познакомиться с онлайн-курсом «Сетевой инженер» в OTUS. Это авторская программа в сочетании с удалённой практикой на реальном оборудовании и академическим сертификатом Cisco! Студенты получают практические навыки работы на оборудовании при помощи удалённой онлайн-лаборатории, работающей на базе партнёра по обучению — РТУ МИРЭА: маршрутизаторы Cisco 1921, Cisco 2801, Cisco 2811; коммутаторы Cisco 2950, Cisco 2960.
Особенности курса:
- Курс содержит две проектные работы.;
- Студенты зачисляются в официальную академию Cisco (OTUS, Cisco Academy, ID 400051208) и получают доступ ко всем частям курса «CCNA Routing and Switching»;
- Студенты могут сдать экзамен и получить вместе с сертификатом OTUS ещё сертификат курса «CCNA Routing and Switching: Scaling Networks»;
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Start a stream
Note: Depending on the settings of the server, you might be only able to link live streams from Youtube. In doubt always ask your server’s admin.
-
Press the Broadcast my Camera button.
-
Login with a Google account. Remember that streaming must be activated through your Youtube account. For more information, see Introduction to live streaming Google guide).
To add a different Livestream, get the URL (must be from Youtube) for the stream, enter it into the Livestream source field and hit save.
You can also add a message for whenever the stream is unavailable in the Livestream not available message field.
To add a stream with no video and only audio, use the Enable audio only button.
Установка компонентов
Выполним установку компонентов, необходимых для работы Rocket.Chat в несколько этапов.
Установка необходимых пакетов
Выполняем команды:
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash —
apt-get install curl build-essential graphicsmagick nodejs
* где:
- curl — служебная программа для взаимодействия с сервисами по различным протоколам с синтаксисом URL. Нам понадобиться для скачивания файлов.
- build-essential — пакет, необходимый для сборки других пакетов.
- graphicsmagick — набор программ для чтения и редактирования файлов различных графических форматов.
- nodejs — программная платформа, которая делает код javascript в язык общего назначения.
Устанавливаем inherits и node версии 12.14.0:
npm install -g inherits n && sudo n 12.14.0
Установка MongoDB
Конфигурируем репозиторий для MongoDB:
vi /etc/apt/sources.list.d/mongodb-org.list
deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse
Импортируем ключ из репозитория для проверки пакетов от подделки:
apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv 9DA31620334BD75D9DCB49F368818C72E52529D4
Обновляем список пакетов:
apt-get update
И устанавливаем mongodb-org:
apt-get install mongodb-org
Вносим изменения в конфигурационный файл:
sed -i «s/^# engine:/ engine: mmapv1/» /etc/mongod.conf
sed -i «s/^#replication:/replication:\n replSetName: rs01/» /etc/mongod.conf
Разрешаем автозапуск mongodb и стартуем его:
systemctl enable mongod
systemctl start mongod
Инициализируем базу данных:
mongo —eval «printjson(rs.initiate())»
Установка и настройка Nginx
Установите и настройте веб-сервер Nginx в качестве обратного прокси согласно руководству. Добавьте следующую настройку для rocketchat.example.org:
/etc/nginx/sites-enabled/rocketchat.conf
server { listen 443 ssl; server_name rocketchat.example.org; include ssl.conf; ssl_certificate /etc/nginx/ssl/rocketchat.example.org/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/rocketchat.example.org/privkey.pem; client_max_body_size 200M; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } }
METHOD CACHE
Set the instance to call methods on, with cached results
- Accepts an Asteroid instance (or possibly other classes)
- Returns nothing
Setup a cache for a method call
- Accepts method name and cache options object, such as:
- Maximum size of cache
- Maximum age of cache
Get results of a prior method call or call and cache
- Accepts method name to call and key as single param
- Only methods with a single string argument can be cached (currently) due to
the usage of this argument as the index for the cached results.
Checking if method has been cached
- Accepts method name
- Returns bool
Get results of a prior method call
- Accepts method name and key (argument method called with)
- Returns results at key
Reset a cached method call’s results
- Accepts a method name, optional key
- If key given, clears only that result set
- Returns bool
Reset cached results for all methods
Returns nothing
API CLIENT
By default, it will attempt to login with the same defaults or env config as
the driver, but the method could be used manually prior to requests to
use different credentials.
If a request is made to an endpoint requiring authentication, before login is
called, it will attempt to login first and keep the response token for later.
Bots and apps should manually call the API method on shutdown if they
have used the API.
Returns boolean status of existing login
Make a POST request to the REST API
- — The API resource ID, e.g.
- — Request payload object to send, e.g. { roomName: ‘general’ }
- — If authorisation is required (defaults to true)
- Returns promise
Make a GET request to the REST API
- — The API endpoint resource ID, e.g.
- — Params (converted to query string), e.g. { fields: { ‘username’: 1 } }
- — If authorisation is required (defaults to true)
- Returns promise
Perform login with default or given credentials
- object with and properties.
- Returns promise, resolves with login result
Logout the current user. Returns promise
Exported property with details of the current API session
- — The login request result
- — The logged in user’s username
- — The logged in user’s ID
- — The current auth token
Exported property for user query helper default fields
- Defaults to
Helper for querying all users
- Optional fields object (see fields docs link above)
- Returns promise, resolves with array of user objects
Helper for querying all usernames
Returns promise, resolves with array of usernames
Helper for querying all user IDs
Returns promise, resolves with array of IDs
Helper for querying online users
- Optional fields object (see fields docs link above)
- Returns promise, resolves with array of user objects
Helper for querying online usernames
Returns promise, resolves with array of usernames
Helper for querying online user IDs
Returns promise, resolves with array of IDs
Тестирование Rocket.Chat на Android, IOS, Web
По регистрации оборудования в сети половина клиентов это смартфоны. Поэтому тестирование крутилось в основном на возможности доставки push-сообщение и одновременной работы нескольких клиентов под одной учётной записью. В админ-панели есть переключать именно этого режима, когда сообщения одновременно приходят и на смартфон и на ПК. Отдельное спасибо за работу внешнего сервера для push(иначе нужно иметь свой).
Во второй день работы в системе было зарегистрировано 26 пользователей, больше заниматься презентацией не было сил и я написал инструкцию)) Это ещё одна палочка-выручалочка в подобных делах.
Спустя месяц…Все это время меня беспокоило отсутствие сертификата, в воздухе витало правило о том, что корпоративные сервисы должны иметь максимально доступный уровень защиты\шифрования. Самый доступный выбор – LetsEncrypt. Начиналось все в тестовой среде, т.к. выбор между Nginx и Apache не был сделан. На старте у меня Centos и Rocket.Chat на 80-ом порту по официальной инструкции.Последующие цели самые обычные – сделать доступ по https.
Установка сервера
Использование собранного релизного сервера
Скачайте и распакуйте сервер Rocket.Chat:
curl -L https://releases.rocket.chat/latest/download -o Rocket.Chat.tar.gz
tar xf Rocket.Chat.tar.gz
Установите необходимые библиотеки для NodeJS и завершите сеанс пользователя :
cd ~/bundle/programs/server
npm install && exit
Сборка сервера из исходного кода
Установите для пользователя web фреймворк Meteor:
curl https://install.meteor.com/ | sh
echo ‘PATH=»${PATH}:${HOME}/.meteor»‘ >>.bash_profile
PATH=»${PATH}:${HOME}/.meteor»
Скачайте исходный код сервера Rocket.Chat:
git clone https://github.com/RocketChat/Rocket.Chat.git Rocket.Chat.Source
Перейдите в каталог с исходным кодом и выполните сборку архива:
cd Rocket.Chat.Source
meteor npm install
meteor build —directory ~
Установите необходимые библиотеки для NodeJS и завершите сеанс пользователя :
cd ~/bundle/programs/server
npm install && exit
Docs
Full documentation can be generated locally using .
This isn’t in a format we can publish yet, but can be useful for development.
Below is just a summary:
The following modules are exported by the SDK:
- — Handles connection, method calls, room subscriptions (via Asteroid)
- — Manages results cache for calls to server (via LRU cache)
- — Provides a client for making requests with Rocket.Chat’s REST API
Access these modules by importing them from SDK, e.g:
For Node 8 / ES5
const { driver, methodCache, api } = require('@rocket.chat/sdk')
For ES6 supporting platforms
import { driver, methodCache, api } from '@rocket.chat/sdk'
Any Rocket.Chat server method can be called via ,
or . Server methods are not fully
documented, most require searching the Rocket.Chat codebase.
Some common requests for user queries are made available as simple helpers under
, such as which returns the user IDs of all
online users. Run for a demo of user query outputs.
Базовая настройка
Для того, чтобы попробовать чат в деле, после установки необходимо выполнить несколько простых действий. Первое — идем в раздел Список пользователей и создаем новых пользователей.
Кстати, если этого не сделать, то при первом подключении клиента, будет автоматически создан пользователь, так что вы в любом случае подключитесь к серверу.
После добавления пользователей, можно рассортировать их по списку контактов.
Очень приятный функционал. Не понимаю, почему ни один из увиденных мной современных чатов не позволяет формировать вручную глобальный список контактов. Кто-то может уже научился, но когда я смотрел, не умел никто. Не понимаю, как можно оперативно кого-то найти в списке из 100 человек, особенно если не помнишь фамилию.
Это основные настройки по пользователям. Дальше можно группы создавать, которым потом можно различные права назначать. Например, можно разрешить отправлять оповещения только определенной группе пользователей.
После добавления пользователей можно создать конференции. Напомню, что конференцию могут создавать и обычные пользователи через клиент. Через панель администрирования шире функционал. Можно создать конференции, которые невозможно будет удалить или выйти из них. Можно сразу добавить группы пользователей в свои конференции.
В Управлении правами наглядно отображены права доступа различных групп к сервисам и настройкам. Таких гибких и удобных настроек я не видел ни в одном чате.
После создания пользователей, групп, конференций и прав доступа, можно начинать пользоваться сервером. Для этого достаточно скачать один из представленных клиентов и подключиться к серверу. Он автоматически найдет сервер в сети и предложит авторизоваться.
После подключения увидите основной интерфейс программы.
Увидите список контактов и конференций. К тем, в которые вам добавили через панель администрирования, вы уже будете подключены. В клиенте много настроек. Рекомендую посмотреть их и поменять в зависимости от предпочтений.
Настроек на сервере не очень много. Они хорошо структурированы. Посмотрите их все, прочитайте документацию — https://nsoft-s.com/mcserverhelp/. Для того, чтобы получить первоначальное впечатление потребуется не много времени. Буквально час-два, чтобы во всем разобраться. Если продукт покажется интересным, можете уже плотнее изучать — настраивать интеграцию с AD, web чат, доступ гостей, интеграцию с Телеграмм и др.