X
    Categories: 未分類

NextCloudに外部のSMB/CIFSストレージをマウントできない場合の確認ポイント

外部ネットワークからオンプレミスのストレージにアクセスでき、内外のユーザーとのファイル共有などを通じてコラボレーションを可能にするツールとして、NextCloudが人気です。
このブログでも、Windows Server EssensialsのリモートWebアクセスの代替候補として紹介をしました。

最新のバージョンはNextCloud 20となり、以前紹介をした時よりも機能がかなり増えているほか、設定もたとえば自動的に最適な.htaccessファイルを生成する、リバースプロキシの背後に配置する場合でも細かい設定が不要になるなど、以前のバージョンよりもかなり扱いやすくなっています。

以前は、インストール後に設定>概要にアクセスすると、「セキュリティ&セットアップ警告」に大量のエラーや警告・アドバイスが表示されていましたが、現在はmemory cacheの表示がされる程度になりました。(PHP-APCuの構成をすれば、表示されなくなります。設定方法は、Windows Server Essentialsエクスペリエンスが無くなるのに備え、OSSの「NextCloud」でリモートWebアクセスの代替を考えるを参照してください)

また、Windodws Server でも1709以降または2019からDockerでLinux コンテナが利用できるようになったり、スペックの向上したRaspberry Pi 4の登場、NAS等でもハイパーバイザーやコンテナ実行環境が利用できるようになるなど、NextCloudを利用する環境への投資対効果も高まってきています。

改めて、手元でのNextCloud環境構築の際に、実際ハマった”External Storage”アプリでのSMB/CIFSのマウントについて、確認ポイントを紹介します。

ハマった事象

手元でハマったのは、アプリ”External Storage”を有効にして、外部ストレージとしてWindows サーバー上の共有フォルダーをマウントした際、マウントに失敗したりマウントには成功したように見えて、実際にはアクセスできないといった事象です。

旧バージョンアップからバージョンアップした際は、External Storage上の設定ではマウントできているように見えて、ファイル一覧画面からアクセスしようとするとエラーでした。
新規環境しNextCloudの最新バージョン(記事執筆時点で20.0.1)をインストールした環境では、External Storage上の設定でのマウントすらエラーになってしまいました。

確認のポイント

OSはubuntu、Webサーバーはapacheを利用しているケースで記載します。その他の場合は環境に合わせて適宜修正が必要です。

PHPでsambaが利用できるよう構成

# PECLが利用できるよう、インストール
sudo apt-get install php-pear

# PHP/phpizeが利用できるよう、開発ツールをインストール
sudo apt install php-dev

# PECLを利用してsmbclientをインストール
sudo pecl channel-update pecl.php.net
sudo pecl install smbclient

#php.iniに以下の一行を追加
extension=smbclient.so

PHP環境の確認

apacheのルートフォルダー上に、以下の内容でinfo.phpを作成し、

<?php phpinfo(); ?> 

ブラウザからhttp://xxxx.xxxx/info.phpにアクセスしてみます。
表示された環境にsmbclientが表示されていればOKです。

表示されていない場合は、php.iniファイルへのextensionの設定反映が正しくできていない可能性があります。
info.php上に”Loaded Configuration File”として表示されているphp.iniファイルに

extension=smbclient.so

を追加し、apacheを再起動します。

OC_Helper.phpの修正

記事執筆時点で現在公開されているNextCloudの最新バージョンは20.0.1ですが、OC_Helper.phpにバグが存在をしているようです。

NextCloudインストールディレクトリ/lib/private/legacy/配下にあるOC_Helper.phpを、以下リンク先のファイルに置き換えます。

Only use index of mount point when it is there
https://github.com/nextcloud/server/pull/23606/files

週末にやったことを思い出しながら書いていますが、これら2点の対応でおそらく、SMB/CIFSもマウント可能になると思います。
機会をみて、再度再現をして確認をしようと思いますが、取り急ぎ。

ださっち: