Обновление Rocket.Chat через snap refresh завершается ошибкой, а сервер после перезапуска не поднимается — типичная ситуация, когда версия MongoDB больше не поддерживается новым релизом сервера. Именно несовместимость версий базы данных и сервера чаще всего превращает штатное обновление корпоративного мессенджера в многочасовое восстановление. Поэтому любое обновление Rocket.Chat начинается не с команды установки, а с проверки совместимости и резервного копирования.
В этой статье разберём, как подготовиться к обновлению, какие способы установки существуют и как обновляется каждый из них, что делать при ошибках и как откатиться на предыдущую версию. Инструкция ориентирована на администраторов самостоятельно размещённых (self-hosted) серверов.
Почему обновление Rocket.Chat требует подготовки
Rocket.Chat — серверное приложение с базой данных MongoDB, и новые версии сервера периодически повышают минимальные требования к версии базы, Node.js и другим компонентам. Если обновить сервер, не проверив эти требования, можно получить неработающий экземпляр.
Вторая причина — миграции базы данных. При первом запуске новой версии сервер автоматически преобразует структуру данных. На больших базах этот процесс может занять заметное время, и прерывание его посередине грозит повреждением данных.
⚠️ Внимание: миграции базы данных в Rocket.Chat, как правило, необратимы. Откат на старую версию без резервной копии, сделанной до обновления, может оказаться невозможным — старый сервер не поймёт новую структуру данных.
Наконец, часть обновлений закрывает уязвимости безопасности. Откладывать их надолго не стоит, но и ставить свежий релиз в первый день без тестирования на крупном production-сервере — спорная практика.
Проверка совместимости перед обновлением
Первое действие — открыть официальные release notes целевой версии Rocket.Chat на GitHub или в документации проекта. Там указаны требования к окружению и список критических изменений (breaking changes).
Далее проверьте текущее состояние сервера:
- 🔎 Текущая версия Rocket.Chat — видна в админ-панели в разделе информации о сервере.
- 🗄️ Версия MongoDB — командой
mongod --versionили через административную консоль базы. - 💾 Свободное место на диске — обновлению и бэкапу нужен запас пространства.
- 🧩 Установленные приложения из Marketplace — часть из них может быть несовместима с новой версией.
Особое внимание уделите совместимости версии MongoDB с целевой версией Rocket.Chat — это самая частая причина неудачных обновлений. Набор поддерживаемых версий базы меняется от релиза к релизу, поэтому сверяйтесь именно с документацией той версии, на которую переходите.
Резервное копирование перед обновлением
Бэкап — обязательный этап, без которого дальнейшие шаги превращаются в лотерею. Минимальный объём копирования — база данных и загруженные файлы, если они хранятся локально.
Для MongoDB стандартный инструмент — mongodump. Пример команды для локальной базы:
mongodump --db rocketchat --out /backup/rocketchat-$(date +%F)
Дополнительно сохраните:
- 📁 Каталог с загруженными файлами, если используется файловое хранилище вместо GridFS или S3.
- ⚙️ Конфигурационные файлы: переменные окружения, настройки службы,
docker-compose.yml. - 🔐 Секреты и ключи интеграций, которые не хранятся в базе.
После создания копии проверьте её целостность: убедитесь, что дамп создался без ошибок и занимает правдоподобный объём. Пустой или обрезанный дамп — это отсутствие бэкапа.
Обновление Rocket.Chat в зависимости от способа установки
Процедура обновления напрямую зависит от того, как развёрнут сервер. Ниже — основные сценарии.
Обновление Docker-установки
Для установок через Docker Compose обновление сводится к смене тега образа и пересозданию контейнера:
docker compose pull
docker compose up -d
Перед этим убедитесь, что в docker-compose.yml указана конкретная версия образа, а не latest, — так вы контролируете, на какой релиз переходите, и можете вернуться назад. После запуска следите за логами: docker compose logs -f rocketchat. Первый старт с миграциями может занять продолжительное время.
Обновление Snap-установки
Snap-пакеты обновляются автоматически, но можно запустить процесс вручную:
sudo snap refresh rocketchat-server
Учтите, что Snap-канал определяет, какие версии вы получаете. Перед обновлением сделайте снапшот данных средствами самого snap (snap save) или отдельный дамп базы.
Обновление ручной установки (tarball)
При ручном развёртывании процедура сложнее: нужно загрузить архив новой версии с официального сайта проекта, остановить службу, развернуть файлы, установить зависимости и запустить сервер заново. Точные шаги зависят от вашей связки ОС и версии Node.js — сверяйтесь с официальной документацией, поскольку требования к рантайму меняются между релизами.
☑️ Чек-лист обновления Rocket.Chat
Типичные ошибки при обновлении и их решение
Разберём ситуации, с которыми администраторы сталкиваются чаще всего.
Сервер не стартует после обновления. Откройте логи и найдите первую ошибку, а не последнюю — обычно это сообщение о несовместимости версии MongoDB или нехватке прав. Решение — привести окружение в соответствие требованиям релиза или откатиться.
Миграция зависла. На больших базах миграции идут долго, и процесс легко принять за зависание. Проверьте нагрузку на диск и процессор: если активность есть — дождитесь завершения. Прерывать миграцию опасно.
Ошибки приложений Marketplace. Несовместимые приложения могут блокировать запуск или работать некорректно. Обновите их через админ-панель либо временно отключите.
| Симптом | Вероятная причина | Действие |
|---|---|---|
| Сервер не запускается | Несовместимая версия MongoDB | Обновить базу до поддерживаемой версии или откатить сервер |
| Долгий первый запуск | Выполняются миграции БД | Наблюдать за логами, не прерывать процесс |
| Ошибка прав доступа к файлам | Сменился пользователь службы | Проверить владельца каталогов загрузок и конфигов |
| Не работают интеграции | Несовместимые приложения Marketplace | Обновить или отключить приложения |
| Пустой интерфейс после входа | Кэш клиента или reverse proxy | Очистить кэш, проверить настройки прокси |
⚠️ Внимание: не обновляйте одновременно Rocket.Chat и MongoDB «в один проход» на production-сервере. Сначала поднимите базу до нужной версии, убедитесь в стабильной работе, и только затем обновляйте сервер.
Откат на предыдущую версию
Если обновление прошло неудачно, порядок действий такой: остановите сервер, восстановите базу из дампа через mongorestore, верните прежнюю версию приложения (старый тег образа, прежний snap-ревизион или сохранённые файлы) и запустите службу.
mongorestore --db rocketchat /backup/rocketchat-2026-01-01/rocketchat
Именно поэтому бэкап до обновления — не формальность. Без него откат после выполненных миграций может оказаться невозможным штатными средствами.
Что делать, если бэкапа нет, а обновление сломало сервер
Попробуйте определить причину по логам — часто проблема в окружении (версия MongoDB, права), а не в данных. Исправив окружение, можно запустить новую версию без отката. Если данные повреждены миграцией, вариантов восстановления мало — обращайтесь к сообществу проекта и официальной документации.
Обновление клиентских приложений
Десктопные и мобильные клиенты Rocket.Chat обновляются независимо от сервера — через магазины приложений или механизм автообновления десктопной версии. Обычно клиенты сохраняют совместимость с диапазоном серверных версий, но очень старые клиенты могут некорректно работать с новым сервером и наоборот.
Рекомендуемый порядок в организации: сначала обновите сервер в тестовом контуре, проверьте работу с типичными версиями клиентов сотрудников, затем планируйте обновление боевого сервера.
Часто задаваемые вопросы
Можно ли обновляться через несколько версий сразу?
Официальная документация, как правило, допускает переход между соседними мажорными версиями, но перескок через несколько крупных релизов повышает риск конфликтов миграций. Безопаснее обновляться последовательно, проверяя работоспособность на каждом шаге.
Сколько времени занимает обновление?
Само развёртывание новой версии — минуты, но миграции базы на крупных инсталляциях могут идти значительно дольше. Закладывайте maintenance-окно с запасом и предупреждайте пользователей.
Обновится ли Rocket.Chat Snap автоматически?
Да, snap-пакеты по умолчанию обновляются автоматически. Это удобно, но рискованно для production: обновление может начаться в неподходящий момент. Контролируйте процесс через настройки snap или используйте Docker с фиксированными тегами версий.
Как узнать текущую версию сервера?
В административной панели Rocket.Chat откройте раздел с информацией о сервере — там отображается версия приложения, а также сведения об окружении. Альтернатива — посмотреть тег образа в Docker или вывод команды для вашего способа установки.
Что делать, если после обновления пропали сообщения?
Сначала проверьте, завершились ли миграции и нет ли ошибок в логах — иногда данные на месте, но интерфейс не отображает их из-за незавершённых процессов или кэша. Если данные действительно утрачены, восстанавливайте базу из резервной копии, сделанной до обновления.