Docker でインストールした Nextcloud のサーバを移転する

Nextcloud の docker-compose.yml

Ubuntu 22.04 のサーバを Ubuntu 24.04 のサーバに移すことにした。 次のような docker-compose.yml の Nextcloud を移転した。

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=[PASSWORD]
      - MYSQL_PASSWORD=[PASSWORD]
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    ports:
      - 3307:3306
    logging:
      options:
        max-size: 50m
  app:
    image: nextcloud:30.0.4
    ports:
      - 127.0.0.1:8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    restart: always
    environment:
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=[PASSWORD]
      - MYSQL_DATABASE=nextcloud
      - MYSQL_HOST=db:3307
      - NEXTCLOUD_OVERWRITEPROTOCOL=https

[PASSWORD] には適切なパスワードを入力する。

移転元の Ubuntu 22.04

メンテナンスモードにして、データベースの SQL をテキストに出力、データを tar.gz にする。

docker-compose exec --user www-data app php occ maintenance:mode --on
docker-compose exec db sh -c 'exec mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" --single-transaction --quick --lock-tables=false nextcloud' > nextcloud.sql
docker run --rm -v nextcloud_nextcloud:/src -v "$PWD":/backup alpine sh -c 'cd /src && tar czf /backup/nextcloud_data.tar.gz .'

移転先の Ubuntu 24.04

Docker とデータベースにデータを入れるときに使う mariadb-client をインストールする。

apt install docker.io docker-compose-v2 mariadb-client

SQL を読み込む。

docker compose up -d db
mariadb -h 127.0.0.1 -P 3307 -u root -p"$MYSQL_ROOT_PASSWORD" < nextcloud.sql

カレントディレクトリに nextcloud_data.tar.gz を置き、データを Docker の volume に入れる。

docker run --rm -v nextcloud_nextcloud:/dst -v "$PWD":/backup alpine sh -lc 'cd /dst && tar xzf /backup/nextcloud_data.tar.gz'

Nextcloud を動かす。

docker compose up -d app

次のコマンドなどで Nextcloud が動いていることを確認する。

docker compose logs -f app
docker compose exec --user www-data app php occ status

cron

Nextcloud が cron を使うためには https://transitive.info/2019/05/05/nextcloud-installation-by-docker/ の「Nextcloud での docker の利用」を行う。

nginx

ポート 8080 で Nextcloud が動いている状態になるので、SSL の設定をおこなった nginx などでポート 443 を 8080 につなぐ。

apt install nginx

参考

Tags of current page

, ,