ユーザ用ツール

サイト用ツール


linux:nextcloud

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

linux:nextcloud [2018/08/29 13:18] (現在)
Wiki Editor 作成
ライン 1: ライン 1:
 +====== Nextcloud / ownCloud関係 ======
  
 +自前でクラウドドライブを構築するソフト。インストール自体は簡単だが、sambaフォルダをマウントする際に少しハマったので、メモ。
 +
 +今回はNextcloudに乗り換えたので、メモはNextcloudベース。ownCloudでもほぼ同じはず。
 +
 +===== smbフォルダのマウント =====
 +
 +Windows共有にNextcloudからアクセスしたい場合、外部ストレージアプリを使う。
 +
 +Windows共有へのアクセスには、phpが直接アクセスする場合とsmbclientコマンドを利用する場合がある。前者の方が優先順位が高いようで、phpにlibsmbclientなどのエクステンションが入っていれば、そちらが優先利用される。速度も速いようだ。ただ、Gentoo Linuxの場合、公式のパッケージにlibsmbclientが用意されておらず、PCELでもインストールに失敗する(ソースを落としてきて手動でビルドすると問題なく利用できる)のでsmbclientコマンドを使うことにする。
 +
 +環境によっては問題なく利用できるのだが、手元の環境ではphp-fpmを利用しており、そこでうまく動かなくてハマった。結論としては、環境変数がうまく設定されておらず、smbclientコマンドが呼び出せずに失敗していた。
 +
 +以下のファイルにsmbclientコマンドのPathを取得する関数がある。
 +
 +${prefix}/​apps/​files_external/​3rdparty/​icewind/​smb/​src/​System.php
 +  public function getSmbclientPath() {
 +          if (!$this->​smbclient) {
 +                  $this->​smbclient = trim(`which smbclient`);​
 +          }
 +          return $this->​smbclient;​
 +  }
 +
 +この中のwhichコマンドでsmbclientのフルパスを取得しようとするのだが、サーバの環境変数PATHが適切に参照できないために、コマンドが存在しないというエラーになる。
 +
 +原因を追究したところ、php-fpmの設定で環境変数をクリアするというものがあった。デフォルトでは環境変数をクリアするようになっているので、以下をnoに設定する。
 +
 +  clear_env = no
 +
 +そうすると、環境変数が設定されるためPATHも通るのでwhichコマンドが成功して、smbclientコマンドが利用される。
 +
 +ついでに、試行錯誤の途中で気づいたのだが、smbclientがデフォルトで使うプロトコルのバージョンはNT1となるようで、現在では古い。セキュリティ対策でサーバ側で「min protocol = SMB2」などと設定していると、接続できない。この点については、設定で対処できないようなので、Nextcloud側のソースを修正して対応する。smbclientのデフォルトで使うプロトコルバージョンを変更できればよいのだが。。
 +
 +先に示したファイルのsmbclientコマンドを返す関数に「-m SMB3」などのオプションをハードコーディングしてしまう。
 +
 +${prefix}/​apps/​files_external/​3rdparty/​icewind/​smb/​src/​System.php
 +  public function getSmbclientPath() {
 +          if (!$this->​smbclient) {
 +                  $this->​smbclient = trim(`which smbclient`);​
 +          }
 +          return $this->​smbclient . " -m SMB3";
 +                                 ​^^^^^^^^^^^^^
 +  }
 +
 +これで、smbclientコマンドが呼ばれる際に、より上位のプロトコルで接続されるようになる。接続するサーバによって設定を変える必要があるが、とりあえずこれで対応できる。
linux/nextcloud.txt · 最終更新: 2018/08/29 13:18 by Wiki Editor