NextCloud由原ownCloud共同創辦人Frank Karlitschek創建的,而繼承原ownCloud的核心技術又有不少的創新。在功能上NextCloud和ownCloud差不多,甚至還要豐富一些,在使用者使用體驗方面,NextCloud安裝與使用都非常地順手,最重要的是NextCloud完全開源免費。
NextCloud不僅是私人雲端網盤平台,也支援多用戶同步協作使用。 NextCloud支援帳號註冊,可為帳號開啟兩步驟驗證,以確保帳號安全。同時,NextCloud對於公開分享的檔案可以設定有效期,對於上傳的影片、音樂、Office文件等直接支援線上預覽和播放。
NextCloud也提供了數百種的免費應用程式和插件,這些NextCloud應用程式與插件可以將NextCloud打造成為一個線上文件共享與編輯平台、音樂與視訊娛樂平台以及文件儲存下載平台。當然,如果是自己手動安裝的NextCloud的話,那麼這些插件也得自己配置好環境才行。
這篇文章就來分享一下手動安裝NextCloud教程,更多的站長自建服務與平台,你還可以試試看:
- Lsyncd搭建同步鏡像-用Lsyncd實現本地和遠端伺服器之間即時同步
- VestaCP與WHMCS整合教學-實現自助開通虛擬主機銷售主機空間產品
- ISPConfig與WHMCS整合方法-自動啟動開通虛擬主機與管理空間用戶
PS:2017年9月20日更新,覺得手動安裝麻煩的朋友,可以使用一鍵安裝的方法,參考:Nextcloud個人雲端儲存絕佳選擇:一鍵自動安裝方法和雲端磁碟使用體驗。
一、LAMP安裝NextCloud
NextCloud官網:
- HTTPS://next cloud.com/
準備好LAMP環境。 LAMP即Apache、MysqL或Mariadb、PHP環境,NextCloud官方推薦使用Apache運行NextCloud,自帶了.htaccess規則。而Nginx的話還需要自己手動寫NextCloud的URL重寫規則。推薦以下方法一鍵安裝LAMP:
- Linux VPS建置工具LNMP 1.4安裝與使用-SSL自動配置續期和多版本PHP支持
- OneinStack一鍵安裝腳本-輕鬆部署Let’s Encrypt憑證設定Https站點
LNMP 1.4和OneinStack都可以一鍵安裝LAMP環境,這裡我以OneinStack來作為操作演示,在安裝OneinStack時選擇組件時選擇Apache即可,PHP建議使用7.0以上,資料庫的話建議Mariadb。其它的快取組件也可以安裝。
綁定好網域名稱與新增SSL憑證。 OneinStack在新增網站時直接就可以新增SSL憑證了,同時要求綁定的網域必須事先解析到伺服器的IP上,這樣才可以一鍵產生Lets免費憑證。
下載NextCloud程度套件安裝。 到官網:https://nextcloud.com/install/#instructions-server,下載最新的程式包解壓縮上傳到網站的根目錄。
為NextCloud建立新的資料庫。
PS:2018年9月1日更新,感謝baoang的提醒,安裝NC時資料庫裡直接用root的帳號就可以了,不用另設一個pan的帳號。因為NC不會使用這個帳號,而是用這個帳號來安裝而已。安裝完成之後,它會以nc_管理員ID為格式產生一個它自己的資料庫帳號,像是nc_qi這樣的。
造訪網域名稱就會自動進入到NextCloud的安裝頁面了,填寫你的管理員帳號與密碼,然後在下方設定好檔案儲存路徑,最好與程式不要在同一個目錄下。同時填入SQL資料庫訊息,完成安裝。 (點擊放大)
完成後,就可以登入NextCloud後台,這就是NextCloud的使用者管理介面。 (點擊放大)
二、LNMP安裝NextCloud
準備LNMP環境和上面一樣,只是在LNMP 1.4和OneinStack安裝時選擇Nginx環境即可,其它的組件都一樣有選擇性地安裝。如果安裝了Zend OPcache,可能在安裝時會提示錯誤:「PHP 被設定為移除內聯區塊, 這將導致多個核心應用無法存取
。
解決方法:修改php.ini中Opcache的參數進行修改,如果是Oneinstack的話需要在/usr/local/php/etc/php.d/ext-opcache.ini 中修改。找到此程式碼並改成:opcache.save_comments=1 ,因為預設為0,改完重啟php-fpm就行。
編寫URL位址重寫規則。 出現錯誤:No input file specified.,主要是Nginx還需要自己寫重寫規則,你可以將以下規則複製貼上到/usr/local/nginx/conf/vhost/你的網站.conf,由於規則太多,你也可單獨建立一個文件,然後在你的網站.conf引用即可。具體規則如下:
#(可选)添加如下header主要为了安全
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
#(可选)为了支持user_webfinger app
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
#日历和联系人,建议加上
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
#设置上传文件的最大大小
client_max_body_size 512M;
fastcgi_buffers 64 4K;
#将所有请求转发到index.php上
location / {
rewrite ^ /index.php$uri;
}
#安全设置,禁止访问部分敏感内容
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
deny all;
}
#默认有,替换原来的就行
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+).php(?:$|/) {
fastcgi_split_path_info ^(.+.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/dev/shm/php-cgi.sock; #这边我改过,参照原来的
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
include fastcgi.conf;
}
#安全设置,禁止访问部分敏感内容
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
location ~ .(?:css|js|woff|svg|gif)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=15778463";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
access_log off;
}
location ~ .(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
fileinfoMemcachedRedis等都可以透過OneinStack一鍵安裝。
NextCloud安全性與效能最佳化:這種提示一般在NextCloud的伺服器管理中可以看到,建議快取類別的直接安裝一個即可,安裝多了也沒有什麼用。
為了您服務的安全和性能, 請將所有設定配置正確. 我們將會進行一些自動化檢查以幫助您完成這項工作. 詳情請查看 “小提示” 部分及相關文檔.
PHP 模組 ‘fileinfo’ 缺失. 我們強烈建議啟用此模組以便在 MIME 類型檢測時獲得最準確的結果.
HTTP 請求頭 “Strict-Transport-Security” 沒有配置為至少 “15552000” 秒. 出於增強安全性考慮, 我們推薦按照安全提示中的說明啟用 HSTS.
記憶體快取未配置. 如果可用, 請配置memcache 以增強性能. 更多資訊請查看我們的文檔.
PHP 的組件OPcache 沒有正確配置. 為了提供更好的性能, 我們建議在php.ini文件中使用下列設定:opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128<ave4>cache. revalidate_freq=1
NextCloud新增Memcached快取。 修改程式目錄下的config目錄中的config.php文件,在設定檔中加入如下,這個是多個Memcached實例,單一自己改:
'memcache.local' => 'OCMemcacheAPCu',
'memcache.distributed' => 'OCMemcacheMemcached',
'memcached_servers' => array(
array('localhost', 11211),
array('server1.example.com', 11211),
array('server2.example.com', 11211),
),
NextCloud新增Redis快取。 在設定檔中加入如下,這個是透過TCP連接的
'memcache.local' => 'OCMemcacheRedis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
還有性能更好的UNIX連接
'memcache.local' => 'OCMemcacheRedis',
'redis' => array(
'host' => '/var/run/redis/redis.sock',
'port' => 0,
'dbindex' => 0,
'password' => 'secret',
'timeout' => 1.5,
),
同時,官方也推薦加入如下,來用於儲存檔案鎖
'memcache.locking' => 'OCMemcacheRedis',
Nginx運作NextCloud一切正常。
三、NextCloud新增應用
NextCloud提供了豐富了內建應用,而這些應用程式可以直接在NextCloud的背景下載並安裝,有點像我們的Wordpress插件一樣直接安裝。這些介紹幾個有用的NextCloud插件,相信大家一定會用到。
SMTP發信與限制最大上傳檔案。 這個直接在NextCloud的後台設定中就可以設定選項,SMTP可以讓我們呼叫第三方的寄信服務來發送NextCloud的郵件,自帶的PHP發信也可以,但是基本上會被各大郵箱判定為垃圾郵件。
資料儲存加密與外掛程式儲存。 首先到NextCloud應用程式中啟動Default encryption module、External storage support這兩個外掛程式。
啟用資料加密需要謹慎:因為資料一旦加密被啟用, 之後上傳到伺服器的所有檔案都將伺服器上加密,只有當啟用狀態的加密模組支援解密並且所有前提都滿足時(例如:設定恢復金鑰) 才能解除加密。請注意, 加密會增加檔案大小,單獨的加密不能保證系統的安全性,你需要同時設定恢復金鑰。
外掛儲存主要是可以讓NextCloud透過SMB / CIFS 登入OC 的方式掛載第三方的儲存應用,啟用這個外掛程式有些麻煩,可能提示:沒有安裝「smbclient」. 安裝指令:apt-get install smbclient和apt-get install php-smbclient。
四、總結
至於選擇Apache還是Nginx來運行NextCloud主要還是取決你對Nginx或Apache的熟悉程度,LNMP 1.4和OneinStack對Nginx都做了很好了優化,Http 2.0、SSL憑證還有快取元件和PHP函數都可以一鍵安裝與配置,省去了不少的麻煩。
NextCloud的圖片預覽、音樂影片線上播放等基本功能都是沒有問題了,在使用NextCloud應用程式中倒是遇到了不少的問題。首要的問題就是NextCloud的應用程式設定比較難,例如Office文件外掛程式、RSS線上閱讀器外掛程式等,都需要自己手動設定好伺服器環境。