Часть 2. Резервное копирование и Перенос на другой сервер Docker

гайды / Matrix
30.11.2025
7
Часть 2. Резервное копирование и Перенос на другой сервер Docker

Часть 2. Резервное копирование и Перенос на другой сервер

У нас сложная структура: часть данных лежит просто в папке /opt/matrix-stack (например, база Postgres и конфиги), а часть данных (Nextcloud и Caddy) лежит в Docker Volumes (внутри глубин Докера).

Чтобы перенести всё без потерь, нужно "вытащить" данные из Volumes в файлы.

ЭТАП 1: Создание бекапа (На текущем сервере)

  1. Останавливаем контейнеры (ОБЯЗАТЕЛЬНО):
    Если этого не сделать, база данных может повредиться при копировании.

cd /opt/matrix-stack
docker compose stop

Архивируем Docker Volumes (Nextcloud и Caddy):
В вашем docker-compose.yml есть тома nextcloud_data, nextcloud_db_data и caddy_data. Нам нужно сохранить их содержимое в архив.
Мы запустим временный контейнер alpine, который подключит том и запакует его.

Выполните эти команды по очереди:

# 1. Бекап файлов Nextcloud
docker run --rm -v matrix_net_nextcloud_dаta:/volume -v /opt/matrix-stack:/backup alpine tar -czf /backup/nextcloud_files.tar.gz -C /volume .

# 2. Бекап базы данных Nextcloud (MariaDB)
docker run --rm -v matrix_net_nextcloud_db_dаta:/volume -v /opt/matrix-stack:/backup alpine tar -czf /backup/nextcloud_db.tar.gz -C /volume .

# 3. Бекап сертификатов Caddy (чтобы на новом сервере не перевыпускать лимиты)
docker run --rm -v matrix_net_caddy_dаta:/volume -v /opt/matrix-stack:/backup alpine tar -czf /backup/caddy_data.tar.gz -C /volume .
  1. Примечание: Имена томов (matrix_net_...) могут отличаться. Проверьте их точные названия командой docker volume ls. Обычно Docker добавляет префикс папки (например matrix-stack_nextcloud_data). Если команда выдаст ошибку, подставьте правильное имя тома из списка.

  2. Архивируем всю папку проекта:
    Теперь, когда данные из томов лежат в файлах .tar.gz внутри нашей папки, запакуем всю папку целиком.

cd /opt
tar -czf matrix-full-backup.tar.gz matrix-stack

Восстановите Docker Volumes:
Сначала создадим пустые тома, а потом распакуем в них наши архивы.

Важно: Запустите docker compose up --no-start, чтобы Докер сам создал нужные тома с правильными именами.

docker compose up --no-start

Теперь распаковываем данные обратно в тома:

# 1. Восстанавливаем файлы Nextcloud
# (Замените 'matrix-stack_nextcloud_data' на точное имя тома, если оно другое - см. docker volume ls)
docker run --rm -v matrix-stack_nextcloud_dаta:/volume -v /opt/matrix-stack:/backup alpine sh -c "rm -rf /volume/* && tar -xzf /backup/nextcloud_files.tar.gz -C /volume"

# 2. Восстанавливаем базу Nextcloud
docker run --rm -v matrix-stack_nextcloud_db_dаta:/volume -v /opt/matrix-stack:/backup alpine sh -c "rm -rf /volume/* && tar -xzf /backup/nextcloud_db.tar.gz -C /volume"

# 3. Восстанавливаем сертификаты Caddy
docker run --rm -v matrix-stack_caddy_dаta:/volume -v /opt/matrix-stack:/backup alpine sh -c "rm -rf /volume/* && tar -xzf /backup/caddy_data.tar.gz -C /volume"

Удалите архивы внутри папки (чтобы не занимали место)

rm nextcloud_files.tar.gz nextcloud_db.tar.gz caddy_data.tar.gz

Запустите сервер:

docker compose up -d

Нюанс с IP адресами

Если на новом сервере изменился IP адрес, вам нужно:

  1. Обновить A-записи в DNS у вашего регистратора домена.

  2. Если вы использовали IP в конфигах (например в Caddyfile для LiveKit мы ставили 172..., это не изменится, но если где-то прописан внешний IP) — поправьте.

  3. Очистить кэш браузера.

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

Download Files

Нет комментариев.

Добавить комментарий
Ваш комментарий будет проверен модератором. Мы оставляем за собой право удалять комментарии, нарушающие правила.
Защита от спама
Комментарий будет опубликован после проверки модератором
Оцените работу движка
Статистика
Успешно!

Операция выполнена успешно.