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

гайды / Matrix
30.11.2025
10
Часть 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

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

Оцените работу движка
Статистика
Успешно!

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