Гид по технологиям

Установка Rocket.Chat на Rocky Linux — подробный пошаговый гид

• 11 min read • DevOps • Обновлено 21 Nov 2025
Установка Rocket.Chat на Rocky Linux
Установка Rocket.Chat на Rocky Linux

Введение

Rocket.Chat логотип и интерфейс

Rocket.Chat — это сервер чата с открытым исходным кодом, написанный на JavaScript с использованием фреймворка Meteor.js. Он обеспечивает защищённую, мгновенную связь между устройствами и даёт возможность организациям развернуть собственный внутренний мессенджер с интеграциями в внешние сервисы: боты, социальные сети, системы управления задачами и CI/CD (Jira, GitLab, Bitbucket, Confluence и т. д.). Поддерживаются настольные и мобильные платформы. Существенные преимущества — контроль данных, приватность и гибкость развёртывания: локально, в приватном облаке или в гибридной модели.

В этом руководстве мы установим бесплатную Community-версию Rocket.Chat на сервер с Rocky Linux 8.

Important: если вы планируете использовать Rocket.Chat в продакшене, внимательно отнеситесь к безопасности, резервному копированию и мониторингу. Разделы «Рекомендации по безопасности» и «План восстановления» ниже помогут в этом.

Что вы получите в результате

  • Рабочий инстанс Rocket.Chat за N минут (в зависимости от инфраструктуры).
  • Настройку Docker + Docker Compose для запуска Rocket.Chat и MongoDB в контейнерах.
  • Настроенный Nginx с SSL (Let’s Encrypt) и автообновлением сертификатов.
  • Шаблоны резервного копирования, восстановления и обновления.

Предпосылки

  • Сервер с Rocky Linux (рекомендуется 8.x). Минимально — 1 ГБ RAM для ~200 пользователей с пиковыми 50 одновременных соединений; для боевых нагрузок используйте ≥2 ГБ и разделённые ресурсы для MongoDB.
  • Домен, указывающий на сервер (в примерах — rocketchat.example.com).
  • Непривилегированный пользователь с правами sudo.
  • SELinux отключён или корректно настроен для Docker/Nginx (в руководстве предполагается отключение).
  • Система обновлена.

Обновление системы:

$ sudo dnf update

Установка базовых утилит (если они отсутствуют):

$ sudo dnf install wget curl nano unzip yum-utils -y

Примечание: в тексте ниже сохраняются блоки команд, которые можно выполнять на сервере.

H2: Порты и компоненты — что куда смотрит

Краткий обзор сетевых требований и портов (ментальная модель):

  • Rocket.Chat (в контейнере) слушает на 3000/tcp по умолчанию.
  • MongoDB слушает на 27017/tcp внутри сети Docker.
  • Nginx будет принимать 80/443 трафик извне и проксировать на 3000 локально.
  • Let’s Encrypt использует HTTP (80) для проверки домена при валидации по HTTP challenge.

Важно: не открывайте MongoDB в публичный интернет — доступ должен быть только из доверенной сети (локальная сеть Docker или VPN).

Шаг 1 — настройка firewall (firewalld)

Rocky Linux по умолчанию использует firewalld. Проверим статус:

$ sudo firewall-cmd --state
running

Посмотрим активные сервисы в текущей зоне (обычно public):

$ sudo firewall-cmd --permanent --list-services

Если вывод соответствует стандартному состоянию, добавим HTTP/HTTPS для прохождения проверок Let’s Encrypt и доступа пользователей:

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
$ sudo firewall-cmd --reload

Note: если вы используете нестандартные порты или дополнительные сервисы, откройте их явно. При использовании облачных провайдеров не забудьте проверить правила сети/ACL на уровне облака.

Шаг 2 — установка Docker и базовая конфигурация

Rocky Linux может поставляться с «устаревшим» пакетом Docker. Рекомендуется использовать официальный репозиторий Docker.

Добавим официальный репозиторий Docker (CentOS-совместимая линия):

$ 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
...

Чтобы не вводить sudo при каждой команде docker, добавьте пользователя в группу docker:

$ sudo usermod -aG docker $(whoami)

Затем выйдите и войдите снова в сессию (или выполните su - ${USER}) и проверьте группы:

$ groups
navjot wheel docker

Security note: добавление в группу docker эквивалентно предоставлению root-доступа для команд docker. Применяйте с осторожностью.

Шаг 3 — установка Docker Compose (плагин)

Современные версии Docker используют Compose как плагин. Узнайте актуальную версию на странице релизов Docker Compose. В примере используется v2.10.0 — при копировании замените номер версии на актуальный.

Создаём директорию плагинов:

$ 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

Если вы используете другой пользовательский путь для Docker CLI, убедитесь, что Docker способен обнаружить плагин.

Шаг 4 — развёртывание Rocket.Chat и MongoDB через Docker Compose

Создаём рабочую папку для проекта и переходим в неё:

$ mkdir ~/rocketchat
$ cd ~/rocketchat

Откройте редактор и создайте файл docker-compose.yml:

$ nano docker-compose.yml

Вставьте содержимое ниже именно как указано (включая volume и services). Этот compose запустит Rocket.Chat 5.0.4 и MongoDB (Bitnami 4.4) с простыми настройками реплики и healthcheck. Проверьте теги образов и при необходимости обновите версии.

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:[email protected]: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 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:

$ 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

Теперь в браузере можно открыть http://rocketchat.example.com:3000 или http://:3000. На этом этапе доступ по HTTP, следующий шаг — поставить SSL и настроить обратный прокси.

Important: проверьте переменную ROOT_URL — она определяет, по какому URL Rocket.Chat ожидает запросы и формирует ссылки в почтовых уведомлениях.

Шаг 5 — установка SSL через Let’s Encrypt (Certbot)

Для получения сертификата используем Certbot. Сначала установим EPEL репозиторий (если ещё не установлен):

$ sudo dnf install epel-release

Устанавливаем certbot:

$ sudo dnf install certbot

Получаем сертификат (используя standalone режим — certbot поднимет временный HTTP-сервер на 80 порту):

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d rocketchat.example.com

Сертификат появится в /etc/letsencrypt/live/rocketchat.example.com.

Генерируем параметр Diffie-Hellman для повышения безопасности TLS:

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Создаём веб-рут для challenge (используется при renew с webroot):

$ sudo mkdir -p /var/lib/letsencrypt

Создаём ежедневный cron job для обновления сертификатов и перезагрузки nginx после обновления. Создайте файл /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"

Сделайте скрипт исполняемым:

$ sudo chmod +x /etc/cron.daily/certbot-renew

Note: при использовании standalone режима certbot должен иметь доступ к порту 80; если nginx уже слушает 80, используйте webroot или временно остановите nginx на момент валидации.

Шаг 6 — установка и настройка Nginx как обратного прокси

Добавим официальный репозиторий nginx (stable):

$ 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

Устанавливаем nginx:

$ sudo dnf install nginx

Проверяем версию:

$ nginx -v
nginx version: nginx/1.22.0

Включаем и запускаем nginx:

$ sudo systemctl enable nginx --now

Создаём конфигурацию прокси /etc/nginx/conf.d/rocket.conf и вставляем нижеуказанный конфиг. Этот конфиг перенаправляет HTTP на HTTPS и проксирует трафик на Rocket.Chat, добавляя нужные заголовки для WebSocket и реального IP.

# 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;
        }
    }

В файл /etc/nginx/nginx.conf добавьте перед include /etc/nginx/conf.d/*.conf;:

server_names_hash_bucket_size  64;

Проверим конфигурацию и перезапустим nginx:

$ sudo nginx -t
$ sudo systemctl restart nginx

Проверка: откройте https://rocketchat.example.com — должен загрузиться интерфейс Rocket.Chat с валидным сертификатом.

Note: в proxy_pass можно использовать http://127.0.0.1:3000/ или http://localhost:3000/. Использование rocketchat.example.com в proxy_pass работает, но важно, чтобы DNS имя резолвилось локально; предпочтительнее явно указывать localhost.

Шаг 7 — первоначальная настройка через веб-интерфейс

Откройте https://rocketchat.example.com в браузере — вы увидите экран первоначальной установки.

Экран настройки Rocket.Chat

Заполните администратора и организацию, далее можно зарегистрироваться в Rocket.Chat Cloud или продолжить автономно.

Настройка организации Rocket.Chat

Регистрация в Rocket.Chat Cloud или продолжение автономно

Если вы выбрали Cloud, подтвердите почту по ссылке.

Подтверждение регистрации Rocket.Chat Cloud

После подтверждения вы попадёте в панель управления Rocket.Chat.

Панель управления Rocket.Chat

Настройка SMTP (отправка почты)

Откройте меню профиля (верхний левый угол) → Administration → Settings. Введите «Email» в поиске и откройте раздел Email, затем — вкладку SMTP.

Меню профиля Rocket.Chat

Меню настроек Rocket.Chat

Кнопка Email в настройках Rocket.Chat

Настройка SMTP Rocket.Chat

Пример настройки для Amazon SES (порт 587, STARTTLS):

  • SMTP host: email-smtp.us-east-1.amazonaws.com
  • Port: 587
  • Username: ваш Amazon SES SMTP user
  • Password: ваш пароль
  • Use TLS: включено (TLS)

После сохранения нажмите «Send a test mail to my user» — при успехе вы увидите тестовое письмо.

Тестовое письмо Rocket.Chat

Important: некоторые интерфейсы отмечают опцию «Ignore TLS» некорректно (в исходном тексте об этом предупреждение). Нельзя отключать TLS в продуктиве.

Шаг 8 — вход в Rocket.Chat Cloud и установка приложений

Из меню Administration → Connectivity Services вы можете выполнить вход в Rocket.Chat Cloud для доступа к маркетплейсу приложений.

Сервисы подключения Rocket.Chat

Нажмите Login to Rocket.Chat Cloud, получите ссылку на почту, пройдите авторизацию и вернитесь в панель — теперь доступны Cloud apps.

Login в Cloud Rocket.Chat

Вы можете устанавливать приложения, например GIPHY, и настраивать их через интерфейс Apps.

Установка приложений Rocket.Chat

Настройка GIPHY в Rocket.Chat

Команда для использования в чате:

/giphy <поисковый запрос>

Поиск GIPHY в Rocket.Chat

Шаг 9 — резервное копирование и восстановление

Для корректного бэкапа необходимо сохранять данные MongoDB и файлы загрузок (uploads).

Остановим контейнеры:

$ docker compose down

Получим список контейнеров, чтобы узнать имя MongoDB контейнера:

$ docker ps -a

В примере имя контейнера — rocketchat_mongo_1. Экспортируем дамп:

$ docker exec rocketchat_mongo_1 sh -c 'mongodump --archive' > db.dump

Файлы uploads можно сохранить из тома:

$ docker run --rm -v rocketchat_rocketchat-uploads:/from -v $(pwd)/backup:/to alpine ash -c "cd /from && tar -czf /to/uploads.tar.gz ."

Восстановление MongoDB из архива:

$ docker exec -i  sh -c 'mongorestore --archive' < db.dump

Восстановление файлов uploads:

$ docker run --rm -v rocketchat_rocketchat-uploads:/to -v $(pwd)/backup:/from alpine ash -c "cd /to && tar -xzf /from/uploads.tar.gz"

Backup runbook (короткая пошаговая инструкция):

  1. Остановить приложение: docker compose down.
  2. Сделать mongodump в архив: docker exec sh -c 'mongodump --archive' > db.dump.
  3. Сохранить том uploads в tar.
  4. Перенести резервные копии в безопасное хранилище (S3, удалённый сервер).
  5. Запустить контейнеры: docker compose up -d.

Критерии приёмки: резервная копия успешно восстанавливается в тестовом окружении, а восстановленный сервис отвечает на /api/info.

Шаг 10 — обновление Rocket.Chat (rolling upgrade)

При обновлении данных контейнеров данные хранятся в томах и не должны теряться. Общая последовательность:

$ docker pull registry.rocket.chat/rocketchat/rocket.chat:latest
$ docker compose stop rocketchat
$ docker compose rm rocketchat
$ docker compose up -d rocketchat

Рекомендации перед обновлением:

  • Сделайте полный бэкап MongoDB и uploads.
  • Прочитайте release notes для новой версии Rocket.Chat (обратить внимание на breaking changes и миграции базы).
  • Тестируйте обновление на стейджинге.

Rollback: если новая версия не работает, остановите контейнер, верните образ на предыдущую версию (docker pull с нужным тегом) и разверните.

Рекомендации по безопасности и эксплуатации

Security hardening — основные шаги:

  • Ограничьте доступ к SSH с помощью ключей и firewall/ACL.
  • Не открывайте MongoDB наружу. Для межконтейнерного соединения используйте Docker network или privnet.
  • Используйте сильные пароли для административных учётных записей.
  • Настройте регулярные обновления ОС и контейнеров в тестовом цикле перед продакшеном.
  • Логи: собирайте логи контейнеров и nginx в централизованное хранилище (ELK, Grafana Loki, Graylog).
  • Регулярно проверяйте expiry сертификатов и тестируйте процесс автообновления.

Дополнительные меры:

  • Включите двухфакторную аутентификацию для админов.
  • Ограничьте возможность регистрации в публичных каналах и внешние интеграции по умолчанию.
  • Используйте WAF/IDS на уровне сети при необходимости.

Privacy / GDPR notes:

  • Если вы храните персональные данные граждан ЕС, ознакомьтесь с требованиями GDPR: обеспечьте право на удаление/экспорт данных пользователей.
  • Логи и медиа-файлы могут содержать персональные данные — продумайте политику хранения и удаления.
  • Документируйте обработку данных и настройте retention policy.

Модели зрелости и масштабирование

Ниже — простая шкала зрелости развёртывания Rocket.Chat (heuristic maturity levels):

  • Уровень 0 (PoC): один сервер, Docker Compose, базовый Nginx, простой бэкап.
  • Уровень 1 (Малый продакшен): выделенные тома для данных, регулярные бэкапы, SSL, мониторинг процессов.
  • Уровень 2 (Средний продакшен): отдельный MongoDB кластер или managed MongoDB, репликация, LB для веб-слоя, TLS во всех соединениях.
  • Уровень 3 (Критичный продакшен): распределённый кластер Rocket.Chat, отдельные сервисы (авторизация, интеграции), SSO, HIPAA/GDPR соответствие, DR план, SLA и мониторинг SLO/SLI.

Ментальная модель: растите от простого к сложному — сначала надёжный бэкап и мониторинг, затем — разделение ресурсов и HA.

Полезные сценарии и сниппеты (cheat sheet)

  • Просмотр логов Rocket.Chat:
$ docker compose logs -f rocketchat
  • Просмотр логов MongoDB:
$ docker compose logs -f mongodb
  • Проверка healthcheck контейнеров:
$ docker ps --format "table {{.Names}}  {{.Status}}"
  • Пересоздание контейнеров после изменения переменных окружения:
$ docker compose down
$ docker compose up -d --force-recreate

Чеклисты ролей

Администратор (System Admin) — перед запуском в продакшн:

  • Проверить обновления ОС и зависимостей.
  • Настроить firewall и DNS.
  • Получить SSL и проверить HTTPS доступ.
  • Настроить SMTP и тестовое письмо.
  • Настроить бэкап и проверить восстановление.
  • Настроить мониторинг и оповещения.

DevOps — при развёртывании и поддержке:

  • Автоматизировать сбор логов и метрик.
  • Настроить CI/CD для создания и тестирования контейнеров.
  • Убедиться, что тома данных монтируются на надёжное хранилище.
  • Планировать обновления и релизные процессы.

Security Officer — перед сдачей в эксплуатацию:

  • Провести аудит конфигурации TLS/SSL.
  • Проверить доступы к MongoDB.
  • Включить двухфакторную аутентификацию.
  • Подготовить политику retention для логов и медиаконтента.

План инцидента и отката (runbook)

Пример быстрого плана на случай, если сервис перестал отвечать после обновления:

  1. Проверить статус контейнеров: docker compose ps.
  2. Просмотреть логи: docker compose logs rocketchat и docker compose logs mongodb.
  3. Если ошибка связана с новой версией, выполнить rollback: остановить контейнер, пересоздать с предыдущим тегом образа.
  4. Восстановить данные из последней рабочей резервной копии (при необходимости).
  5. Проверить целостность базы командой /api/info.
  6. Сообщить пользователям о статусе и времени восстановления.

Совместимость и миграция

  • Перед обновлением проверьте release notes Rocket.Chat на предмет несовместимых изменений в API и schema migration.
  • При миграции с других мессенджеров используйте доступные импортеры и плагины, внимательно тестируйте на тестовой среде.
  • Если вы планируете вертикальное масштабирование MongoDB, рассмотрите переход на управляемую MongoDB (например, MongoDB Atlas) для упрощения операций.

Decision tree (когда выбирать что)

flowchart TD
  A{Цель: быстрая установка на один сервер?} -->|Да| B[Use Docker Compose]
  A -->|Нет, нужно HA| C[Use Kubernetes or multiple hosts]
  B --> D{Нужен SSL?}
  D -->|Да| E[Configure Nginx + Certbot]
  D -->|Нет| F[Serve on HTTP 'test only']
  C --> G[Deploy MongoDB replica set and scale Rocket.Chat instances]
  G --> H[Configure load balancer and shared storage for uploads]

Частые проблемы и устранение неполадок

  • Ошибка WebSocket при подключении: убедитесь, что Nginx передаёт заголовок Upgrade и Connection: upgrade.
  • Невалидный сертификат: проверьте, что Certbot поместил сертификаты в /etc/letsencrypt/live/ и что nginx использует именно их.
  • Почта не отправляется: проверьте MAIL_URL в переменных окружения Rocket.Chat и настройки SMTP в интерфейсе.
  • MongoDB не стартует: проверьте, что томы доступны и что контейнер Mongo имеет достаточные права на запись.

Заключение

Вы развернули Rocket.Chat Community на Rocky Linux: установили Docker, Docker Compose, MongoDB и Rocket.Chat, настроили Nginx с SSL от Let’s Encrypt, выполнили первоначальную настройку через веб-интерфейс, настроили SMTP, научились делать бэкапы и обновления. Встроенные чеклисты, рекомендации по безопасности и runbook помогут вам перейти от PoC к стабильному продакшену.

Краткое резюме шагов: подготовка сервера → установка Docker → установка Docker Compose → создание docker-compose.yml → запуск контейнеров → настройка SSL и nginx → первоначальная веб-настройка → настройка SMTP → резервное копирование и обновление.

Если у вас возникли вопросы или нужны примеры для конкретной архитектуры (Kubernetes, managed MongoDB, high-availability), опишите ваш сценарий — я подскажу оптимальные шаги и конфигурации.


Краткая заметка для безопасности: всегда тестируйте важные операции (обновления, восстановление) в тестовом окружении до выполнения в продакшене.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро