Docker環境のNextcloudバックアップ、リストア


概要

以前Ubuntu24.04LTSに構築したDocker環境のNextCloudの容量が一杯になってしまったので、自分の夏休み前に緊急で新たにセットアップしたサーバーにリストアすることとした。その際のメモ
手順はGoogle AI Studioに尋ねた。
旧環境と新環境は同じdocker-compose.ymlとしている。
旧サーバーのデータは マウントしたNASにバックアップしてからリストアした。

過去セットアップした際の記録

バックアップ(現サーバー)

NASをマウント

$ sudo mkdir /mnt/nasnextcloud

$ sudo mount -t cifs //nas-ip/nasfolder /mnt/nasnextcloud -o user,vers=3.0,uid=999,gid=999,file_mode=0640,dir_mode=0750

NextCloudをメンテナンスモードに移行

$ docker compose exec --user www-data app php occ maintenance:mode --on

mariadbバックアップ

$ docker compose exec db mysqldump -u nextcloud -p"nextcloudpassword" nextcloud > /mnt/nasnextcloud/nextcloud_db.sql

NextCloudバックアップ

docker volumeの保存先を調べてその中身をNASに圧縮バックアップする。
例) "/var/lib/docker/volumes/nextcloud_nextcloud/_data"

$ docker volume inspect nextcloud_nextcloud | grep "Mountpoint"

"Mountpoint": "/var/lib/docker/volumes/nextcloud_nextcloud/_data",

# 上記で確認したMountpointのパスを指定してください
$ sudo tar -czvf /mnt/nasnextcloud/nextcloud_data.tar.gz -C /var/lib/docker/volumes/nextcloud_nextcloud/_data .

設定ファイル等バックアップ

  • docker-compose.yml

  • config.php

  • 証明書

$ cd ~/nextcloud

$ tar -czvf /mnt/nasnextcloud/nextcloud_config.tar.gz .

コンテナ停止

$ docker compose down

リストア(新サーバー)

※事前にUbuntu Server24.04LTSにdocker、mkcertをインストール、バックアップしていたファイルを新サーバー環境にコピーしておく

  • nextcloud_config.tar.gz

  • nextcloud_data.tar.gz

  • nextcloud_db.sql

設定ファイル展開

$ mkdir ~/nextcloud
$ cd ~/nextcloud
$ tar -xzvf ~/backup/nextcloud_config.tar.gz

Dockerコンテナ初回起動と停止

NextcloudのVolumeをDockerに作成するため

cd ~/nextcloud

docker-compose up -d
$ docker compose down

NextCloudデータリストア

# volumeのパスを確認する
$ docker volume inspect nextcloud_nextcloud | grep "Mountpoint"
"Mountpoint": "/var/lib/docker/volumes/nextcloud_nextcloud/_data",

# 上記のパスをコピーして使う
$ sudo rm -rf /var/lib/docker/volumes/nextcloud_nextcloud/_data/*
$ sudo tar -xzvf ~/backup/nextcloud_data.tar.gz -C /var/lib/docker/volumes/nextcloud_nextcloud/_data

コンテナ再起動

$ docker compose up -d

mariadbリストア

# docker-compose.ymlがあるディレクトリで実行
$ cat ~/backup/nextcloud_db.sql | docker compose exec -T db mysql -u nextcloud -p"nextcloudpassword" nextcloud

ファイルのパーミッション修正

$ docker compose exec --user root app chown -R www-data:www-data /var/www/html

NextCloud各種設定更新

# データベーススキーマの更新など
$ docker compose exec --user www-data app php occ upgrade

メンテナンスモード解除

# メンテナンスモードを解除
$ docker compose exec --user www-data app php occ maintenance:mode --off

ブラウザで確認

無事起動できました。

反省、次回等

  • 新サーバーにsshが繋がらないのに苦戦(ノートPCの蓋を閉じた時にサスペンドになっていた・・)

  • 次回は新サーバにONLYOfficeかCollabola Onlineを使える状態にしていこうできるか挑戦したい。今回は時間と自信がなかったので断念して一旦同じ環境へ移行した。

  • プリザンターとの連携用にNextCloudのWebhookを使えるようにしてから再移行したいが・・難しいかな

いいなと思ったら応援しよう!