ИТ

Rocket.Chat Deploy Toolkit: управление сервером одним скриптом

Rocket.Chat Deploy Toolkit, bash-скрипт, который я создал для установки, обновления и управления серверами Rocket.Chat на Ubuntu. Вместо фрагментированной документации и надежды что ничего не сломается между шагами, один скрипт, покрывающий весь жизненный цикл: от чистой установки с Nginx, MongoDB, Node.js и SSL до обновлений MongoDB, миграции на MinIO и подключаемой системы патчей.

Зачем нужен Rocket.Chat Deploy Toolkit

Я разворачиваю и сопровождаю инстансы Rocket.Chat для клиентов в разных отраслях, от корпоративного мессенджера до защищённых коммуникаций в регулируемых средах. Стандартный процесс деплоя, десяток ручных шагов с версионными подводными камнями. Этот тулкит объединяет всё в протестированный, воспроизводимый workflow со встроенной диагностикой и проверками безопасности.

Скрипт прошёл через реальные продакшн-деплои, текущая версия 2.4.0 с подключаемыми патчами, визардом обновления MongoDB и автоматическим обнаружением ошибок в главном меню.

Что делает Rocket.Chat Deploy Toolkit управление сервером

Интерактивное меню покрывает весь жизненный цикл:

  • Установка — полный стек Rocket.Chat со всеми зависимостями (Nginx, MongoDB, Node.js, SSL через certbot)
  • Обновления — контролируемые апгрейды с проверкой зависимостей
  • Управление сервисами — start, stop, restart с фидбеком статуса
  • Диагностика — проверка DNS/IP, системных требований, аудит .env, информация MongoDB и FCV, переустановка Node.js, управление APN
  • Мониторинг логов — автоматическое обнаружение ошибок с мультипериодным анализом (10 мин, 1 час, 1 день) и цветовыми алертами
  • Визард обновления MongoDB — автоматический апгрейд 8.0 → 8.2 с подтверждениями FCV
  • Патчи и миграции — подключаемая система с автообнаружением скриптов и проверкой идемпотентности

Подключаемая система патчей

Архитектурно интересное решение: любой .sh файл в директории patches/ автоматически появляется в меню. Каждый патч объявляет метаданные (версия, дата, статус билда, описание) в заголовочном комментарии и реализует флаг --check для проверки идемпотентности. Перед показом списка тулкит запускает каждую проверку с таймаутом 3 секунды и показывает статус: applied, not applied или unknown.

Новые миграции добавляются без правки основного скрипта. В комплекте, патч миграции на MinIO: 590-строчный скрипт, переводящий файловое хранилище с MongoDB GridFS на self-hosted MinIO с Nginx proxy, rate limiting, проверкой referrer и хардингом безопасности.

Миграция на MinIO

Патч миграции выполняет полный переход за 10 автоматизированных шагов: установка MinIO, генерация credentials, создание systemd-сервиса, конфигурация Nginx с rate limiting, остановка Rocket.Chat, копирование файлов из GridFS, обновление записей в MongoDB, запись S3-настроек, перезапуск сервисов, верификация количества файлов. Домен автоматически определяется из настроек MongoDB, ноль ручной конфигурации.

Практическое применение

В работе внештатного CTO я использую этот тулкит для деплоя платформ коммуникации. Инстанс chat.ilia.ae — мой собственный Rocket.Chat с кастомными iOS и Android-приложениями, работает именно на этом тулките. От первоначальной установки до обновления MongoDB и миграции на MinIO, каждая операция через скрипт.

Исходный код

Тулкит доступен по запросу. Свяжитесь со мной для доступа. Клонируй, настрой .env, запусти с sudo.

Для консультаций по деплою Rocket.Chat и инфраструктуре корпоративных мессенджеров, более 15 лет опыта развёртывания систем коммуникации в 38 странах.

FAQ

Тулкит только для управления или для установки тоже?

Для всего. Первый пункт меню выполняет полную установку Rocket.Chat со всеми зависимостями. После установки тот же скрипт управляет обновлениями, диагностикой и миграциями.

Как работает обновление MongoDB?

Автоматический визард останавливает Rocket.Chat, меняет apt-репозиторий с 8.0 на 8.2, устанавливает новые пакеты, перезапускает MongoDB и обновляет Feature Compatibility Version. Смена FCV требует ввода «yes» на двух отдельных запросах, так как она необратима.

Можно добавить свои патчи?

Да. Создайте .sh файл в patches/ с метаданными в заголовке и флагом —check для идемпотентности. Он автоматически появится в меню патчей без изменений основного скрипта.

Миграция на MinIO обратима?

Исходные данные GridFS остаются в MongoDB после миграции. Но новые загрузки идут в MinIO, поэтому полный откат потребует восстановления настроек и повторной загрузки файлов, созданных после миграции.

Илья Арестов, Внештатный CTO | Dubai Airport Free Zone (DAFZ), Dubai, UAE | Алматы, ул. Зенкова 59, Казахстан | +971-585-930-600 | https://t.me/getmonolith
Оцените статью