Как обновить Rocket.Chat: полное руководство по обновлению сервера

Обновление Rocket.Chat на самоподдерживаемом сервере напрямую зависит от способа установки: команда snap refresh rocketchat-server не сработает в Docker-развёртывании, а docker compose pull бесполезна для ручной установки через Node.js. Поэтому первое действие перед обновлением — определить, как именно развёрнут ваш экземпляр. Обычно это видно по сервисам на сервере: наличие контейнера rocketchat в выводе docker ps указывает на Docker, а запись rocketchat-server в списке snap list — на Snap-пакет.

Актуальная версия сервера важна не только ради новых функций: разработчики регулярно закрывают уязвимости безопасности, а устаревшие версии постепенно теряют совместимость с мобильными и десктопными клиентами. При этом обновление без резервной копии базы данных — главный источник потери корпоративной переписки. Ниже разберём подготовку и порядок обновления для каждого способа установки.

Подготовка: проверка версии и резервная копия

Узнать текущую версию можно в административной панели: Администрирование → Информация (в английском интерфейсе — Administration → Info). Там же отображается версия MongoDB и история обновлений. Сравните её с актуальным релизом на официальном репозитории проекта на GitHub — разработчики публикуют примечания к каждой версии, включая список критических исправлений.

Перед любыми действиями создайте резервную копию базы данных. Rocket.Chat хранит все сообщения, пользователей и настройки в MongoDB, поэтому для бэкапа используется стандартная утилита mongodump:

mongodump --db rocketchat --out /backup/$(date +%F)

Для Docker-развёртывания команду выполняют внутри контейнера с MongoDB или с хоста, если порт базы доступен. Дополнительно скопируйте каталог с загруженными файлами, если вложения хранятся в файловой системе, а не в объектном хранилище.

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

☑️ Подготовка к обновлению Rocket.Chat

Выполнено: 0 / 5

Обновление Rocket.Chat в Docker

Docker — рекомендуемый разработчиками способ развёртывания, и обновление здесь сводится к замене образа контейнера. Перейдите в каталог с файлом docker-compose.yml и выполните:

docker compose pull

docker compose up -d

Первая команда загружает свежий образ, вторая пересоздаёт контейнер с новой версией. Данные сохраняются, поскольку база находится в отдельном volume. Если в compose-файле тег образа указан как latest или latest-stable, вы получите последнюю стабильную сборку; при фиксированном теге версии его нужно вручную изменить на целевой.

После запуска проверьте логи на наличие ошибок миграции:

docker compose logs -f rocketchat

Признак успешного обновления — строки о завершении миграций и доступность веб-интерфейса. Если контейнер перезапускается циклически, изучите логи: частая причина — несовместимость версии MongoDB с новой версией сервера.

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

Обновление Snap-установки

Snap-пакет обновляется проще всего — механизм snapd по умолчанию делает это автоматически. Однако автоматическое обновление может произойти в разгар рабочего дня, поэтому многие администраторы предпочитают контролировать процесс вручную:

sudo snap refresh rocketchat-server

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

sudo snap revert rocketchat-server

Учтите, что откат пакета не отменяет миграции базы данных, уже выполненные новой версией. Поэтому резервная копия MongoDB остаётся обязательной даже при кажущейся простоте Snap-обновления.

Ручная установка через Node.js

При ручной установке обновление требует больше действий. Общий порядок выглядит так:

  • 🛑 Остановите сервис: systemctl stop rocketchat (имя службы может отличаться в вашей конфигурации).
  • 📦 Скачайте архив новой версии с официального репозитория релизов проекта.
  • 📂 Распакуйте его в новый каталог, не перезаписывая старый — это упростит откат.
  • 🔧 Установите зависимости в каталоге сервера командой npm install с учётом production-режима.
  • ▶️ Запустите службу и проверьте логи: systemctl start rocketchat и journalctl -u rocketchat -f.

Критичный момент — версия Node.js. Каждая версия Rocket.Chat рассчитана на конкретную версию среды выполнения, и несовпадение приводит к отказу запуска. Требуемая версия указывается в примечаниях к релизу и в файлах сборки — сверьтесь с ними до начала установки зависимостей.

Как узнать требуемую версию Node.js

Откройте примечания к релизу нужной версии Rocket.Chat на GitHub — разработчики указывают поддерживаемую версию Node.js в разделе системных требований. Также информация содержится в файле package.json дистрибутива. Не используйте произвольную версию Node.js «с запасом»: слишком новая среда выполнения может быть несовместима так же, как и устаревшая.

Сравнение способов обновления

Выбор метода обновления полностью определяется способом установки. Сводная таблица поможет сориентироваться:

Способ установкиКоманда обновленияОткатСложность
Docker Composedocker compose pull && up -dСмена тега образаНизкая
Snapsnap refresh rocketchat-serversnap revertНизкая
Ручная (Node.js)Замена каталога + npm installВозврат к старому каталогуСредняя
Облако Rocket.ChatОбновляется разработчикомНе требуетсяМинимальная

Если вы используете облачную версию от разработчика, обновлять сервер вручную не нужно — это происходит на стороне провайдера. Вам остаётся лишь следить за обновлением клиентских приложений на устройствах сотрудников.

Обновление клиентских приложений

Сервер — только половина системы. Десктопные клиенты для Windows, macOS и Linux обновляются через встроенный механизм или переустановку свежего установщика с официального сайта. Мобильные приложения обновляются стандартно — через Google Play и App Store.

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

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

Типичные проблемы после обновления

Чаще всего администраторы сталкиваются с такими ситуациями:

  • 🔄 Контейнер или служба перезапускается — смотрите логи: вероятны ошибка миграции БД или несовместимость версии MongoDB.
  • 🐌 Интерфейс недоступен несколько минут — при большом объёме базы миграции выполняются долго; дождитесь завершения, наблюдая за логами.
  • 🔌 Отвалились интеграции и приложения из маркетплейса — после обновления проверьте раздел установленных приложений, некоторые требуют обновления или повторного включения.
  • 👤 Проблемы с авторизацией (LDAP, OAuth) — проверьте настройки соответствующего провайдера, параметры иногда требуют подтверждения после мажорного апгрейда.

Если обновление завершилось ошибкой и сервис не поднимается, план действий такой: остановить службу, восстановить базу из резервной копии (mongorestore), вернуть прежнюю версию приложения и только потом разбираться с причиной сбоя на тестовом стенде. Никогда не повторяйте неудачное обновление на боевом сервере, не выяснив его причину — повторная миграция на уже повреждённой базе усугубит проблему.

Часто задаваемые вопросы

Как часто нужно обновлять Rocket.Chat?

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

Потеряются ли сообщения при обновлении?

При штатном обновлении данные сохраняются: сообщения хранятся в MongoDB, которая не затрагивается при замене приложения. Потеря данных возможна при сбое миграции без резервной копии — поэтому бэкап перед обновлением обязателен.

Можно ли обновиться сразу с версии 4.x на 7.x?

Прямой переход через несколько мажорных версий может не поддерживаться из-за изменений в структуре базы данных. Сверьтесь с официальной документацией по миграции: в ряде случаев требуется последовательное обновление через промежуточные версии.

Как откатить обновление, если что-то пошло не так?

В Docker — укажите прежний тег образа и пересоздайте контейнер, в Snap — выполните snap revert rocketchat-server. В обоих случаях, если новая версия уже выполнила миграции базы, потребуется восстановить MongoDB из резервной копии, сделанной до обновления.

Нужно ли обновлять MongoDB отдельно?

Да, периодически. Новые версии Rocket.Chat могут требовать более свежую версию MongoDB и отказываться запускаться на устаревшей. Требования указаны в примечаниях к релизу — проверяйте их заранее и обновляйте СУБД по её официальной инструкции, предварительно сделав бэкап.