Была задача обновиться на 8 версию, но в snap её обнаружено не было, и в документации появилась надпись: Rocket.Chat does not support this deployment method. Стало понятно, что пора переходить в Docker, но полноценной документации по этому поводу не нашлось. Пришлось проходить все шаги самостоятельно. На всё про всё может уйти от 5 минут, зависит от размера БД.
Запомнить текущие версии Rocket.Chat
В Администрирование -> Рабочее пространство запишите/запомните версию Rocket.Chat и MongoDB. В моём случае это были 7.13.2 и 6.0.19.
Подготовка Rocket.Chat в Docker
Основная статья: https://docs.rocket.chat/docs/deploy-with-docker-docker-compose
Шаги вкратце:
# Install Docker
curl -L https://get.docker.com | sh
# Install Git
sudo apt install git
# Добавить необходимого пользователя в группу docker
whoami
sudo usermod -aG docker $USER
# Перезагрузиться (не обязательно)
sudo reboot
# Перейдите в директорию, где хотите хранить файлы контейнеров, в данном случае домашняя директория пользователя
cd ~
git clone --depth 1 https://github.com/RocketChat/rocketchat-compose.git
cd rocketchat-compose
# Настройка переменных контейнеров
cp .env.example .env
Отредактируйте .env, необходимо указать переменные с версиями и указать путь где будут храниться файлы БД:
# Версия текущего сервера Rocket.Chat, развёрнутого в snap
RELEASE=7.13.2
# Ваш URL и домен для доступа к RC
DOMAIN=rc.netsphere.ru
ROOT_URL=https://rc.site.ru
# Путь где будут храниться файлы БД
MONGODB_HOST_PATH="/opt/RocketChat/mongodb"
# Версия mongo развёрнутой в snap
MONGODB_VERSION=6.0.19
Добавить volume (у меня это папка /backup )для передачи файлов бекапа из snap версии compose.database.yml:
mongodb:
volumes:
- ${MONGODB_HOST_PATH:-mongodb_data}:/data/db:rw
- /backup:/backup
volumes:
mongodb_data: {driver: local}
backup: {driver: local}
Запустить контейнер с MongoDB:
docker compose -f compose.database.yml up -d
Проверить что всё запустилось:
docker ps -a
Бекап текущего сервера
Остановить Rocket.Chat и сделать бекап:
systemctl stop snap.rocketchat-server.rocketchat-server
snap run rocketchat-server.backupdb
Резервная копия будет создана по следующему пути:
/var/snap/rocketchat-server/common/backup/rocketchat_backup_ГГГГММДД.ЧЧММ.tar.gz
Скопировать tar.gz на сервер с Docker и распаковать в /backup, получится путь вроде /backup/dump/parties
Восстановление БД в контейнере MongoDB
Перейти в консоль контейнера:
docker container exec -it rocketchat-compose-mongodb-1 bash
Запустить восстановление БД (-d rocketchat обязательно иначе после запуска самого сервера рокет чат, он предложит настроить новое пространство):
mongorestore -d rocketchat /backup/dump/parties/
Посмотреть логи: docker compose -f compose.database.yml logs -f mongodb
Запуск контейнера с Rocket.Chat
docker compose -f compose.database.yml -f compose.yml up -d
# Запуск может занимать около минуты
docker compose logs
Остальные настройки необходимо сделать из статьи https://docs.rocket.chat/docs/deploy-with-docker-docker-compose
Полезное
Остановить и удалить всё и вся:
docker stop $(docker ps -q)
docker compose down $(docker ps -q)
docker compose down --remove-orphans