Nextcloud接続用にWebDAVを設定する

だいぶ前から Raspberry Pi に Nextcloud 環境を構築して運用しています。

常時起動サーバを目的として(シングルボードコンピュータで)構築したためパフォーマンスは高くありませんが、それでも有ると無いのとでは大違いです。

毎回 NAS を起動したり USB メモリを差し替えたりといった手間が無くなる分、楽です。
特に、一度座ると立ち上がりたくない(私みたいな横着者には)便利なツールでしょう。。。

やること

Lubuntu(Ubuntu)に WebDAV クライアントを導入して、Nextcloud に接続します。

結論

先に結論ですが、Raspberry Pi 3 Model B など非力なシングルボードコンピュータを Nextcloud サーバにした場合は、WebDAV 接続を利用しないほうが良いです。

詳細は後述しますが、単純に(Raspberry Pi 3 Model B だと)マシンパワーが足りません。

Raspberry Pi 4 Model B などであれば、状況は変わるとは思いますが試せていません。
Amazon Prime Video 専用機として活躍中です。。。

ラズパイ4を買ったので、プライムビデオ再生機にした話 – あらいラボ

経緯

所有している PC で最も古い VersaPro VY12M/C-3 は CPU が 32bit ネイティブなため、OS も 32bit 版しか導入できません。

自宅の VersaPro は一貫して Lubuntu で運用していますが(VY12M/C-3 は)32bit オンリーのため、先日しかたなく Lubuntu 18.04 LTS へアップデートしています。

Lubuntuも”18.04″以降は64bitオンリーへ – あらいラボ

で、ここで問題が。

Nextcloud のクライアントツール(同期クライアント)は、Linux 版は 64bit しか用意されていません。
※下記公式サイトによると、Windows 版は 32bit でも使えそうです。

base on Install – Nextcloud

  • Windows 8.1+
  • macOS 10.7+ (64-bit only)
  • Linux

クライアントツールが使えないのでは仕方がありません。
とはいえ、毎回ブラウザを開くのも面倒なので、WebDAV で直に参照してしまおう、という魂胆です。

環境

サーバ

  • 本体
    Raspberry Pi 3 Model B
  • ストレージ
    • OS
      microSD 8GB(Class 10)
    • Nextcloud データ
      USB メモリ(512MB)

Raspberry Pi は非力なため、以下パフォーマンス改善を実施しています。

NextCloud パフォーマンス改善 – あらいラボ

クライアント(PC)

  • PC
    VersaPro VY12M/C-3
  • OS
    Lubuntu 18.04 LTS

設定の準備

クライアント側

WebDAV クライアント導入

WebDAV サーバに接続するために、パッケージ davfs2 を導入します。

base on Davfs2 - ArchWiki
このページの最終更新日時は 2018年12月23日 (日) 21:36 です。
davfs2 は WebDAV サーバーをディスクドライブとしてマウントできるようにする Linux ファイルシステムドライバーです。

コマンドラインを使う
WebDAV をマウントするときは直接 mount.davfs を使わずに mount を使用します:

# mount -t davfs http(s)://addres:/path /mount/point

davfs2 インストール

$ dpkg -l | grep davfs2

$ apt-cache search davfs2
davfs2 - mount a WebDAV resource as a regular file system

$ sudo apt install davfs2

以下のパッケージが新たにインストールされます:
  davfs2 libneon27

davfs2 設定

インストール中に設定画面が表示されます。

私は、root ユーザ以外でも WebDAV サーバをマウントしたかったため「はい」を選びました。

パッケージの設定

  ┌───────────────────────┤ davfs2 を設定しています |──────────────────────────────
  │                                                                        
  │ 特権を持たない (root 以外の) ユーザによる WebDAV リソースのマウントを許
  │ 可する場合は、ファイル /sbin/mount.davfs に SUID ビットを設定しなければ
  │ なりません。                                                           
  │                                                                        
  │ この選択肢を選ばない場合は、root だけが WebDAV リソースをマウントできま
  │ す。この動作は後から 'dpkg-reconfigure davfs2' を実行することで変更でき
  │ ます。                                                                 
  │                                                                        
  │ root 以外のユーザが WebDAV リソースをマウント可能にしますか?           
  │                                                                        
  │                    <はい>                      <いいえ>                
  │                                                                        
  └─────────────────────────────────────────────────────────────────────────────

サーバ側

Nextcloud の Web 画面から、WebDAV 接続用のパスを取得します。

接続

接続方法

  • 構文
    mount -t davfs http(s)://addres:/path /mount/point

初回のみマウントするディレクトリを作成して、マウントします。

※上記、Nextcloud の Web 画面から取得した WebDAV 接続用のパスで設定します。

$ sudo mkdir /media/nextcloud

$ sudo mount -t davfs http://192.168.0.254/nextcloud/remote.php/dav/files/admin/ /media/nextcloud
Please enter the username to authenticate with server
http://192.168.0.254/nextcloud/remote.php/dav/files/admin/ or hit enter for none.
  Username: xxx
Please enter the password to authenticate user admin with server
http://192.168.0.254/nextcloud/remote.php/dav/files/admin/ or hit enter for none.
  Password:  
/sbin/mount.davfs: warning: the server does not support locks

課題

サーバが Raspberry Pi 3 Model B では荷が重かったようです。

接続後、ファイルマネージャ(PCManFM)での操作がやけに重たいなと思って、見てみると CPU パワーが足りていないようです。

下記だと %Cpu3 が 100% に張り付いています。
Raspberry Pi 3 Model B は Quad-Core(4コア)ですが davfs2 はマルチスレッドではないようで、1コアあたりの性能が上限になります。
※1コアあたりの性能が高いマシンを使用したほうが WebDAV は有利になります。

$ top

top - 18:38:51 up 4 days, 22:55,  1 user,  load average: 1.11, 0.68, 0.32
Tasks: 114 total,   2 running, 112 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.7 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :    975.6 total,    490.8 free,    195.2 used,    289.6 buff/cache
MiB Swap:    100.0 total,    100.0 free,      0.0 used.    692.5 avail Mem