# 安裝 Nextcloud 主程式

##### **1 系統基本環境**

基本的作業系統部份，在本文中我們採用 Rocky Linux 8，可以參考[Rocky Linux 8 基本安裝](https://docs.ossii.com.tw/books/rocky-linux-8 "Rocky Linux 8 基本安裝")將基本的系統安裝起來，另外在環境部份採 Apache + MariaDB + PHP，可參考[在 Rocky Linux 8 安裝 Apache + MariaDB + PHP](https://docs.ossii.com.tw/books/rocky-linux-8-apache-mariadb-php "在 Rocky Linux 8 安裝 Apache + MariaDB + PHP")文件，而不是快速佈署體驗，如果只是想試試 Nextcloud 的基本功能的話，可以參考相關的[Nextcloud 快速安裝體驗](https://docs.ossii.com.tw/books/nextcloud "Nextcloud 快速安裝體驗")文件。

##### **2 下載及解壓縮最新 Nextcloud 安裝檔**

在撰寫本文件時，Nextcloud 的最新版本為 [24.0.1](https://download.nextcloud.com/server/releases/nextcloud-24.0.1.zip)，您可以至[官方網站](https://nextcloud.com/changelog/)中確認最新版本，在說明的過程中，我們會選用 zip 這種較常見的壓縮形式，並搭配 Rocky Linux 8 本機的指令來完成解壓縮及下載，相關需要安裝的工具皆已在基本安裝的說明文件中提及，若沒有安裝的朋友，可以至前述的連結參考安裝。

首先，我們先要下載最新的 Nextcloud 安裝檔，指令如下：

```shell
$ export VER="24.0.1"
$ cd /tmp
$ wget -c https://download.nextcloud.com/server/releases/nextcloud-${VER}.zip
以續傳的方式下載，若中斷可以重新再執行一次。
```

接下來解壓縮檔案，並將解壓的結果移動到網頁伺服器主目錄中。

```shell
$ unzip nextcloud-${VER}.zip
$ sudo mv nextcloud /var/www/html
$ sudo mkdir /var/www/html/nextcloud/data -> 因為 data 目錄一開始不會建立，若有啟用 selinux 要先自行建立。若覺得麻煩，可以關掉 selinux 來嚐試。
$ rm nextcloud-${VER}.zip
$ sudo chown apache.apache /var/www/html/nextcloud -R
```

##### **3 準備資料庫資訊**

接下來要新增一組新的資料庫，點選畫面最上方的【資料庫】，並在【建立新資料庫】的名稱部份填入【nextcloud】(範例，可依你自己的需求)、【編碼與規則】的部份選擇【utf8mb4\_unicode\_ci】，最後請按下【建立】鍵完成。

[![image-1654222575191.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654222575191.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654222575191.png)

完成的畫面如下所示。

[![image-1654222677881.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654222677881.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654222677881.png)

為了權限問題，建議資料庫的 root 使用者帳號不要在開放的網站上使用，可透過 phpMyAdmin 新增一組權限較少的一般用戶帳號給網站專案使用，接下來我們利用 phpMyAdmin 資料庫管理工具來初始化 Nextcloud 的資料庫，依照前述文件的內容，請先連線到管理介面，點選「使用者帳號」-&gt;「新增使用者帳號」，畫面如下。

[![image-1654221293310.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654221293310.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654221293310.png)

輸入資料庫「使用者名稱」、「主機名稱」及二次密碼，其中建議主機名稱的部份填入「localhost」。

[![image-1654221505512.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654221505512.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654221505512.png)

最後把畫面拉到最下方，按下「執行」鍵完成用戶新增的作業，完成後，畫面上方會出現此次新增用戶的指令，如下所示，貼上給大家參考一下，也可以透過指令列來建立新的用戶。

```shell
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';GRANT USAGE ON *.* TO 'nextclouduser'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
```

接著再點選畫面中的「資料庫」連結，選擇畫面下方剛新增的 nextcloud 資料庫名稱，並按下執行。

[![image-1654829864996.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654829864996.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654829864996.png)

接下來先使用「全選」的選項，如下圖所示。

[![image-1654831873835.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654831873835.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654831873835.png)

最後按下執行，完成資料庫權限的設定，參考的指令如下：

```shell
GRANT ALL PRIVILEGES ON `nextcloud`.* TO 'nextclouduser'@'localhost' WITH GRANT OPTION;
```

##### **4 設定 SELinux**

預設 Rocky Linux 8 是啟用 SELinux 模式的，若沒有關閉的話(建議開啟)，需執行以下指令，nextcloud 主目錄的路徑，請依照實際的狀況調整：

先安裝 SELinux 管理工具：

```shell
$ sudo yum install policycoreutils-python-utils -y
上次中介資料過期檢查：2:19:43 前，時間點為西元2022年06月03日 (週五) 17時43分24秒。
依賴關係解析完畢。
========================================================================================
 軟體包                             架構         版本                軟體庫        大小
========================================================================================
安裝:
 policycoreutils-python-utils       noarch       2.9-19.el8          baseos       252 k
將安裝依賴項目:
 checkpolicy                        x86_64       2.9-1.el8           baseos       345 k
 python3-audit                      x86_64       3.0.7-2.el8.2       baseos        86 k
 python3-libsemanage                x86_64       2.9-8.el8           baseos       127 k
 python3-policycoreutils            noarch       2.9-19.el8          baseos       2.2 M
 python3-setools                    x86_64       4.3.0-3.el8         baseos       623 k

處理事項摘要
========================================================================================
安裝  6 軟體包

總下載大小：3.6 M
安裝的大小：10 M
下載軟體包：
(1/6): python3-audit-3.0.7-2.el8.2.x86_64.rpm           247 kB/s |  86 kB     00:00
(2/6): policycoreutils-python-utils-2.9-19.el8.noarch.r 514 kB/s | 252 kB     00:00
(3/6): checkpolicy-2.9-1.el8.x86_64.rpm                 635 kB/s | 345 kB     00:00
(4/6): python3-libsemanage-2.9-8.el8.x86_64.rpm         500 kB/s | 127 kB     00:00
(5/6): python3-policycoreutils-2.9-19.el8.noarch.rpm    2.1 MB/s | 2.2 MB     00:01
(6/6): python3-setools-4.3.0-3.el8.x86_64.rpm           593 kB/s | 623 kB     00:01
----------------------------------------------------------------------------------------
總計                                                    1.8 MB/s | 3.6 MB     00:02
執行處理事項檢查
處理事項檢查成功。
執行處理事項測試
處理事項測試成功。
執行處理事項
  準備        :                                                                     1/1
  正在安裝    : python3-setools-4.3.0-3.el8.x86_64                                  1/6
  正在安裝    : python3-libsemanage-2.9-8.el8.x86_64                                2/6
  正在安裝    : python3-audit-3.0.7-2.el8.2.x86_64                                  3/6
  正在安裝    : checkpolicy-2.9-1.el8.x86_64                                        4/6
  正在安裝    : python3-policycoreutils-2.9-19.el8.noarch                           5/6
  正在安裝    : policycoreutils-python-utils-2.9-19.el8.noarch                      6/6
  執行小令稿  : policycoreutils-python-utils-2.9-19.el8.noarch                      6/6
  核驗        : checkpolicy-2.9-1.el8.x86_64                                        1/6
  核驗        : policycoreutils-python-utils-2.9-19.el8.noarch                      2/6
  核驗        : python3-audit-3.0.7-2.el8.2.x86_64                                  3/6
  核驗        : python3-libsemanage-2.9-8.el8.x86_64                                4/6
  核驗        : python3-policycoreutils-2.9-19.el8.noarch                           5/6
  核驗        : python3-setools-4.3.0-3.el8.x86_64                                  6/6

已安裝:
  checkpolicy-2.9-1.el8.x86_64
  policycoreutils-python-utils-2.9-19.el8.noarch
  python3-audit-3.0.7-2.el8.2.x86_64
  python3-libsemanage-2.9-8.el8.x86_64
  python3-policycoreutils-2.9-19.el8.noarch
  python3-setools-4.3.0-3.el8.x86_64

完成！
```

接下來新增以下設定：

```shell
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
$ sudo restorecon -Rv '/var/www/html/nextcloud/'
```

如果要移除這個 Nextcloud 的安裝路徑的話，那要下以下的指令。

```shell
$ sudo semanage fcontext -d '/var/www/html/nextcloud/data(/.*)?'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/config(/.*)?'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/apps(/.*)?'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/.htaccess'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/.user.ini'
$ sudo semanage fcontext -d '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
$ sudo restorecon -Rv '/var/www/html/nextcloud/'
```

##### **5 進行安裝作業**

接下來進行 Nextcloud 主程式安裝，連結位置預設採用 [http://yourhostname/nextclou](http://yourhostname/nextclou)d，出現的安裝畫面如下所示：

[![image-1654257261225.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654257261225.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654257261225.png)

如上圖所示，請先自行設定管理者的「使用者名稱」及「密碼」，並且點擊畫面上的「設定資料庫」選擇「MySQL/MariaDB」的部份，以下欄位請填寫對應的值：填入上述流程設定的資料庫使用者名稱、資料庫使用者密碼、資料庫名稱，然後按下「安裝」鍵繼續，系統就會開始進行程式安裝的動作，完成後，不知道為什麼 Nextcloud 在 22 版本後，會導到一個不存在的位置(可能是我們設定的原因)，沒關係，當出現「無法連上這個網站」字樣後，請重新自行以：

 [http://yourhostname/nextcloud/index.php/core/apps/recommended](http://yourhostname/nextcloud)

來登入即可，畫面會如下所示：

[![image-1654258349080.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654258349080.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654258349080.png)

請按下「安裝推薦的應用程式」繼續，系統會幫你初始化一些常見的 Apps，不過一般來說，我們會建議若不確定要啟用哪些應用程式的話，可以等到後續再自行啟用即可，完成後會自動登入 admin 帳號，畫面如下所示：

[![image-1654258521450.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654258521450.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654258521450.png)

這樣就完成最簡單的安裝工作了。

##### **6 登入及調整 phpMyAdmin 帳號權限**

登入的連結，預設是 [http://yourhostname/nextclou](http://yourhostname/nextclou)d，畫面如下，帳號密碼就是剛才在設定資料庫資訊最一開始所設定的。

[![image-1654258691753.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654258691753.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654258691753.png)

還記得剛剛新增的資料庫帳號嗎？記得要把他的權限調降回來，只要一般的權限就可以了，請點選「使用者帳號」找到剛剛建立的資料庫用戶 (本例為：nextclouduser)，並點選「編輯權限」，如下圖所示。

[![image-1654830061806.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654830061806.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654830061806.png)

然後選擇「資料庫」，再選擇針對 nextcloud 資料庫選擇「編輯權限」的動作，如下圖所示：

[![image-1654832041088.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654832041088.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654832041088.png)

最後請取消「管理」這塊功能，如下圖所示：

[![image-1654832095991.png](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/scaled-1680-/image-1654832095991.png)](https://docs.ossii.com.tw/uploads/images/gallery/2022-06/image-1654832095991.png)

完成後把畫面往下拖曳，按下「執行」鍵即完成設定，同樣會出現對應的指令，未來可參考使用。

```shell
REVOKE ALL PRIVILEGES ON `nextcloud`.* FROM 'nextclouduser'@'localhost'; REVOKE GRANT OPTION ON `nextcloud`.* FROM 'nextclouduser'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `nextcloud`.* TO 'nextclouduser'@'localhost';
```

##### **7 無法安裝的可能問題**

如果你發現無法正確的安裝 Nextcloud 的話，有可能是以下 2 個因素：

- **沒有正確設定好 SELinux 的模式**

如果沒有設定 SELinux 的話，在安裝過程中 SELinux 就會限制 Nextcloud 存取目錄或是檔案而造成無法安裝的問題，此時可以關閉 SELinux，或是依照本文第 4 部份來調整即可。

- **沒有安裝所需要的 PHP 套件**

若無法安裝，也有可能沒有安裝到必要套件，Nextcloud 的安裝頁面會提供提示給您。

##### **8 其它參考文件**

如果您想在 Fedora 系統上測試 Nextcloud，也可以參考：

- 小魚電腦應用：[如何在Fedora系統上安裝nextcloud](https://fishpcinfo.com/2021/11/fedoraInstallNextcloud/?fbclid=IwAR39z-olDp0KCT40E7V17SFtXX0QRoOuCOU5DyYeGV7nwIBNoF0ump75p3o)