Nextcloud是一個開源的、功能強大的云存儲網(wǎng)盤項目。它提供了一個安全和靈活的解決方案,允許用戶共享一個或多個文件和目錄,并與Nextcloud服務(wù)器同步。
部署演示
我們會使用快速入門的“Ubuntu Server 18.04 LTS”系統(tǒng)鏡像部署并運行Nextcloud,接著我們會配置NextCloud的LDAP應(yīng)用程序以允許活動目錄(Active Directory)的用戶登陸并使用Nextcloud,并將用戶的工作目錄設(shè)置到Amazon EFS文件系統(tǒng),同時掛載S3存儲桶作為共享盤。本次部署需要準備的前提條件包括:
-Amazon EC2實例
-Ubuntu Server 18.04 LTS
-Nextcloud
-AWS Directory Service
-Amazon EFS文件系統(tǒng)
-S3存儲桶
安裝Nextcloud
在AWS EC2控制臺上點擊啟動實例,然后從快速入門中選擇“Ubuntu Server 18.04 LTS”系統(tǒng)鏡像,選擇c5.large或更高配置的實例類型啟動實例。實例啟動后使用密鑰登陸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)啟動和啟用了自動啟動。
systemctl status apache2
systemctl status mariadb
systemctl is-enabled apache2
systemctl is-enabled mariadb
注意:如果沒有啟動或者沒有啟用自動啟動,使用下面的命令啟動并啟用自動啟動。
sudo systemctl start apache2
sudo systemctl start mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadb
步驟二:安裝MariaDB
sudo mysql_secure_installation
回答提示問題:
為root輸入當前密碼(默認是沒有,回車即可)
Enter current password for root(enter for none):
是否設(shè)置root密碼(建議設(shè)置一個復雜的安全密碼)
Set root password?[Y/n]y
是否刪除匿名用戶
Remove anonymous users?[Y/n]y
是否禁止遠程登陸
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
運行以下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
解壓并復制到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)建一個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
重新啟動Apache2服務(wù),使更改生效:
sudo systemctl restart apache2
步驟五:通過圖形向?qū)瓿蒒extcloud的安裝
在開始配置之前,我們還需要將TCP端口80的入站規(guī)則添加到安全組,并將該安全組與實例相關(guān)聯(lián)。如果使用HTTPS,還需要將TCP端口443的入站規(guī)則添加到安全組。
打開瀏覽器,指向以下地址:http://IP/nextcloud/
安裝向?qū)Ъ虞d后,創(chuàng)建一個Nextcloud管理員帳戶。輸入用戶名和密碼,并配置數(shù)據(jù)庫。
安裝完成后,您將看到以下窗口。單擊將出現(xiàn)在藍色窗口右側(cè)的向前箭頭繼續(xù)并按照提示進行操作。
然后在下一個窗口中,單擊Start Using Nextcloud開始使用。
步驟六:配置S3存儲桶為外部存儲
Amazon S3提供99.999999999%的持久性,提供了一個高度擴展、高持久性和高可用的分布式數(shù)據(jù)存儲服務(wù)。Nextcloud完全兼容S3的API接口,可以很容易地將S3存儲桶掛載為外部存儲。在開始配置之前,我們需要創(chuàng)建一個S3存儲桶和一個可以編程方式訪問該存儲桶的IAM用戶。如果使用已經(jīng)存在的S3存儲桶和IAM用戶,可以跳到Nextcloud配置外部存儲。
登陸S3控制臺,創(chuàng)建一個存儲桶。
登陸IAM控制臺,從訪問管理菜單中單擊策略,創(chuàng)建策略。
JSON內(nèi)容如下,請將nextcloud更改為您的存儲桶名字。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws-cn:s3:::nextcloud",
"arn:aws-cn:s3:::nextcloud/*"
]
}
]
}
從訪問管理菜單中單擊用戶,添加用戶。
附加剛剛創(chuàng)建的策略
下載密鑰文件
點擊右上角的Admin用戶圖標,選擇Apps
點擊搜索框圖標,搜索“External storage support“,在單擊External storage support的Enable按鈕啟用
啟用后,點擊Admin用戶圖標,選擇Settings
單擊左邊Administration菜單下的External storages
下圖是配置寧夏區(qū)域S3存儲桶的示例。如果是配置海外區(qū)域的S3存儲桶。
寧夏區(qū)域S3的主機名是s3.cn-northwest-1.amazonaws.com.cn
北京區(qū)域S3的主機名是s3.cn-north-1.amazonaws.com.cn
配置完成后,單擊左上方的文件夾圖標,選擇“All files”,可以看到我們剛剛配置的S3存儲桶。
步驟七:配置LDAP
在配置LDAP之前,我們需要創(chuàng)建一個活動目錄。如果使用已經(jīng)存在的活動目錄,可以跳到Nextcloud配置LDAP。
創(chuàng)建活動目錄,如下圖:
回到Nextcloud控制臺,和上面的步驟一樣,點擊右上角的Admin用戶圖標,選擇Apps,搜索LDAP并啟用。
啟用LDAP后,點擊Admin用戶圖標,選擇Settings,單擊左邊Administration菜單下的“LDAP/AD integration”。
具體配置詳見Nextcloud的LDAP配置文檔。我們根據(jù)活動目錄的信息填寫配置,單擊“Test Base DN”測試配置是否正確。
注意:Server地址為活動目錄的DNS地址,端口為389。
選擇允許登陸Nextcloud的用戶組。在AWS托管的活動目錄里,新創(chuàng)建的用戶默認會分配到組“Domain Users”??蓡螕粝路降摹癡erify settings and count users”查找該用戶組的成員數(shù)。
配置登陸方式。如果希望使用AD用戶的郵箱地址登陸,則可以勾選“LDAP/AD Email Address”如下圖??稍谙路降摹癟est Loginname”輸入AD用戶名驗證。
最后,默認情況下,在Nextcloud上不會有LDAP組。我們選擇活動目錄的默認用戶組“Domain Users”在Nextcloud可用。
用戶工作目錄的命名規(guī)則默認是根據(jù)LDAP的用戶屬性創(chuàng)建,如果是遷移或者升級后設(shè)置失效,可以運行以下命令強制啟用命名規(guī)則:
sudo-u www-data php/var/www/html/nextcloud/occ config:app:set user_ldap enforce_home_folder_naming_rule–value=”true”
我們還可以運行以下命令設(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安裝后,默認信任的域名只有IP地址,如果希望通過域名連接Nextcloud,需要添加信任域名,運行如下命令:
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的默認配置,用戶的工作目錄均放在路徑/var/www/html/nextcloud/data,為了更好的持久性和可擴展性,建議將所有用戶的工作目錄放在可擴展的、彈性原生云NFS文件系統(tǒng)Amazon Elastic File System。這樣一來,我們可以實現(xiàn)多臺主備服務(wù)器同時掛載EFS,提高可用性。
創(chuàng)建EFS文件系統(tǒng)。
通過SSH登陸Nextcloud服務(wù)器,掛載EFS,然后運行以下命令修改datadirectory的路徑:
進入維護模式:
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
退出維護模式:
sudo-u www-data php/var/www/html/nextcloud/occ maintenance:mode–off
注意,您也可以直接進入維護模式之后,將EFS掛載到/var/www/html/nextcloud/data,這樣就不需要更改目錄路徑。
步驟十:登陸Nextcloud客戶端
Nextcloud支持Windows、Mac、Android、iOS、Linux等各種平臺的客戶端。下載安裝后,打開客戶端,選擇login。
輸入nextcloud的IP地址或者域名,http://Server_IP/nextcloud/
注意,演示使用的是HTTP。
單擊Next,將跳轉(zhuǎn)到瀏覽器,單擊Log in,登陸并授權(quán)。
設(shè)置同步。
打開軟件,選擇Settings并設(shè)置同步S3存儲桶。
打開Nextcloud云盤,即可看到用戶自己的工作目錄(存放在EFS,僅自己可見),還有作為共享盤的S3存儲桶(所有成員可見)。
總結(jié)
在本次演示中,考慮到僅在VPC內(nèi)使用,所以沒有配置SSL,若是在生產(chǎn)環(huán)境中使用,建議配置SSL證書,使用HTTPS連接。Nextcloud是一款開源免費的云存儲網(wǎng)盤項目。除了上述的安裝方式,還支持Docker快速安裝,配合AWS S3和EFS服務(wù),我們可以快速地構(gòu)建企業(yè)級的云存儲網(wǎng)盤,從而實現(xiàn)跨平臺跨設(shè)備的文件同步、共享、版本控制和團隊協(xié)作等功能。