NextCloudを構築する(Docker使用)

既存のNextCloudが動作しなくなったのでインストールします。GMOグローバルサインの株主優待を使用して、wappyを契約していたのですが、システムの老朽化で新システムに移行することになりました。

新システムはwadaxとなり、NextCloudが動作しなくなりました。そこで、今回はOracle Cloudの仮想マシンでdockerを使用して、NextCloudをインストールします。新システムや、ほかのクラウドサービスでもインストールはできると思います。また、WindowsにインストールしたDockerでも可能です。Nextcloudは、オンラインストレージの作成と使用のためのクライアント・サーバ型のソフトウェアである。機能的にはDropboxに似ているが、オフプレミスのオンラインストレージサービスは提供しない。NextCloudの公式イメージを利用して作業します。

https://hub.docker.com/_/nextcloud

まずは、docker runの出来るだけ少ないオプションでコンテナを立ち上げます。コンテナ内のデータを取得するためなので、後からこのコンテナは削除します。

docker run --name test -d nextcloud

コンテナに入って、NextCloud関連のファイルの場所を確認します。

docker exec -ti test bash

次のディレクトリに存在することを確認します。

/var/www/html

確認したらコンテナから出ます。

ホストのディレクトリを、コンテナのディレクトリとマウントすると、ホストのデータが優先されるようです。以前、ホストの空のディレクトリを、コンテナのデータがあるディレクトリと共有した時、コンテナのマウントしたディレクトリが空になったことがありました。そこで、ホストにディレクトリを作成して、コンテナからNextCloud関連のファイルを、ホストにコピーしておきます。

mkdir nextcloud
cd nextcloud
docker cp test:/var/www/html /root/nextcloud

しかし、htmlというディレクトリごとコピーしてきたので、削除してから他のコマンドに変更します。スラッシュの後ろにピリオドを入力するとhtml配下のディレクトリとファイルを目的のディレクトリにコピーすることができます。

rm -rf html
docker cp test:/var/www/html/. /root/nextcloud

ホストにNextCloud関連のファイルを取り寄せたので、コンテナを停止して削除します。

docker stop test
docker rm test

Nextcloudのインストールでは、データベースに存在するもの以外のすべてのデータ (アップロードしたファイルなど) は、無名のdocker volumeに保存されます。場所は/var/lib/docker/volumes/。わかりやすくするため、指定してコマンドを入力します。

docker run -d 
--name nc 
-p 5050:80 
-v /root/nextcloud:/var/www/html 
nextcloud

dockerで使用するように指定したポート番号のトラフィックを許可することも忘れずにします。さらに、Oracle Cloudのイングレスルールにも追加しておきます。

ufw status
ufw allow 5050/tcp

データベースは別の場所にあるので作成はしません。ただし、NextCloudで使用するデータベースを事前に作成しておき、外部接続ができるように設定しておく必要があります。

http://IPアドレス:5050/

しかし、エラーが発生しました。

Can’t write into config directory!
This can usually be fixed by giving the webserver write access to the config directory.

先ほど、コンテナからホストにファイルをコピーした時に、所有権がrootになってしまったので変更します。

chown -R www-data:www-data /root/nextcloud

再びブラウザでアクセスすると正常に動作はしました。mysqlを選択して必要な項目を入力します。

NextCloudはDropBoxやGoogleDrive、CloudFlareなどと連携することもできます。

教育

Posted by admin