Ubuntu Weekly Recipe

第703回 NASをNextcloud化する

この記事を読むのに必要な時間:およそ 3 分

今回はNAS専用機の使用をやめ,NextcloudをNASとして使用する手順を紹介します。

筆者のNAS事情

第593回で紹介したように,筆者はこれまでSynology DiskStation DS118をNASサーバーとして使用していました。購入したのは2019年3月で,ほぼ3年前です。

あまり深く考えずそのへんに転がっていたNAS向けの3TB HDDを接続して,おおむね問題なく使用していましたが,使い込むにつれ空き領域が半分程度になりました。またメインPCに接続されているHDDにある,あまり使わないデータをそこに移すと空き容量が足りなくなることもわかりました。HDDの交換が容易にいかないのはシングルドライブモデルのデメリットです。昨年末にOSのDSMを7.0にバージョンアップすると,mDNSによる名前解決もSambaによる共有フォルダーの表示もできなくなり,IPアドレスでDSMの管理画面にログインして各サービスを再起動する必要がある状態になっていたのも引っかかっていました※1⁠。

※1
ちなみにこの不具合は移行完了後,7.0.1-42218 Update2にアップデートすると解消されました。

そもそも以前よりWindowsのファイル共有プロトコルそのものを含めてSambaには疑問がありました。プロトコルによるバージョンがあって特にWindowsからアクセスできたりできなかったりすることがあり,かつ脆弱性の修正もそれなりにあって※2メンテナンスもわりと面倒です。もちろんNASなのでそのあたりはよしなにやってくれるのですが。

※2
直近のSambaのセキュリティアップデートはUbuntu Weekly Topics 2022年2月4日号でも取り上げられています。

前々からファイルサーバーもNextcloudにしたらどうだろうと考えていたので,これを機に実行することとしました。ただ,自宅には常時稼働のPCが何台かあり,かつ使用していないNAS用6TB HDD※3があったのでできることではあります。この自宅にあるPCについてはうぶんちゅ! まがじん ざっぱ〜ん♪ vol.12第2章で詳しく紹介しているのでそちらを参照してほしいのですが,NAS的に考えた場合はUbuntuがインストールされているストレージ(NVMe SSD)は250GBしかなく,とてもNASのデータドライブとしては使えないという点がポイントでした。幸いPCケースには3.5インチベイが空いていたので,6TB HDDを増設してNextcloudのデータドライブとして使用したわけです。

※3
以前は仮想マシン置き場に使用していましたが,現在は4TB SSDに移行したので使用していませんでした。かといって眠らせておくのはちょっと惜しいグレードのHDDでしたので,いい機会でした。

ここで問題になってくるのは,NextcloudサーバーはもちろんSnapパッケージ版であり,接続してマウントしておしまいというわけにはいかないところです。調べてみるとChange data directory to use another disk partitionというドキュメントを発見し,まさにやりたいことが記述されていました。

今回はPCを使用しましたが,Raspberry Piとデータ用外付けHDDのような組み合わせでも応用できるでしょう。なおデータを置くHDDはNAS用のものを選択するようにしましょう※4⁠。

※4
もちろんNAS用HDDを選択したからと言って完全に問題ないわけではなく,不具合のあるモデルを引くこともあります。でもそれはさらにグレードが上となるエンタープライズモデルでも同じで,購入してから1年くらいでバッドセクターだらけになって使えなくなることもあります(実話⁠⁠。

Nextcloudサーバーのインストールと設定

前置きが長くなりましたが,実作業に入ります。前述のとおりSnapパッケージ版Nextcloudサーバーをインストールしますが,今までにNextcloudサーバーを動作させていないことと,ストレージの接続とマウントは済ませていることを前提とします。Snapパッケージの制限でHDDは/media/以下にマウントしている必要があります。今回は/media/nasdrive/としました。

端末から次のコマンドを実行してください。

$ sudo snap install nextcloud
$ sudo snap connect nextcloud:removable-media
$ sudo mkdir /media/nasdrive/data
$ sudo chown -R root:root /media/nasdrive/
$ sudo chmod 0770 /media/nasdrive/data

1行目でNextcloudサーバーをインストールし,2行目で/media/以下にマウントされているストレージを認識するように設定を変更しています。3行目で実際にデータを置くフォルダーを作成し,4行目と5行目でパーミッションを変更しています。

Snapパッケージ版Nextcloudサーバーの設定ファイルは/var/snap/nextcloud/current/nextcloud/config/config.phpにあります。データ置き場のフォルダーは'datadirectory'で定義されているので,この変数を今回の例では"/media/nasdrive/data"に変更します。具体的には次のようになります。

'datadirectory' => '/media/nasdrive/data',

続けてsudo snap restart nextcloud.php-fpmを実行し,NextcloudのPHPサーバー部分だけを再起動します。

その後にWebブラウザーからNextcloudサーバーにアクセスして初期設定します。もしもうまく行っていない場合はこの段階でエラーが表示されるので,修正してください。ポイントとしては,フォルダーのパーミッションがrootになっている必要があるという点です。前述のコマンドをそのまま実行していれば問題ないはずではあります。

著者プロフィール

あわしろいくや

Ubuntu Japanese Teamのメンバー。VirtualBoxなどの翻訳を手がける。技術同人サークルteam zpn主宰。ほか原稿執筆を少々。