iT邦幫忙

0

[筆記] Nextcloud on debian 11

  • 分享至 

  • xImage
  •  

Debian 11 (Bullseye) 部署 Nextcloud 安裝與整合指南

本指南記錄在 Debian 11 (Bullseye) 環境下安裝 Nextcloud,並設定 Apache、PHP 8.2、MariaDB、SMB 外部儲存模組及 Microsoft Active Directory (LDAP) 整合的完整流程。


目錄

  1. 系統軟體套件庫更新
  2. 安裝與設定 PHP 8.2
  3. 安裝與設定 MariaDB 資料庫
  4. 下載並佈署 Nextcloud
  5. 設定 Apache 與 PHP 參數
  6. 編譯安裝 PHP SMB 與 inotify 擴充
  7. 設定 Nextcloud 受信任網域 (Trusted Domains)
  8. 設定外部儲存 (SMB/CIFS)
  9. 整合 Microsoft AD (LDAP) 驗證

1. 系統軟體套件庫更新

編輯 /etc/apt/sources.list,註解掉 cdrom: 相關來源,並確保包含以下官方軟體庫:

sudo nano /etc/apt/sources.list

新增或確認以下內容:

deb http://deb.debian.org/debian bullseye main contrib
deb-src http://deb.debian.org/debian bullseye main contrib

deb http://deb.debian.org/debian-security/ bullseye-security main contrib
deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib

deb http://deb.debian.org/debian bullseye-updates main contrib
deb-src http://deb.debian.org/debian bullseye-updates main contrib

更新套件清單並安裝基礎依賴套件:

sudo apt update
sudo apt install software-properties-common dirmngr -y

2. 安裝與設定 PHP 8.2

移除舊版 PHP(若系統已存在):

sudo apt -y remove php php-{cli,xml,zip,curl,gd,cgi,mysql,mbstring}

加入 Ondřej Surý 維護的 PHP PPA 儲存庫:

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

安裝 Apache、PHP 8.2 及其必要模組套件:

sudo apt -y install \
  mariadb-server mariadb-client lsb-release apt-transport-https ca-certificates \
  software-properties-common vim curl unzip libsmbclient-dev libmagickwand-dev \
  smbclient php-pear apache2 libapache2-mod-php8.2 php8.2 \
  php8.2-{bcmath,xml,fpm,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi,dev}

3. 安裝與設定 MariaDB 資料庫

3.1 執行資料庫安全性初始化

sudo mysql_secure_installation

依提示進行互動式設定:

  • Enter current password for root (enter for none): 第一次設定,直接按 Enter。
  • Switch to unix_socket authentication [Y/n]: 輸入 n。
  • Change root password? [Y/n]: 按 Y 並設定 root 新密碼。
  • New password: 輸入自訂 root 密碼。
  • Re-enter new password: 再次確認密碼。
  • Remove anonymous users? [Y/n]: 按 Y 移除匿名使用者。
  • Disallow root login remotely? [Y/n]: 按 Y 關閉 root 遠端登入。
  • Remove test database and access to it? [Y/n]: 按 Y 移除 test 資料庫。
  • Reload privilege tables now? [Y/n]: 按 Y 重新載入權限表。

3.2 建立 Nextcloud 資料庫與使用者

登入 MariaDB 控制台:

sudo mysql -u root -p

執行以下 SQL 語法建立專屬資料庫與使用者:

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'StrongDBP@SSwo$d';
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
QUIT;

4. 下載並佈署 Nextcloud

sudo apt -y install wget curl unzip

# 下載 Nextcloud(若需配合 Activities for shared file downloads 擴充,建議評估版本相容性)
wget https://download.nextcloud.com/server/releases/latest.zip

mv latest.zip nextcloud.zip
unzip nextcloud.zip
sudo mv nextcloud /var/www/html/

# 設定網站檔案目錄權限
sudo chown -R www-data:www-data /var/www/html/nextcloud
sudo chmod -R 755 /var/www/html/nextcloud

5. 設定 Apache 與 PHP 參數

5.1 修改 PHP 組態

編輯 /etc/php/8.2/apache2/php.ini:

sudo vi /etc/php/8.2/apache2/php.ini

修改以下參數:

output_buffering = Off

5.2 修改 Apache 站點設定

修改 HTTP 虛擬主機預設目錄:

sudo vi /etc/apache2/sites-available/000-default.conf
  • 將 DocumentRoot 改為:
    DocumentRoot /var/www/html/nextcloud
    

修改 HTTPS 虛擬主機預設目錄:

sudo vi /etc/apache2/sites-available/default-ssl.conf
  • 將 DocumentRoot 改為:
    DocumentRoot /var/www/html/nextcloud
    

5.3 啟用 HSTS 安全防護標頭

編輯 /etc/apache2/conf-available/security.conf:

sudo vi /etc/apache2/conf-available/security.conf

在檔案末尾或合適區塊加入:

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

5.4 啟用模組與站點並重啟服務

sudo a2enmod ssl
sudo a2enmod headers
sudo a2ensite default-ssl
sudo a2enconf ssl-params
sudo systemctl restart apache2

6. 編譯安裝 PHP SMB 與 inotify 擴充

sudo apt update
sudo apt -y install libsmbclient-dev libmagickwand-dev smbclient php8.2-dev php-pear

# 透過 PECL 安裝模組
sudo pecl install smbclient
sudo pecl install inotify

# 建立模組 ini 檔
sudo sh -c 'echo "extension=smbclient.so" > /etc/php/8.2/mods-available/smbclient.ini'
sudo sh -c 'echo "extension=inotify.so" > /etc/php/8.2/mods-available/inotify.ini'

# 建立符號連結至 Apache 的 PHP conf.d
sudo ln -s /etc/php/8.2/mods-available/smbclient.ini /etc/php/8.2/apache2/conf.d/20-smbclient.ini
sudo ln -s /etc/php/8.2/mods-available/inotify.ini /etc/php/8.2/apache2/conf.d/20-inotify.ini

# 重啟 Apache
sudo systemctl restart apache2

7. 設定 Nextcloud 受信任網域 (Trusted Domains)

編輯 /var/www/html/nextcloud/config/config.php:

sudo vi /var/www/html/nextcloud/config/config.php

調整 trusted_domains 陣列設定:

'trusted_domains' => 
array (
  0 => 'localhost',
  1 => 'your-server-fqdn.domain.com', // 請替換為伺服器實際 FQDN 或 IP
),

儲存後重啟 Apache:

sudo systemctl restart apache2

8. 設定外部儲存 (SMB/CIFS)

  1. 登入 Nextcloud 管理介面。
  2. 進入 系統設定 > 外部儲存 (External storages)。
  3. 新增儲存區類型:SMB / CIFS。
  4. 設定欄位說明:
    • 資料夾名稱:在 Nextcloud 使用者介面顯示的資料夾名稱。
    • 主機 (Host):檔案伺服器 IP 或 FQDN。
    • 共用 (Share):該伺服器的共用資料夾名稱。
    • 遠端子資料夾:若需指定子目錄,填入相對路徑。
    • 網域 (Domain):填入 NetBIOS 網域名稱。
    • 認證方式:選擇 「登入資訊,儲存於工作階段 (Log-in credentials, save in session)」。

9. 整合 Microsoft AD (LDAP) 驗證

9.1 前置準備 (AD 伺服器端)

  • 在 Active Directory 內建立 Nextcloud 專屬群組(如 nextcloud_users),並將允許使用 Nextcloud 的使用者帳號加入該群組。

9.2 Nextcloud LDAP 設定步驟

以系統管理員身分登入 Nextcloud,至 應用程式 啟用 「LDAP user and group backend」。進入 管理設定 > LDAP/AD 整合 進行設定:

  1. [伺服器] 頁籤

    • 主機與連接埠:填入 AD DC 的 IP 位址與 LDAP 連接埠(預設 389,若啟用 LDAPS 則為 636)。
    • 憑據:輸入具備查詢權限的帳戶 DN 與密碼。
    • 搜尋基礎路徑 (Base DN):指定精確的帳戶容器/組織單位 (OU)。
      範例: OU=FOOHQ,DC=foo,DC=com,DC=tw
    • 點選 「測試 Base DN」,驗證通過後點擊 繼續。
  2. [使用者] 頁籤

    • 物件類別選擇:person。
    • 指定群組限制:選擇剛才建立的 AD 專屬群組(如 nextcloud_users)。
    • 點擊 「驗證設定並計算使用者數」,確認計算出的人數與群組內人數吻合後,點擊 繼續。
  3. [登入屬性] 頁籤

    • 勾選 「LDAP/AD 使用者名稱」(或指定特定屬性如 sAMAccountName / userPrincipalName)。
    • 點擊 繼續。
  4. [群組] 頁籤

    • 可依組織需求選擇是否同步 AD 群組至 Nextcloud,或維持預設空白。
  5. 驗證匯入

    • 進入 Nextcloud 使用者管理 介面,確認 AD 使用者帳號已成功同步匯入。

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言