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=0750NextCloudをメンテナンスモードに移行
$ docker compose exec --user www-data app php occ maintenance:mode --onmariadbバックアップ
$ docker compose exec db mysqldump -u nextcloud -p"nextcloudpassword" nextcloud > /mnt/nasnextcloud/nextcloud_db.sqlNextCloudバックアップ
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.gzDockerコンテナ初回起動と停止
NextcloudのVolumeをDockerに作成するため
cd ~/nextcloud
docker-compose up -d$ docker compose downNextCloudデータリストア
# 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 -dmariadbリストア
# 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/htmlNextCloud各種設定更新
# データベーススキーマの更新など
$ 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を使えるようにしてから再移行したいが・・難しいかな
