Nextcloud是一個(gè)開源的、功能強(qiáng)大的云存儲(chǔ)網(wǎng)盤項(xiàng)目。它提供了一個(gè)安全和靈活的解決方案,允許用戶共享一個(gè)或多個(gè)文件和目錄,并與Nextcloud服務(wù)器同步。
部署演示
我們會(huì)使用快速入門的“Ubuntu Server 18.04 LTS”系統(tǒng)鏡像部署并運(yùn)行Nextcloud,接著我們會(huì)配置NextCloud的LDAP應(yīng)用程序以允許活動(dòng)目錄(Active Directory)的用戶登陸并使用Nextcloud,并將用戶的工作目錄設(shè)置到Amazon EFS文件系統(tǒng),同時(shí)掛載S3存儲(chǔ)桶作為共享盤。本次部署需要準(zhǔn)備的前提條件包括:
-Amazon EC2實(shí)例
-Ubuntu Server 18.04 LTS
-Nextcloud
-AWS Directory Service
-Amazon EFS文件系統(tǒng)
-S3存儲(chǔ)桶
安裝Nextcloud
在AWS EC2控制臺(tái)上點(diǎn)擊啟動(dòng)實(shí)例,然后從快速入門中選擇“Ubuntu Server 18.04 LTS”系統(tǒng)鏡像,選擇c5.large或更高配置的實(shí)例類型啟動(dòng)實(shí)例。實(shí)例啟動(dòng)后使用密鑰登陸Ubuntu系統(tǒng)。
步驟一:安裝LAMP
sudo apt update
sudo apt-get install apache2 mariadb-server libapache2-mod-php7.2 php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring php7.2-intl php-imagick php7.2-xml php7.2-ldap php7.2-zip
安裝完成后,檢查服務(wù)是否已經(jīng)啟動(dòng)和啟用了自動(dòng)啟動(dòng)。
systemctl status apache2
systemctl status mariadb
systemctl is-enabled apache2
systemctl is-enabled mariadb
注意:如果沒有啟動(dòng)或者沒有啟用自動(dòng)啟動(dòng),使用下面的命令啟動(dòng)并啟用自動(dòng)啟動(dòng)。
sudo systemctl start apache2
sudo systemctl start mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadb
步驟二:安裝MariaDB
sudo mysql_secure_installation
回答提示問題:
為root輸入當(dāng)前密碼(默認(rèn)是沒有,回車即可)
Enter current password for root(enter for none):
是否設(shè)置root密碼(建議設(shè)置一個(gè)復(fù)雜的安全密碼)
Set root password?[Y/n]y
是否刪除匿名用戶
Remove anonymous users?[Y/n]y
是否禁止遠(yuǎn)程登陸
Disallow root login remotely?[Y/n]y
是否刪除自帶的test測試數(shù)據(jù)庫
Remove test database and access to it?[Y/n]y
是否重新加載權(quán)限表
Reload privilege tables now?[Y/n]y
步驟三:配置Nextcloud數(shù)據(jù)庫
確保數(shù)據(jù)庫完成安裝之后,登陸數(shù)據(jù)庫:
sudo mysql-u root-p
運(yùn)行以下sql命令,請注意使用您的密碼替換以下命令中的“PASSWORD”。
MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> CREATE USER ncadmin@localhost IDENTIFIED BY 'PASSWORD';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO ncadmin@localhost IDENTIFIED BY 'PASSWORD';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
步驟四:配置Nextcloud
從Nextcloud官方網(wǎng)站下載最新版本的Nextcloud:
sudo wget-c https://download.nextcloud.com/server/releases/nextcloud-20.0.1.zip
解壓并復(fù)制到web服務(wù)器的根目錄下,并設(shè)置所有權(quán):
sudo unzip nextcloud-18.0.0.zip
sudo cp-r nextcloud/var/www/html/
sudo chown-R www-data:www-data/var/www/html/nextcloud
為Nextcloud創(chuàng)建一個(gè)Apache配置文件:
sudo cat <<EOF > /etc/apache2/sites-available/nextcloud.conf
Alias /nextcloud "/var/www/html/nextcloud/"
<Directory /var/www/html/nextcloud/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www//html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>
EOF
啟用新的配置和模塊:
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
重新啟動(dòng)Apache2服務(wù),使更改生效:
sudo systemctl restart apache2
步驟五:通過圖形向?qū)瓿蒒extcloud的安裝
在開始配置之前,我們還需要將TCP端口80的入站規(guī)則添加到安全組,并將該安全組與實(shí)例相關(guān)聯(lián)。如果使用HTTPS,還需要將TCP端口443的入站規(guī)則添加到安全組。
打開瀏覽器,指向以下地址:http://IP/nextcloud/
安裝向?qū)Ъ虞d后,創(chuàng)建一個(gè)Nextcloud管理員帳戶。輸入用戶名和密碼,并配置數(shù)據(jù)庫。
安裝完成后,您將看到以下窗口。單擊將出現(xiàn)在藍(lán)色窗口右側(cè)的向前箭頭繼續(xù)并按照提示進(jìn)行操作。
然后在下一個(gè)窗口中,單擊Start Using Nextcloud開始使用。
步驟六:配置S3存儲(chǔ)桶為外部存儲(chǔ)
Amazon S3提供99.999999999%的持久性,提供了一個(gè)高度擴(kuò)展、高持久性和高可用的分布式數(shù)據(jù)存儲(chǔ)服務(wù)。Nextcloud完全兼容S3的API接口,可以很容易地將S3存儲(chǔ)桶掛載為外部存儲(chǔ)。在開始配置之前,我們需要?jiǎng)?chuàng)建一個(gè)S3存儲(chǔ)桶和一個(gè)可以編程方式訪問該存儲(chǔ)桶的IAM用戶。如果使用已經(jīng)存在的S3存儲(chǔ)桶和IAM用戶,可以跳到Nextcloud配置外部存儲(chǔ)。
登陸S3控制臺(tái),創(chuàng)建一個(gè)存儲(chǔ)桶。
登陸IAM控制臺(tái),從訪問管理菜單中單擊策略,創(chuàng)建策略。
JSON內(nèi)容如下,請將nextcloud更改為您的存儲(chǔ)桶名字。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws-cn:s3:::nextcloud",
"arn:aws-cn:s3:::nextcloud/*"
]
}
]
}
從訪問管理菜單中單擊用戶,添加用戶。
附加剛剛創(chuàng)建的策略
下載密鑰文件
點(diǎn)擊右上角的Admin用戶圖標(biāo),選擇Apps
點(diǎn)擊搜索框圖標(biāo),搜索“External storage support“,在單擊External storage support的Enable按鈕啟用
啟用后,點(diǎn)擊Admin用戶圖標(biāo),選擇Settings
單擊左邊Administration菜單下的External storages
下圖是配置寧夏區(qū)域S3存儲(chǔ)桶的示例。如果是配置海外區(qū)域的S3存儲(chǔ)桶。
寧夏區(qū)域S3的主機(jī)名是s3.cn-northwest-1.amazonaws.com.cn
北京區(qū)域S3的主機(jī)名是s3.cn-north-1.amazonaws.com.cn
配置完成后,單擊左上方的文件夾圖標(biāo),選擇“All files”,可以看到我們剛剛配置的S3存儲(chǔ)桶。
步驟七:配置LDAP
在配置LDAP之前,我們需要?jiǎng)?chuàng)建一個(gè)活動(dòng)目錄。如果使用已經(jīng)存在的活動(dòng)目錄,可以跳到Nextcloud配置LDAP。
創(chuàng)建活動(dòng)目錄,如下圖:
回到Nextcloud控制臺(tái),和上面的步驟一樣,點(diǎn)擊右上角的Admin用戶圖標(biāo),選擇Apps,搜索LDAP并啟用。
啟用LDAP后,點(diǎn)擊Admin用戶圖標(biāo),選擇Settings,單擊左邊Administration菜單下的“LDAP/AD integration”。
具體配置詳見Nextcloud的LDAP配置文檔。我們根據(jù)活動(dòng)目錄的信息填寫配置,單擊“Test Base DN”測試配置是否正確。
注意:Server地址為活動(dòng)目錄的DNS地址,端口為389。
選擇允許登陸Nextcloud的用戶組。在AWS托管的活動(dòng)目錄里,新創(chuàng)建的用戶默認(rèn)會(huì)分配到組“Domain Users”??蓡螕粝路降摹癡erify settings and count users”查找該用戶組的成員數(shù)。
配置登陸方式。如果希望使用AD用戶的郵箱地址登陸,則可以勾選“LDAP/AD Email Address”如下圖??稍谙路降摹癟est Loginname”輸入AD用戶名驗(yàn)證。
最后,默認(rèn)情況下,在Nextcloud上不會(huì)有LDAP組。我們選擇活動(dòng)目錄的默認(rèn)用戶組“Domain Users”在Nextcloud可用。
用戶工作目錄的命名規(guī)則默認(rèn)是根據(jù)LDAP的用戶屬性創(chuàng)建,如果是遷移或者升級(jí)后設(shè)置失效,可以運(yùn)行以下命令強(qiáng)制啟用命名規(guī)則:
sudo-u www-data php/var/www/html/nextcloud/occ config:app:set user_ldap enforce_home_folder_naming_rule–value=”true”
我們還可以運(yùn)行以下命令設(shè)置LDAP的同步間隔,間隔以秒為單位,例如設(shè)置為一天,即86400秒。
sudo-u www-data php/var/www/html/nextcloud/occ config:app:set user_ldap updateAttributesInterval--value=86400
注意,除了LDAP APP外,Nextcloud還有非常豐富的APP,例如draw.io流程圖繪制應(yīng)用、WebMail插件RainLoop、開源辦公onlyoffice應(yīng)用等等。
步驟八:配置域名
Nextcloud安裝后,默認(rèn)信任的域名只有IP地址,如果希望通過域名連接Nextcloud,需要添加信任域名,運(yùn)行如下命令:
sudo-u www-data php/var/www/html/nextcloud/occ config:system:set trusted_domains 1--value=nextcloud.example.com
或者修改配置文件/var/www/html/nextcloud/config/config.php中的array變量
步驟九:配置EFS
從上面步驟的截圖我們看到'datadirectory'=>'/var/www/html/nextcloud/data',這是Nextcloud的默認(rèn)配置,用戶的工作目錄均放在路徑/var/www/html/nextcloud/data,為了更好的持久性和可擴(kuò)展性,建議將所有用戶的工作目錄放在可擴(kuò)展的、彈性原生云NFS文件系統(tǒng)Amazon Elastic File System。這樣一來,我們可以實(shí)現(xiàn)多臺(tái)主備服務(wù)器同時(shí)掛載EFS,提高可用性。
創(chuàng)建EFS文件系統(tǒng)。
通過SSH登陸Nextcloud服務(wù)器,掛載EFS,然后運(yùn)行以下命令修改datadirectory的路徑:
進(jìn)入維護(hù)模式:
sudo-u www-data php/var/www/html/nextcloud/occ maintenance:mode--on
拷貝現(xiàn)有文件到EFS,假設(shè)EFS掛載在/efs:
cp-a/var/www/html/nextcloud/data/./efs
chown-R www-data:www-data/efs
修改datadirectory參數(shù):
sudo-u www-data php/var/www/html/nextcloud/occ config:system:set datadirectory--value="/efs"--update-only
退出維護(hù)模式:
sudo-u www-data php/var/www/html/nextcloud/occ maintenance:mode–off
注意,您也可以直接進(jìn)入維護(hù)模式之后,將EFS掛載到/var/www/html/nextcloud/data,這樣就不需要更改目錄路徑。
步驟十:登陸Nextcloud客戶端
Nextcloud支持Windows、Mac、Android、iOS、Linux等各種平臺(tái)的客戶端。下載安裝后,打開客戶端,選擇login。
輸入nextcloud的IP地址或者域名,http://Server_IP/nextcloud/
注意,演示使用的是HTTP。
單擊Next,將跳轉(zhuǎn)到瀏覽器,單擊Log in,登陸并授權(quán)。
設(shè)置同步。
打開軟件,選擇Settings并設(shè)置同步S3存儲(chǔ)桶。
打開Nextcloud云盤,即可看到用戶自己的工作目錄(存放在EFS,僅自己可見),還有作為共享盤的S3存儲(chǔ)桶(所有成員可見)。
總結(jié)
在本次演示中,考慮到僅在VPC內(nèi)使用,所以沒有配置SSL,若是在生產(chǎn)環(huán)境中使用,建議配置SSL證書,使用HTTPS連接。Nextcloud是一款開源免費(fèi)的云存儲(chǔ)網(wǎng)盤項(xiàng)目。除了上述的安裝方式,還支持Docker快速安裝,配合AWS S3和EFS服務(wù),我們可以快速地構(gòu)建企業(yè)級(jí)的云存儲(chǔ)網(wǎng)盤,從而實(shí)現(xiàn)跨平臺(tái)跨設(shè)備的文件同步、共享、版本控制和團(tuán)隊(duì)協(xié)作等功能。