NextCloud のデータの場所を変更する方法
さて、Synology NAS の HDD 動作要件が厳しくなって Compatibility List にないドライブでは動作しないように仕様変更されているらしい。いま時点ではたまたま動作している HDD を使っているので問題はないが、いつも適当にいい感じのドライブを買っているだけなのでいちいち気にしなけばいけないのは面倒だ。
5 年以上 NAS を使ってきているがドライブの故障にはでくわしたことがない、それ以前に容量が涸渇してより大きな HDD に買い替えているので RAID である必要もないのかもしれない。
などと考えており、代替策の 1 つとして NextCloud を検証している。
前置きが長くなったが、NextCloud のデータの保存場所を変更する方法をメモ。
環境
OS: Dietpi 9.15.2
NextCloud: 31.0.8
方法
どうやら、NextCloud は、1 つのフォルダに共有ファイルと関連するデータ (DB等) をまとめて管理するらしい。
config.php に datadirectory という項目があるので新しいパスにしてやる。
config.php は、/var/www/nextcloud/config/config.php にあった。(ディストリやインストール方法によって異なるのでこの辺から探してほしい)
<?php
$CONFIG = array (
'passwordsalt' => 'XSqB+XXXXX',
'secret' => 'O5PwBJjAkatBYxt876LL9ZA4ibfThOxkpXXXXXX',
'trusted_domains' =>
array (
0 => 'localhost',
1 => '*',
),
// これを変える
// 'datadirectory' => '/mnt/dietpi_userdata/nextcloud_data',
'datadirectory' => '/new_path',
'dbtype' => 'mysql',
'version' => '31.0.8.1',
'hashingThreads' => 4,
'memcache.local' => '\\OC\\Memcache\\APCu',
'filelocking.enabled' => true,
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array ('host' => '/run/redis/redis-server.sock', 'port' => 0,),
'overwrite.cli.url' => 'http://localhost/nextcloud',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'oc_admin',
'dbpassword' => 'cCD^4wy2Z&EpN]/w(GnQc_pq9h7TZy',
'installed' => true,
'instanceid' => 'ocmwukkz4mzw',
);
それだけだとデータが何もないので、もともとのデータディレクトリからデータをコピーし、chown をして所有者を調整する必要がある。
# ここでは例として /new_path にデータディレクトリを設定する
$ sudo cp -r /mnt/dietpi_userdata/nextcloud_data /new_path
# nextcloud が使うユーザに所有権を設定。(ディストリビューションなどにより実際のユーザー名、グループ名は合わせてほしい)
$ sudo chown -R www-data: /new_path
これでNextCloud が新しいフォルダを使うようになる。
NextCloud だとWeb やアプリ経由でのファイル共有は、ほぼ NAS と遜色ない。開発ペースの速さやアプリの多さはむしろ勝っているかもしれない。ここに Portainer を追加してコンテナを動かすようにすればいい感じになるかも。
が、Samba と macOS のAFP で行うローカルのファイル共有プロトコルを別管理しなければいけないのはちょっと面倒だということに改めて気付かされた。