うまくいかなかったポイントは?
アップロードされたファイルのサーバー側の保存先を変更したかったが、なんでかできなかった。
背景
初期状態でアップロードされるファイルたちは/var/snap/nextcloud/common/nextcloud/dataの下にユーザー別のディレクトリに保存される。しかし、私の環境ではこのディレクトリは起動ドライブ(WindowsでいうCドライブ)で、且つデータ保存用途としては小さすぎました。なので、USB接続のHDDに専用のディレクトリを作成してそこに保存させようという思惑が生じます。
設定ファイルをいじろう
各種設定は/var/snap/nextcloud/current/nextcloud/config/config.phpを編集すればOK。データ保存先を定めているのはdatadirectryの値らしい。標準で先ほど示したディレクトリが書かれてました。これを任意のディレクトリに書き換えればよい。でも、何かの間違いでミスってもまずいのでファイルをコピーして切り戻しできるように準備した。
cp config.php backup.config.php
これでよし。config.phpを編集しよう(黄色の部分がHDDのディレクトリ)。
念のため、編集する前にsnap stop nextcloudで処理を止めておく。
'datadirectory' => '/media/nextcloud/data'
ただし、HDDはfstabでマウント先を/mediaか/mntに固定しておかないとnextcloud君がアクセスできないようなのでご注意。また、もとのディレクトリにいる.ocdataファイルがdata下にないとエラーになるのでコピーして配置しておく。
あれ?元のディレクトリから変わらない…
本来ならこれで問題なく保存先が変更されるのだが、初期のディレクトリのまま変わらない。その証拠に保存可能領域が変わってない(<-管理者画面から確認できる)。
はてさてどうしたものか。
と、1週間くらい調べながら悩んだところ公式ドキュメントにこんな一文があった。
You can add arbitrary files ending with
Configuration Parameters — Nextcloud latest Administration Manual latest documentation.config.phpin theconfig/directory, for example you could place your email server configuration inemail.config.php.
/configの下にあるなんたら.config.phpってファイルは設定ファイルの1つとして読み込んでくれるってことです。つまり…、さっき作った切り戻し用ファイルは設定ファイルの1つとして読み込まれる対象だということ。そのせいで、いくらconfig.phpを書き換えてもbackup.config.phpが優先されて初期の設定が適用されていたってわけ。
くだらなさすぎるでしょ(笑)
最終的な設定手段
別の設定ファイルを読み込んでくれるなら、追加設定はその形で書いた方が安全だろう。ということでdatadir.conf.phpを作り、任意の保存先だけを書きました。
<?php
$CONFIG = array (
'datadirectory' => '/media/nextcloud/data',
);
こんな感じ。
これで設定は完了したのでsnap start nextcloudまたはsnap restart nextcloudで再開すれば設定が反映される。