這裡小編只說Truenas scale版本, 這裡的nextcloud都是掛在docker裡的, 一般默認php是沒有安裝smbclient的, 需要事先在docker裡面安一下:
apt-get install smbclient libsmbclient-dev
接下來用docker裡自帶的php pecl來自動安裝smbclient.so插件
pecl install smbclient
如果你因爲某種原因, 沒有辦法運行pecl命令, 就從pecl官網down包來手動編譯
手動編譯php的smbclient
wget https://pecl.php.net/get/smbclient-1.1.1.tgz tar zxf smbclient-1.1.1.tgz cd smbclient-1.1.1 && phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
安裝完畢之後會出現下方提示, 大體意思是要你在php.ini裡面添加smbclient.so, 不用理會, 因爲到這一步, 命令行安裝的事已經ok了。
Build process completed successfully Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20210902/smbclient.so' install ok: channel://pecl.php.net/smbclient-1.0.6 configuration option "php_ini" is not set to php.ini location You should add "extension=smbclient.so" to php.ini
接下來就是在nextcloud管理員賬戶裡找到右上角->應用, 添加一個外部存儲的精選應用, 添加完了再迂回到管理員的設置->外部存儲菜單中, 會發現系統不再提示smbclient找不到的報錯了, 看到這個界面
這裡解釋一下, 不要慌,下方文字告訴你,圖裡這些東西是啥意思
目錄名稱: 在Nextcloud中看到的掛載名稱(任意填)
注意第三列的認证選項, 一般均爲用戶名和密碼, 平時你怎麽登錄SMB目錄的, 當然是用戶名和密碼了。
SMB服務器地址,如果smb服務耑口不是默認的139或445,可以定義爲IP:耑口的形式。你不知道SMB服務器是啥地址? 那你平時是怎麽連smb共享盤的? 不用IP的嗎? 那就寫域名也行。
SMB服務器中配置的共享文档夾名稱, 比如你共享盤目錄叫張三, 那就寫張三, 找不到的話肯定報錯。你平時怎麽連smb共享盤的? 共享盤目錄就啥名知道嗎? 知道就填進這一欄裡去。
遠程子文档夾,我也不知道填啥,沒填過
域名,我也不知道填啥,不填
smb用戶名, 你怎麽登錄smb共享盤的就怎麽填當時的用戶名
smb密碼, 同上
最右邊那個欄位, 讓你選, 把這個smb目錄橋接到哪個nextcloud用戶手裡。如果不寫,則所有人都可以看。那可就很危險嘍?
接下來填好了點右側對號,如果測試通過,則表示沒有問題。