Rocket.Chat Releases: как отслеживать версии и безопасно обновляться

Администраторы Rocket.Chat регулярно сталкиваются с ситуацией: после очередного обновления сервера перестаёт работать интеграция или меняется поведение API — и приходится срочно искать, что именно изменилось в новом релизе. Отслеживание релизов Rocket.Chat через официальный репозиторий и чтение changelog перед обновлением — основной способ избежать таких сюрпризов.

В этой статье разберём, где публикуются релизы Rocket.Chat, как устроена нумерация версий, чем отличаются каналы обновлений и как безопасно обновить или откатить сервер, развёрнутый через Docker, Snap или вручную.

Где публикуются релизы Rocket.Chat

Основной источник информации о релизах — официальный репозиторий Rocket.Chat на GitHub, раздел Releases. Там для каждой версии публикуются примечания к выпуску: список новых функций, исправленных ошибок и закрытых уязвимостей. Отдельно ведётся файл CHANGELOG.md в корне репозитория, где история изменений собрана в хронологическом порядке.

Дополнительные каналы, через которые команда проекта анонсирует релизы:

  • 📢 Официальный блог проекта — крупные версии с обзором ключевых нововведений.
  • 🐙 GitHub Releases — теги, changelog и ссылки на артефакты сборки.
  • 🐳 Docker Hub — образы rocket.chat с тегами версий для контейнерных развёртываний.
  • 📦 Snap Store — каналы стабильности для установок через snap install rocketchat-server.

Как устроена нумерация версий

Rocket.Chat использует семантическую схему версионирования вида MAJOR.MINOR.PATCH. Первое число меняется при крупных архитектурных изменениях, второе — при добавлении новых функций, третье — при исправлении ошибок и уязвимостей. Понимание этой логики помогает оценить риск обновления: патч-релизы обычно безопасны, а мажорные версии могут менять API и требовать миграций.

Отдельно стоит упомянуть теги latest и develop в Docker Hub. Первый указывает на последний стабильный релиз, второй — на сборку из ветки разработки. Использовать develop на боевом сервере не следует: такие сборки не проходят полный цикл тестирования.

Каналы обновлений: стабильный и экспериментальный

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

snap info rocketchat-server

Переключение канала выполняется так:

sudo snap refresh rocketchat-server --channel=6.x/stable

Точные названия каналов зависят от текущей линейки версий, поэтому перед переключением проверьте вывод snap info — там перечислены актуальные каналы. Для Docker-установок аналогом канала служит тег образа в docker-compose.yml.

⚠️ Внимание: Rocket.Chat не поддерживает обновление через пропуск мажорных версий без промежуточных шагов. Если ваш сервер сильно отстал от актуального релиза, обновляйтесь последовательно, сверяясь с официальной документацией по миграции.

Безопасное обновление сервера

Главное правило обновления Rocket.Chat — резервная копия базы данных MongoDB до начала процесса. Схема данных между версиями меняется, и откат без бэкапа может оказаться невозможным.

Типовой порядок действий для Docker-установки выглядит так:

docker compose pull

docker compose down

docker compose up -d

Перед этим убедитесь, что в docker-compose.yml указан конкретный тег версии, а не latest — иначе вы не контролируете, до какого релиза обновится сервер. После запуска проверьте логи на предмет ошибок миграции базы данных: docker compose logs -f rocketchat.

☑️ Чек-лист перед обновлением Rocket.Chat

Выполнено: 0 / 5
⚠️ Внимание: никогда не обновляйте боевой сервер в день выхода мажорного релиза. Подождите хотя бы первый патч-выпуск — в нём обычно исправляют ошибки, обнаруженные сразу после релиза.

Что проверять в changelog перед обновлением

Не все пункты changelog одинаково важны. В первую очередь ищите разделы, помеченные как Breaking Changes — там перечислены изменения, которые могут сломать существующие интеграции, ботов и кастомные скрипты. Далее проверьте пункты про устаревшие (deprecated) функции: если вы их используете, запланируйте миграцию.

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

📊 Как развёрнут ваш сервер Rocket.Chat?
Docker / Docker Compose
Snap-пакет
Ручная установка (Node.js)
Облако Rocket.Chat (SaaS)

Откат на предыдущую версию

Откат Rocket.Chat — нетривиальная операция, потому что миграции базы данных необратимы. Если после обновления что-то пошло не так, единственный надёжный способ вернуться — восстановить MongoDB из бэкапа, сделанного до обновления, и запустить контейнер со старым тегом версии.

Для Snap-установок существует команда sudo snap revert rocketchat-server, которая возвращает предыдущую ревизию пакета. Однако она не откатывает изменения в базе данных — это нужно учитывать. Бэкап MongoDB перед обновлением — единственная гарантия работоспособного отката.

Почему нельзя просто запустить старую версию поверх новой базы

При обновлении Rocket.Chat выполняет миграции — скрипты, которые изменяют структуру коллекций MongoDB. Старая версия кода не знает о новой структуре и может падать с ошибками или молча портить данные. Поэтому откат кода всегда должен сопровождаться восстановлением базы из резервной копии, сделанной до обновления.

Таблица: способы установки и обновления

Способ установкиКак обновляетсяОсобенности
Docker ComposeСмена тега образа и пересоздание контейнераПолный контроль над версией
SnapАвтообновление по каналу или snap refreshОбновляется автоматически, канал можно зафиксировать
Ручная установкаСкачивание архива релиза и пересборкаБольше ручных операций, выше риск ошибок
Rocket.Chat Cloud (SaaS)Обновляется командой проектаАдминистратор не управляет версией

Частые проблемы после обновления

Наиболее типичные жалобы после перехода на новый релиз: неработающие интеграции из-за изменений в API, ошибки миграции базы данных в логах, проблемы с мобильными и десктопными клиентами, которые требуют минимальную версию сервера. В большинстве случаев диагностику стоит начинать с логов сервера и сопоставления ошибок с пунктами changelog.

Если клиентские приложения перестали подключаться, проверьте требования к минимальной версии сервера в документации соответствующего приложения — клиенты и сервер обновляются независимо, и несовместимость встречается регулярно.

FAQ: частые вопросы о релизах Rocket.Chat

Как узнать текущую версию своего сервера Rocket.Chat?

Авторизуйтесь под администратором и откройте раздел администрирования — версия отображается в информации о сервере. Также версию видно в логах при запуске и в ответе API-метода /api/info.

Как часто выходят новые релизы Rocket.Chat?

Минорные версии выходят регулярно, патч-релизы — по мере накопления исправлений. Точное расписание не фиксировано, поэтому надёжнее подписаться на уведомления в GitHub-репозитории.

Можно ли отключить автоматическое обновление Snap-версии?

Полностью отключить автообновление Snap сложно, но можно зафиксировать канал на конкретной линейке версий и настроить окно обновлений через snap set system refresh.hold — детали смотрите в документации snapd для вашей системы.

Где найти информацию об уязвимостях, закрытых в релизе?

Сведения о безопасности публикуются в примечаниях к релизу на GitHub и в разделе Security репозитория. Для критичных уязвимостей команда проекта выпускает отдельные анонсы.

Что делать, если после обновления сервер не запускается?

Сначала изучите логи: чаще всего причина в ошибке миграции базы данных или несовместимости версии MongoDB. Если проблему решить не удаётся, восстановите базу из бэкапа и вернитесь на предыдущий тег версии, затем изучите changelog и документацию по миграции.