本指南記錄在 Debian 11 (Bullseye) 環境下安裝 Nextcloud,並設定 Apache、PHP 8.2、MariaDB、SMB 外部儲存模組及 Microsoft Active Directory (LDAP) 整合的完整流程。
編輯 /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
移除舊版 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}
sudo mysql_secure_installation
依提示進行互動式設定:
Enter。n。Y 並設定 root 新密碼。Y 移除匿名使用者。Y 關閉 root 遠端登入。Y 移除 test 資料庫。Y 重新載入權限表。登入 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;
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
編輯 /etc/php/8.2/apache2/php.ini:
sudo vi /etc/php/8.2/apache2/php.ini
修改以下參數:
output_buffering = Off
修改 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
編輯 /etc/apache2/conf-available/security.conf:
sudo vi /etc/apache2/conf-available/security.conf
在檔案末尾或合適區塊加入:
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
sudo a2enmod ssl
sudo a2enmod headers
sudo a2ensite default-ssl
sudo a2enconf ssl-params
sudo systemctl restart apache2
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
編輯 /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
nextcloud_users),並將允許使用 Nextcloud 的使用者帳號加入該群組。以系統管理員身分登入 Nextcloud,至 應用程式 啟用 「LDAP user and group backend」。進入 管理設定 > LDAP/AD 整合 進行設定:
[伺服器] 頁籤
389,若啟用 LDAPS 則為 636)。OU=FOOHQ,DC=foo,DC=com,DC=tw
[使用者] 頁籤
person。nextcloud_users)。[登入屬性] 頁籤
sAMAccountName / userPrincipalName)。[群組] 頁籤
驗證匯入