NextCloud作為一個開源免費的雲端儲存網盤項目,任何人都可以自由的獲取NextCloud 程序,在家庭或公司建立私有且免費的網路硬碟。它是完全由你用戶控制的私有、安全且功能完整的文件同步與共享解決方案,一推出就廣受好評。
之前我也分享了不少NextCloud安裝部署教學,最讓人感興趣的就是NextCloud搭配Aria2,來實現離線下載。因為NextCloud自帶了音樂與影片播放功能,且支援WebDAV等,完全可以基於NextCloud打造雲端儲存平台或雲端磁碟。
NextCloud有一個掛載外部儲存的功能,它可以讓你將第三方儲存、本機硬碟等作為儲存硬碟掛載在伺服器上,作為NextCloud的儲存服務。但是很多人在操作過程中會出現權限問題,例如無法讀取檔案或刪除檔案。
這篇文章就來分享一下在Oneinstack上手動安裝部署NextCloud並添加外部存儲,同時再分享一個NextCloud離線下載插件ocDownloader,它可以結合Aria2實現Http、FTP和BT種子離線下載,同時又可以使用NextCloud管理下載文件,完美解決了文件權限的問題。
更多關於離線下載的方法還有工具,你可以試試這些:
- Windows和Linux安裝使用Aria2-實現離線下載資源和線上管理文件播放視頻
- Nextcloud離線下載建置方法-整合Aria2和AriaNg、Aria2 WebUI實作離線下載
- 樹莓派Raspberry Pi安裝NextCloud教程-自建家庭私有雲區域網路共享
PS:2018年3月31日更新,如果想要搭建一個可以在線共享播放的影音網盤中心可以試試:Plex完美個人影音雲盤搭建教程-Plex Media Server安裝與使用方法。
一、Oneinstack上安裝NextCloud
NextCloud官網:
- 官網:https://nextcloud.com/
- 外掛:https://apps.nextcloud.com/apps/ocdownloader
- 專案:https://github.com/e-alfred/ocdownloader
OneinStack安裝還蠻簡單的,由於我們要在Oneinstack上跑NextCloud,所以在安裝的過程中請選擇LAMP模式,同時建議將相關的元件都選擇安裝上。參考先前的文章:OneinStack一鍵安裝腳本-輕鬆部署Let’s Encrypt憑證設定Https網站。
1.1 NextCloud安裝
開啟瀏覽器進入到NextCloud安裝介面,如果你出現以下錯誤提示:
PHP 被設定為移除內嵌區塊, 這將導致多個核心應用無法存取.
這可能由快取/加速器導致的, 例如 Zend OPcache 或 eAccelerator.
如下圖:
解決方法:修改php.ini
中Opcache的參數進行修改,如果是Oneinstack的話需要在/usr/local/php/etc/php.d/ext- opcache.ini
中修改。找到此程式碼並改成:opcache.save_comments=1
,因為預設為0,改完重啟php-fpm就行。
1.2 NextCloud配置
安裝了NextCloud後,進入到設定中一般地會提示幾個安全性問題:
對於「PHP 模組 ‘fileinfo’ 缺失. 我們強烈建議啟用此模組以便在 MIME 類型檢測時獲得最準確的結果.」可以用執行:./addons.sh來安裝fileinfo模組即可。
對於“HTTP 請求頭“Strict-Transport-Security” 沒有配置為至少“15552000” 秒. 出於增強安全性考慮, 我們推薦按照安全提示中的說明啟用HSTS.”,進入到/usr/local/apache/ conf/vhost,修改xxx.conf。
加入以下程式碼即可。
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
對於“內存緩存未配置. 如果可用, 請配置 memcache 以增強性能..”,進入config資料夾中修改配置文件,添加以下代碼即可。
'memcache.local' => 'OCMemcacheRedis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
按照上面的方法設定後,NextCloud基本上就沒有什麼提示了,我們可以看到Oneinstack跑NextCloud基本上沒有什麼問題。
二、NextCloud安裝ocDownloader
進入到NextCloud插件安裝頁面,搜尋ocDownloader就可以直接在線上安裝了。
安裝好了後,啟用完成後就可以從頂部工具列進入ocDownloader面板,這裡我們就可以看到新增下載和檢視下載任務了。
三、NextCloud伺服器安裝Aria2
上面安裝了NextCloud的插件ocDownloader,但還不能使用,我們需要在伺服器上安裝Aria2,程式碼如下:
wget https://copr.fedoraproject.org/coprs/rhscl/devtoolset-3/repo/epel-6/rhscl-devtoolset-3-epel-6.repo -O /etc/yum.repos.d/rhscl-devtoolset-3-epel-6.repo yum install devtoolset-3-gcc devtoolset-3-gcc-c++ devtoolset-3-binutils devtoolset-3-gcc-gfortran scl enable devtoolset-3 bash gcc --version wget https://github.com/aria2/aria2/releases/download/release-1.32.0/aria2-1.32.0.tar.gz tar xzvf aria2-1.32.0.tar.gz cd aria2-1.32.0 ./configure make make install
如果你的gcc編譯器版本號碼夠高,可以省略前三步,直接wget下載aria2然後編譯即可。編輯sudoers文件:
vi /etc/sudoers
找到下圖中的這部分程式碼:
將:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
修改為:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
退出vi並保存,這裡因為sudoers是一個只讀文件,可能在退出vi的時候會彈警告提示,我們強行退出使用如下命令:
:wq!
現在就可以使用sudo以www的使用者來運行aria2了:
sudo -u www aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all -c --dir /root/downloads -D
這個命令列啟動預設我們選擇了檔案的下載保存路徑是/root/downloads,但實際上這個路徑是不生效的,它的目的只是用來讓aria2能夠成功啟動。我們稍後可以在ocDownloader插件中來設定檔案保存路徑。
四、NextCloud使用ocDownloader插件
進入到NextCloud的ocDownloader操作介面,點選新增下載任務,就可以開始離線下載了,以下是wzfou.com搭建的示範:。
ocDownloader支援BT和磁力連結下載。
ocDownloader會在NextCloud建立一個下載目錄,所有的下載的檔案都會放在這個目錄下,從NextCloud可以查看下載的檔案。
經過wzfou.com測試,NextCloud可以正常地查看和刪除ocDownloader下載的文件,權限都沒有問題。
五、總結
Nginx跑NextCloud有一個問題就是靜態化規則的問題,Oneinstack跑NextCloud建議使用Apache,NextCloud官方的教學都是用Apache,相容性是最好的。
總是得來說,NextCloud使用ocDownloader呼叫Aria2離線下載還是挺方便的,它解決了Nextcloud離線下載建置方法中檔案讀寫權限問題,可以正常讀寫和刪除Aria2下載的檔案。