Rocket.Chat — перенос существующего сервера из snap в Docker

Была задача обновиться на 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика