Rocket.Chat Deploy Toolkit, bash-скрипт, который я создал для установки, обновления и управления серверами Rocket.Chat на Ubuntu. Вместо фрагментированной документации и надежды что ничего не сломается между шагами, один скрипт, покрывающий весь жизненный цикл: от чистой установки с Nginx, MongoDB, Node.js и SSL до обновлений MongoDB, миграции на MinIO и подключаемой системы патчей.
- Зачем нужен Rocket.Chat Deploy Toolkit
- Что делает Rocket.Chat Deploy Toolkit управление сервером
- Подключаемая система патчей
- Миграция на MinIO
- Практическое применение
- Исходный код
- FAQ
- Тулкит только для управления или для установки тоже?
- Как работает обновление 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, поэтому полный откат потребует восстановления настроек и повторной загрузки файлов, созданных после миграции.
