Как установить сервер Rocket.Chat на Rocky Linux 8
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Docker и Docker Compose
- Шаг 3. Установите Docker Compose
- Шаг 4. Установите RocketChat
- Шаг 5. Установите SSL
- Шаг 6. Установка и настройка Nginx
- Шаг 7. Доступ и настройка RocketChat
- Настройка параметров SMTP
- Войти в Rocket.Chat Cloud
- Установите и используйте облачные приложения Rocket.Chat
Rocket.Chat — это чат-сервер с открытым исходным кодом, разработанный на JavaScript с использованием фреймворка Meteor.js. Это позволяет вам безопасно общаться в режиме реального времени на нескольких устройствах. Это позволяет компаниям и организациям создавать свой чат-сервер для внутреннего общения со своими сотрудниками. Он интегрируется с социальными каналами, чат-ботами, социальными сетями и приложениями для повышения производительности. Он позволяет отслеживать рабочие процессы DevOps с помощью интеграции через Bitbucket, Jira, GitLab, Confluence, Bamboo и т. д. Он доступен на нескольких настольных и мобильных платформах. Доступны две версии Rocket.Chat: одна — бесплатная для сообщества, а другая — для предприятий.
В этом руководстве мы установим бесплатную версию Community Edition сервера Rocket.Chat на компьютер Rocky Linux.
Предпосылки
-
A Server running Rocky Linux with a minimum of 1GB of RAM for a server for up to 200 users, and up to 50 concurrently active users. If you want to accommodate more than 200 users, you should opt for a server with a minimum of 2GB of RAM.
-
A domain name pointing to the server. For our tutorial, we will use the
rocketchat.example.com
domain. -
A non-sudo user with root privileges.
-
SELinux is disabled.
-
Everything is updated.
$ sudo dnf update
-
Install basic utility packages. Some of them may already be installed.
$ sudo dnf install wget curl nano unzip yum-utils -y
Шаг 1. Настройте брандмауэр
Первым шагом является настройка брандмауэра. Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.
$ sudo firewall-cmd --state running
Брандмауэр работает с разными зонами, и мы будем использовать публичную зону по умолчанию. Перечислите все службы и порты, активные на брандмауэре.
$ sudo firewall-cmd --permanent --list-services
Он должен показать следующий вывод.
cockpit dhcpv6-client ssh
Для работы Moodle необходимы порты HTTP и HTTPS. Откройте их.
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Перезагрузите брандмауэр, чтобы применить изменения.
$ sudo firewall-cmd --reload
Шаг 2. Установите Docker и Docker Compose
Rocky Linux поставляется со старой версией Docker. Чтобы установить последнюю версию, сначала установите официальный репозиторий Docker.
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Установите последнюю версию Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Включите и запустите демон Docker.
$ sudo systemctl enable docker --now
Убедитесь, что он запущен.
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-08-20 22:35:19 UTC; 1s ago Docs: https://docs.docker.com Main PID: 82575 (dockerd) Tasks: 7 Memory: 31.1M CGroup: /system.slice/docker.service ??82575 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ...
По умолчанию Docker требует привилегий root. Если вы хотите избежать использования
sudo
при каждом запуске командыdocker
, добавьте свое имя пользователя вdocker
группа.$ sudo usermod -aG docker $(whoami)
Вам нужно будет выйти из сервера и снова войти в систему под тем же пользователем, чтобы включить это изменение, или использовать следующую команду.
$ su - ${USER}
Подтвердите, что ваш пользователь добавлен в группу Docker.
$ groups navjot wheel docker
Шаг 3 — Установите Docker Compose
Docker Compose доступен в виде плагина. Проверьте последнюю версию Docker compose, доступную на странице выпусков Github. На момент написания этого руководства последняя доступная версия — 2.10.0.
Создайте каталог для плагинов Docker.
$ mkdir ~/.docker/cli-plugins -p
Загрузите подключаемый модуль Docker compose в каталог.
$ curl -SL https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Установите разрешения, чтобы сделать плагин исполняемым.
$ chmod +x ~/.docker/cli-plugins/docker-compose
Проверьте установку.
$ docker compose version
Вы получите следующий вывод.
Docker Compose version v2.10.0
Шаг 4 - Установите RocketChat
Создайте каталог для хранения файлов Docker.
$ mkdir ~/rocketchat
Перейдите в каталог.
$ cd ~/rocketchat
Создайте и откройте файл компоновки Rocketchat Docker для редактирования.
$ nano docker-compose.yml
Вставьте в него следующий код.
volumes: mongodb_data: rocketchat-uploads: services: rocketchat: image: registry.rocket.chat/rocketchat/rocket.chat:5.0.4 restart: on-failure volumes: - rocketchat-uploads:/app/uploads environment: MONGO_URL: mongodb://mongodb:27017/rocketchat?replicaSet=rs0 MONGO_OPLOG_URL: mongodb://mongodb:27017/local?replicaSet=rs0 ROOT_URL: https://rocketchat.example.com PORT: 3000 DEPLOY_METHOD: docker Accounts_UseDNSDomainCheck: 'false' MAIL_URL: 'smtps://AmazonSESuser::587' depends_on: - mongodb expose: - 3000 ports: - 3000:3000 healthcheck: test: > /usr/local/bin/node -e ' const http = require("http"); const options = { host: "localhost", port: 3000, path: "/api/info", timeout: 2000 }; const healthCheck = http.request(options, (res) => { console.log(`HEALTHCHECK STATUS: $${res.statusCode}`); if (res.statusCode == 200) { process.exit(0); } else { process.exit(1); } }); healthCheck.on("error", function (err) { console.error("ERROR"); process.exit(1); }); healthCheck.end();' interval: 10s timeout: 5s retries: 3 start_period: 60s mongodb: image: bitnami/mongodb:4.4 restart: on-failure volumes: - mongodb_data:/bitnami/mongodb environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: rs0 MONGODB_PORT_NUMBER: 27017 MONGODB_INITIAL_PRIMARY_HOST: mongodb MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017 MONGODB_ADVERTISED_HOSTNAME: mongodb MONGODB_ENABLE_JOURNAL: 'true' ALLOW_EMPTY_PASSWORD: 'yes' healthcheck: test: echo 'db.runCommand("ping").ok' | mongo mongodb:27017/test --quiet interval: 10s timeout: 5s retries: 3 start_period: 60s
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Запустите контейнер Docker.
$ docker compose up -d
Проверьте состояние контейнеров, чтобы убедиться, что они работают правильно.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 59cd748e684f registry.rocket.chat/rocketchat/rocket.chat:5.0.4 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp rocketchat-rocketchat-1 1fdabedf8681 bitnami/mongodb:4.4 "/opt/bitnami/script…" 2 minutes ago Up 2 minutes (healthy) 27017/tcp rocketchat-mongodb-1
Вы также можете использовать следующую команду для проверки состояния.
$ docker compose ps NAME COMMAND SERVICE STATUS PORTS rocketchat-mongodb-1 "/opt/bitnami/script…" mongodb running (healthy) 27017/tcp rocketchat-rocketchat-1 "docker-entrypoint.s…" rocketchat running (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
На этом этапе вы можете проверить свою установку, запустив URL-адрес
http://rocketchat.example.com:3000
илиhttp://
в браузере. Следующим шагом является настройка SSL и размещение установки за прокси-сервером.:3000. Шаг 5 — Установите SSL
Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно установить инструмент Certbot.
Во-первых, вам нужно скачать и установить репозиторий EPEL.
$ sudo dnf install epel-release
Выполните следующие команды, чтобы установить Certbot.
$ sudo dnf install certbot
Создайте SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d rocketchat.example.com
Приведенная выше команда загрузит сертификат в каталог
/etc/letsencrypt/live/rocketchat.example.com
на вашем сервере.Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Создайте корневую веб-директорию для автоматического обновления Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Создайте задание Cron для обновления SSL. Он будет запускаться каждый день, чтобы проверять сертификат и при необходимости обновлять его. Для этого сначала создайте файл
/etc/cron.daily/certbot-renew
и откройте его для редактирования.$ sudo nano /etc/cron.daily/certbot-renew
Вставьте следующий код.
#!/bin/sh certbot renew --cert-name rocketchat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Измените права доступа к файлу задачи, чтобы сделать его исполняемым.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Шаг 6 — Установите и настройте Nginx
Мы будем устанавливать последнюю версию Nginx. Создайте и откройте файл
/etc/yum.repos.d/nginx.repo
для редактирования.$ sudo nano /etc/yum.repos.d/nginx.repo
Вставьте в него следующие строки.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Установите Нгинкс.
$ sudo dnf install nginx
Проверьте установку.
$ nginx -v nginx version: nginx/1.22.0
Включите и запустите службу Nginx.
$ sudo systemctl enable nginx --now
Создайте и откройте файл
/etc/nginx/conf.d/rocket.conf
для редактирования.$ sudo nano /etc/nginx/conf.d/rocket.conf
Вставьте в него следующий код.
# Redirect all non-encrypted to encrypted server { listen 80; listen [::]:80; server_name rocketchat.example.com; return 301 https://$host$request_uri; } # HTTPS Server server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name rocketchat.example.com; access_log /var/log/nginx/rocketchat_access.log main; error_log /var/log/nginx/rocketchat_error.log; ssl_certificate /etc/letsencrypt/live/rocketchat.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/rocketchat.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/rocketchat.example.com/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:20m; ssl_session_tickets off; ssl_session_timeout 180m; ssl_stapling on; ssl_stapling_verify on; location / { proxy_pass http://rocketchat.example.com: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; } }
После завершения сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Приведенная выше конфигурация позволяет Nginx действовать как прокси-сервер и привязываться к порту 3000 на локальном хосте.
Откройте файл
/etc/nginx/nginx.conf
для редактирования.$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой
include /etc/nginx/conf.d/*.conf;
.server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Проверьте синтаксис файла конфигурации Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите службу Nginx, чтобы активировать новую конфигурацию.
$ sudo systemctl restart nginx
Шаг 7. Получите доступ и настройте RocketChat
Запустите URL-адрес
https://rocketchat.example.com
в своем браузере, и вы увидите следующий экран настройки.Заполните данные администратора и нажмите кнопку «Далее», чтобы продолжить. Далее вам будет предложено заполнить данные организации.
Заполните данные своей организации и нажмите кнопку «Далее», чтобы продолжить. Вам будет предложено зарегистрировать сервер чата в Rocket Cloud, если вы хотите получить доступ к приложениям Marketplace и другим функциям.
Заполните данные и нажмите «Зарегистрироваться», если вы заинтересованы. В противном случае нажмите Продолжить как отдельную ссылку, чтобы продолжить. Если вы зарегистрировались в Cloud, вам будет отправлено письмо с подтверждением.
Нажмите на ссылку в письме с подтверждением, чтобы подтвердить регистрацию.
После проверки вы попадете на панель инструментов Rocket Chat.
Настройка параметров SMTP
Посетите страницу администрирования, щелкнув изображение своего профиля, щелкнув в левом верхнем углу страницы и нажав ссылку «Администрирование».
Щелкните ссылку «Настройки» на левой боковой панели.
На странице настроек введите «Электронная почта» в поле поиска, чтобы появилась кнопка «Электронная почта».
Нажмите кнопку «Открыть» в разделе «Электронная почта», чтобы открыть страницу настроек электронной почты. На следующей странице разверните раздел SMTP страницы.
Заполните данные SMTP и нажмите кнопку «Сохранить изменения» в правом верхнем углу, чтобы активировать кнопку «Отправить тестовое письмо моему пользователю». Вам будет предложено ввести пароль для сохранения настроек SMTP.
В нашем руководстве мы используем Amazon SES в качестве почтовой программы с портом 587. Снимите флажок над кнопкой «Бассейн». Функция кнопок заключается в игнорировании TLS, но она не помечена правильно.
Вы должны были получить аналогичное тестовое письмо, если все было настроено правильно.
Войти в Rocket.Chat Cloud
Чтобы использовать функции Rocket.Chat Cloud, вам необходимо войти в систему. Откройте меню «Администрирование» >> «Службы подключения», и вы увидите следующую страницу.
Нажмите кнопку «Войти в Rocket.Chat Cloud», чтобы начать процесс. Вы попадете на страницу входа, где вам будет предложено ввести идентификатор электронной почты, с которым вы зарегистрировались в процессе установки.
Щелкните ссылку Отправить логин, чтобы продолжить. Вы получите письмо со ссылкой для входа.
Нажмите на ссылку входа, чтобы завершить процесс. Вам будет предложено авторизовать ваш сервер для входа в систему с помощью облачной учетной записи.
Нажмите кнопку «Авторизовать», чтобы вернуться на страницу «Службы подключения». Вы вошли в облако сейчас.
Установите и используйте облачные приложения Rocket.Chat
Теперь вы можете устанавливать облачные приложения через страницу Администрирование >> Приложения. Мы устанавливаем приложение GIPHY на наш сервер. Нажмите кнопку Получить, чтобы продолжить установку.
Чтобы настроить приложение, щелкните имя приложения на странице приложений, и вы получите страницу сведений о приложении. Оттуда вы можете настроить параметры и начать использовать приложение.
Заполните настройки и нажмите кнопку Сохранить изменения, чтобы завершить настройку приложения.
Вернитесь на панель инструментов Rocket Chat и посетите доску объявлений. Чтобы использовать приложение GIPHY, введите
/giphy
, и вы увидите множество GIF-файлов, связанных с вашим запросом.Нажмите кнопку Enter, чтобы отправить GIF на экран сообщения.
Шаг 8 - Резервное копирование и восстановление Rocket Chat
Резервное копирование Rocket Chat требует резервного копирования базы данных MongoDB.
Остановите контейнер Docker.
$ docker compose down
Выполните следующую команду, чтобы просмотреть метку образа докера MongoDB.
$ docker ps -a
В нашем руководстве метка образа MongoDB —
rocketchat_mongo_1
. Выполните следующую команду, чтобы экспортировать базу данных в файл.$ docker exec rocketchat_mongo_1 sh -c 'mongodump --archive' > db.dump
Чтобы восстановить базу данных, используйте следующую команду.
$ docker exec -i <database_name> sh -c 'mongorestore --archive' < db.dump
Шаг 9 - Обновите Rocket Chat
Обновление Rocket Chat требует выполнения некоторых команд. Данные не затрагиваются в процессе обновления. Загрузите последнюю версию образа Rocket Chat.
$ docker pull registry.rocket.chat/rocketchat/rocket.chat:latest
Остановите существующее ведро.
$ docker compose stop rocketchat
Удалите существующий контейнер.
$ docker compose rm rocketchat
Запустите Rocket Chat, создав новый контейнер.
$ docker compose up -d rocketchat
Заключение
На этом мы завершаем наше руководство по установке сервера Rocket.Chat на компьютер Rocky Linux 8. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.