NextcloudのHDD変更

4 min read

こんにちは、無能です。
実際、クラウド上にホストしている場合ディスク破損してデータ保存先を変更するなんてことは環境引っ越しくらいでしかなさそうだが壊れかけHDDにNextCloudのデータを保存していた私は別HDD先に指定することにしました。
私のNextCloudの使い方としてはローカル環境で使うメディアプレイヤーか、一時的にそして簡易的に他OS間のファイル共有としてしか使っていないので重要ファイルは無いです。家のどれかしらのマシンに入っているデータ、例えば常に起動することはないEEPROM吸い出し用のマシンのBIOSファイルを格納していたり、メモ書きを作っていたり。あとは気づいたら貯まるPDFをとりあえずぶん投げておくだとか。

実際はマウントポイント先として変更すればいいだけなのでこれすらする必要なさそうですが、既にマウントしているHDDに対して別のマウントポイント先を指定してるので他シェルスクリプトにも影響しそうな気もするので気持ち的にきれいに別に作ることにします。

ぶっちゃけ、NextCloudのconfig/config.phpの設定ファイルのdatadirectoryのパスを変更しなくても元の指定先にシンボリックリンク貼るなりすればいいだけなんですがなんか気持ち悪いのでしっかり別HDD先に別でNextCloudのデータ用ディレクトリを作成して指定してあげることにします。

※この記事はデータの引っ越しではなく、あくまでディスクの変更です。

データディレクトリ作成

既にマウントしているHDDに対してNextCloudのデータ用ディレクトリを作成していきます。
そして、.ocdataは作らないと怒られるみたいなのでtouchで作成しておきます。-Rオプションつけていても.ファイルまで再帰的に見てくれないこと忘れてました。

sudo mkdir /media/3t/ncdata
sudo touch /media/3t/ncdata/.ocdata
sudo chown www-data:www-data /media/3t/ncdata
sudo chown www-data:www-data /media/3t/ncdata/.ocdata
sudo chmod 750 /media/3t/ncdata

config.phpを編集

そして、もはやすでに存在していないdatadirectoryの場合、メンテナンスモードにすら入れないので先にconfig/phpファイルを編集して設定を変更しその後に動作確認を含む状態で行うことにします。

cd /your/nextcloud/dir
sudo vim config/config.php

そして以下の設定を先程作ったディレクトリ先に指定します。

  'datadirectory' => '/media/3t/ncdata',

これでメンテナンスモードをonにしてから怒られなければ再度offにします。

cd /your/nextcloud/dir
$ sudo -u www-data php ./occ maintenance:mode --on
Maintenance mode enabled
$ sudo -u www-data php ./occ maintenance:mode --off
Maintenance mode disabled

OKです。

再度ファイルスキャンを実行する

多分、私はプラグインを導入しているからかプラグインで指定していたパスに既に存在していないディレクトリがあるとNextCloudでログインしたあとに内容見れずに怒られてしまいました。
再度メンテナンスモードに入ってからファイルスキャンを行い、ファイルインデックスの再取得を行います。

cd /your/nextcloud/dir
$ sudo -u www-data php ./occ maintenance:mode --on
Maintenance mode enabled
$ sudo -u www-data php ./occ files:scan --all
Starting scan for user 1 out of 2 (Fox)
Path not found: User folder /media/3t/ncdata/Fox/ exists in cache but not on disk
Starting scan for user 2 out of 2 (nextcloud)
Path not found: User folder /media/3t/ncdata/nextcloud/files exists in cache but not on disk
+---------+-------+-----+---------+---------+--------+--------------+
| Folders | Files | New | Updated | Removed | Errors | Elapsed time |
+---------+-------+-----+---------+---------+--------+--------------+
| 0       | 0     | 0   | 0       | 0       | 2      | 00:00:00     |
+---------+-------+-----+---------+---------+--------+--------------+
$ sudo -u www-data php ./occ maintenance:mode --off
Maintenance mode disabled

おや・・・。なんか怒られている・・・。
なのでないと怒られているディレクトリを作成します。

sudo mkdir /media/3t/ncdata/Fox/files
sudo mkdir /media/3t/ncdata/nextcloud/files
sudo chown -R www-data:www-data /media/3t/ncdata
sudo chmod -R 750 /media/3t/ncdata

これで完了です。

再度スキャン

cd /your/nextcloud/dir
sudo -u www-data php ./occ files:scan --all

これで通れば無事に完了。

ここまで確認出来たので、ファイルにのみ対してNextCloudのデータファイルの権限を削ぎ落とします。

cd /media/3t
sudo find ./ncdata  -type f -exec chmod 640 {} \;

前回Android端末で自分のWireGuard VPNで接続をしたのでこれでVPNに接続した状態でNextCloudにアクセスできるようになりました。
今まではMyDNSでテキトウに借りた無料のDNSをNginxのリバースプロキシを介して使っていたのですが、リバースプロキシ介している状態の環境でのみメディア再生したときのシークバーが機能しなくなる現象があったのですがそれも解消。

セキュリティ的にももうMyDNSで使っているドメインでのアクセス無くしてもいいかなあと思ったり。

ちなみに、自分がRAIDとか組まない理由はRAIDコントローラが破損した場合地獄をみたというものをよく見るのでその点の煩わしさを無くしたいからです。やるとすれば、ZFSだけど使いたいデータ領域5TB以上超え始めたら組みたいなあとも思ったり。

個人的にはDCの大量放出されそうなSSDを狙って出てきたタイミングで確保していきたいな、と思います。
というわけでここまで。またよろしくお願いします。