Установка Rocket.Chat на Ubuntu Server
Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Rocket.Chat на Ubuntu Server.
Rocket.Chat - это мессенджер с открытым исходным кодом, который поддерживает групповые чаты, обмен файлами, видеоконференции, ботов и многое другое. Rocket.Chat можно установить на собственный сервер, а затем общаться, используя веб-интерфейс, персональный компьютер или мобильное устройство.
В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 20.04 LTS.
Подробно о том, как установить Ubuntu Server 20.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 20.04 LTS”.
Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.
Для установки OpenSSH на сервер вы можете воспользоваться командой:
sudo apt install openssh-server
Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.
В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.
Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:
- TCP порт 80 - для получения бесплатного криптографического сертификата через центр сертификации Let’s Encrypt.
- TCP порт 443 - для доступа к веб-интерфейсу Rocket.Chat.
Подключаемся к серверу, на который планируется установить Rocket.Chat.
Для получения и последующего обновления бесплатного SSL-сертификата мы будем использовать центр сертификации Let’s Encrypt, а также программный клиент Certbot, который призван максимально упростить получение и обновление сертификата через центр сертификации Let’s Encrypt.
Обратите внимание, в данном руководстве в качестве системы для управления базами данных будет использоваться MongoDB, а в качестве веб-сервера - Nginx.
Для установки MongoDB нужно импортировать открытый ключ MongoDB и добавить новый репозиторий.
Импортируем открытый ключ MongoDB с помощью команды:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
Добавим репозиторий MongoDB с помощью команды:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
sudo apt update
Обеспечим возможность установки Node.js через менеджер пакетов с помощью команды:
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
Теперь установим пакеты, необходимые для работы Rocket.Chat, с помощью команды:
sudo apt install -y nginx certbot python3-certbot-nginx nodejs build-essential mongodb-org graphicsmagick
Обратите внимание, в данном руководстве в качестве системы для управления базами данных будет использоваться MongoDB, а в качестве веб-сервера - Nginx.
Для корректной работы Rocket.Chat рекомендуется использовать Node.js версии 14.18.3.
Установим инструмент под названием “n”, чтобы можно было изменить версию Node.js, с помощью команды:
sudo npm install -g inherits n
Далее установим Node.js версии 14.18.3 с помощью команды:
sudo n 14.18.3
Теперь, чтобы повысить уровень безопасности веб-сервера, необходимо получить криптографический сертификат для домена или субдомена, по которому панель управления Rocket.Chat будет доступна из сети Интернет.
Для получения и последующего обновления бесплатного SSL-сертификата мы будем использовать центр сертификации Let’s Encrypt, а также программный клиент Certbot, который призван максимально упростить получение и обновление сертификата через центр сертификации Let’s Encrypt.
В данном руководстве для доступа к панели управления Rocket.Chat из сети Интернет будет использоваться субдомен rocketchat.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваша панель управления Rocket.Chat будет доступна из сети Интернет.
Запросим криптографический сертификат с помощью команды:
sudo certbot --nginx -d rocketchat.heyvaldemar.net
Далее указываем адрес электронной почты, на который Let’s Encrypt будет присылать уведомления об истечении срока криптографического сертификата, и нажимаем на кнопку “Enter”.
На следующем этапе необходимо прочитать и принять условия использования предоставляемых сервисов.
Нажимаем на кнопку “a”, затем “Enter”, если вы согласны с условиями использования предоставляемых сервисов.
На следующем этапе необходимо выбрать: хотите ли вы поделиться указанным ранее адресом электронной почты с Electronic Frontier Foundation для получения информационных рассылок.
Нажимаем на кнопку “n”, затем “Enter”.
На следующем этапе необходимо выбрать: хотите ли вы, чтобы в конфигурационный файл Nginx были автоматически добавлены параметры для автоматического перенаправления HTTP-трафика на HTTPS.
Нажимаем на кнопку “1”, затем “Enter”.
Обратите внимание, криптографические сертификаты, полученные через центр сертификации Let’s Encrypt, действительны в течение девяноста дней. Certbot автоматически добавляет скрипт для обновления сертификата в планировщик задач, и скрипт запускается два раза в день, автоматически обновляя любой криптографический сертификат, срок действия которого истекает в течение тридцати дней.
Проверить работоспособность процесса обновления криптографического сертификата можно с помощью команды:
sudo certbot renew --dry-run
Теперь настроим Nginx для последующей работы с Rocket.Chat.
В начале необходимо внести изменения в конфигурационный файл Nginx, открыв его в текстовом редакторе, с помощью команды:
sudo vim /etc/nginx/nginx.conf
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим параметр “server_names_hash_bucket_size 64;” и раскомментируем его, удалив символ “#”.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Теперь нужно создать блок (в Apache называется виртуальных хост), с которым в дальнейшем будет работать Rocket.Chat.
Создадим файл виртуального хоста, воспользовавшись текстовым редактором, с помощью команды:
sudo vim /etc/nginx/sites-available/rocketchat.heyvaldemar.net
В данном руководстве для доступа к Rocket.Chat из сети Интернет будет использоваться субдомен rocketchat.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Rocket.Chat будет доступен из сети Интернет.
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем вставляем конфигурацию.
В данном руководстве для доступа к Rocket.Chat из сети Интернет будет использоваться субдомен rocketchat.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Rocket.Chat будет доступен из сети Интернет.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Активируем созданный блок с помощью команды:
sudo ln -s /etc/nginx/sites-available/rocketchat.heyvaldemar.net /etc/nginx/sites-enabled/
Деактивируем блок, созданный по умолчанию, с помощью команды:
sudo unlink /etc/nginx/sites-enabled/default
Убедимся, что в синтаксисе нового конфигурационного файла Nginx нет ошибок, с помощью команды:
sudo nginx -t
Перезапустим Nginx, чтобы применить внесенные изменения, с помощью команды:
sudo systemctl restart nginx
Проверим, что Nginx успешно запустился, с помощью команды:
sudo systemctl status nginx
Теперь загрузим архив “rocket.chat.tgz”, содержащий файлы для установки Rocket.Chat, с помощью команды:
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
Распакуем загруженный архив “rocket.chat.tgz” с помощью команды:
tar -xzf /tmp/rocket.chat.tgz -C /tmp
Удалим ранее загруженный архив “rocket.chat.tgz”, содержащий файлы для установки Rocket.Chat, с помощью команды:
rm -f /tmp/rocket.chat.tgz
Перейдем в папку “server” с помощью команды:
cd /tmp/bundle/programs/server
Теперь запустим установку Rocket.Chat с помощью команды:
npm install
Переименуем папку “bundle” в “Rocket.Chat” с помощью команды:
sudo mv /tmp/bundle /opt/Rocket.Chat
Теперь создадим пользователя “rocket”, который будет использоваться для запуска Rocket.Chat, с помощью команды:
sudo useradd -M rocketchat
Заблокируем пользователя с помощью команды:
sudo usermod -L rocketchat
Назначим корректные права на каталог “/opt/Rocket.Chat” с помощью команды:
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
Далее необходимо настроить автозапуск сервиса Rocket.Chat при запуске операционной системы.
Создадим юнит, который будет содержать необходимую конфигурацию для сервиса Rocket.Chat в каталоге “/etc/systemd/system/”, с помощью команды:
sudo vim /lib/systemd/system/rocketchat.service
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем вставляем конфигурацию.
В данном руководстве для доступа к Rocket.Chat из сети Интернет будет использоваться субдомен rocketchat.heyvaldemar.net. Вам нужно будет указать ваш домен или субдомен, по которому ваш Rocket.Chat будет доступен из сети Интернет.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Теперь внесем изменения в конфигурацию MongoDB с помощью команды:
sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf
Далее внесем еще одно изменение в конфигурацию MongoDB с помощью команды:
sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf
Включаем автозапуск сервиса MongoDB при запуске операционной системы с помощью команды:
sudo systemctl enable mongod
Запускаем MongoDB с помощью команды:
sudo systemctl start mongod
Проверим, что MongoDB успешно запустился с помощью команды:
sudo systemctl status mongod
Проверим, что MongoDB корректно работает с помощью команды:
mongo --eval "printjson(rs.initiate())"
Включаем автозапуск сервиса Rocket.Chat при запуске операционной системы с помощью команды:
sudo systemctl enable rocketchat
Запускаем Rocket.Chat с помощью команды:
sudo systemctl start rocketchat
Проверим, что Rocket.Chat успешно запустился с помощью команды:
sudo systemctl status rocketchat
Все необходимые сервисы успешно запущены.
Теперь нужно подождать несколько минут, затем для продолжения процесса установки Rocket.Chat необходимо с рабочей станции перейти по ссылке https://rocketchat.heyvaldemar.net, где rocketchat.heyvaldemar.net - имя моего сервера. Соответственно, вам необходимо указать имя или IP-адрес вашего сервера с установленным Rocket.Chat.
Далее нужно создать нового пользователя, который будет обладать правами администратора в Rocket.Chat.
В поле “First and last name” указываем имя и фамилию для нового пользователя Rocket.Chat.
В поле “Username” указываем логин для нового пользователя Rocket.Chat.
В поле “Company email” указываем актуальный адрес электронной почты для нового пользователя Rocket.Chat.
В поле “Password” указываем надежный пароль для нового пользователя Rocket.Chat.
Нажимаем на кнопку “Next”.
Теперь необходимо заполнить информацию о вашей организации.
В поле “Organization name” указываем название вашей организации.
В поле “Organization type” указываем тип вашей организации.
В поле “Organization industry” указываем профиль вашей организации.
В поле “Organization size” указываем количество сотрудников в вашей организации.
В поле “Country” указываем страну, в которой ваша организация осуществляет деятельность.
Нажимаем на кнопку “Next”.
Теперь необходимо зарегистрировать ваш сервер, чтобы использовать сервисы, такие как мобильные push-уведомления и прочие от Rocket.Chat Technologies Corp.
В поле “Cloud account email” указываем актуальный адрес электронной почты.
Теперь необходимо прочитать и принять условия использования предоставляемых сервисов.
Нажимаем на кнопку “Register”.
На адрес электронной почты, указанный ранее, придет письмо с сылкой для регистрации вашего сервера Rocket.Chat.
Находим письмо и нажимаем на кнопку “Verify registration”.
Сервер успешно зарегистрирован.
Добро пожаловать в Rocket.Chat.
Теперь необходимо войти под учетной записью Rocket.Chat Cloud, чтобы получить доступ к магазину приложений и другим сервисам Rocket.Chat.
Нажимаем на значок с изображением пользователя в левом верхнем углу экрана и выбираем “Administration”.
Переходим в раздел “Connectivity Services” и нажимаем на кнопку “Login to Rocket.Chat Cloud”.
Если у вас еще нет учетной записи на веб-сайте Rocket.Chat, то зарегистрируйтесь, нажав на кнопку “Create account”, для получения дополнительных возможностей по управлению вашим рабочим пространством Rocket.Chat.
Если у вас уже есть учетная запись на веб-сайте Rocket.Chat, то в поле “Email” указываем адрес электронной почты, привязанной к учетной записи Rocket.Chat Cloud, чтобы получить ссылку для входа. Также можно указать пароль нажав на кнопку “Enter password instead”.
Нажимаем на кнопку “Authorize” чтобы получить доступ к магазину приложений и другим сервисам Rocket.Chat.
Вход под учетной записью Rocket.Chat Cloud успешно осуществлен.
Также в разделе “Workspaces” на веб-сайте Rocket.Chat вы увидите ваш зарегистрированный сервер Rocket.Chat.
Ссылки для загрузки клиента Rocket.Chat вы можете найти на официальном сайте Rocket.Chat.