NextCloud由原ownCloud共同創辦人Frank Karlitschek創建的,而繼承原ownCloud的核心技術又有不少的創新。在功能上NextCloud和ownCloud差不多,甚至還要豐富一些,在使用者使用體驗方面,NextCloud安裝與使用都非常地順手,最重要的是NextCloud完全開源免費。

NextCloud不僅是私人雲端網盤平台,也支援多用戶同步協作使用。 NextCloud支援帳號註冊,可為帳號開啟兩步驟驗證,以確保帳號安全。同時,NextCloud對於公開分享的檔案可以設定有效期,對於上傳的影片、音樂、Office文件等直接支援線上預覽和播放。

NextCloud也提供了數百種的免費應用程式和插件,這些NextCloud應用程式與插件可以將NextCloud打造成為一個線上文件共享與編輯平台、音樂與視訊娛樂平台以及文件儲存下載平台。當然,如果是自己手動安裝的NextCloud的話,那麼這些插件也得自己配置好環境才行。

手動安裝NextCloud教學-免費開源私人雲端儲存網盤可在線上預覽圖片播放音樂

這篇文章就來分享一下手動安裝NextCloud教程,更多的站長自建服務與平台,你還可以試試看:

  1. Lsyncd搭建同步鏡像-用Lsyncd實現本地和遠端伺服器之間即時同步
  2. VestaCP與WHMCS整合教學-實現自助開通虛擬主機銷售主機空間產品
  3. ISPConfig與WHMCS整合方法-自動啟動開通虛擬主機與管理空間用戶

PS:2017年9月20日更新,覺得手動安裝麻煩的朋友,可以使用一鍵安裝的方法,參考:Nextcloud個人雲端儲存絕佳選擇:一鍵自動安裝方法和雲端磁碟使用體驗。

一、LAMP安裝NextCloud

NextCloud官網:

  1. HTTPS://next cloud.com/

準備好LAMP環境。 LAMP即Apache、MysqL或Mariadb、PHP環境,NextCloud官方推薦使用Apache運行NextCloud,自帶了.htaccess規則。而Nginx的話還需要自己手動寫NextCloud的URL重寫規則。推薦以下方法一鍵安裝LAMP:

  1. Linux VPS建置工具LNMP 1.4安裝與使用-SSL自動配置續期和多版本PHP支持
  2. 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線上閱讀器外掛程式等,都需要自己手動設定好伺服器環境。

發表評論