[DIY NAS] Proxmox VE + NextCloud + OpenMediaVault + OpenLDAP 整合紀錄 (一):NextCloud

最近把 Proxmox VE NAS整合的差不多了,今天來統整一下成果。先前寫的那篇遺漏了太多部分了,所以就在這全部重整一下。一開始想寫成一篇,但是無奈太長只好拆開來寫了…。

以下的內容都是基於 ZFS 檔案系統,若還沒有開始玩 ZFS 可以準備上手了!

安裝 NextCloud

新增LXC並更新系統

先開一台 Ubuntu 18.04 的 LXC,規格不用太好,之後再調整即可,隨意開個規格即可:

 

 

開機後先修改 /etc/apt/source.list 的內容,指向國網中心,在台灣連線速度最快:

 

更新 LXC 並且重新啟動 LXC: apt update && apt dist-upgrade -y && reboot 

 

 

安裝 LAMP

# apt install apache2 php mariadb-server -y
# apt install php-mysql php-zip php-dom php-xml php-mbstring php-gd php-curl php-apcu php-imagick -y

 

設定開機啟動 Apache2、MariaDB:
(如果有出現 Perl: warning: Setting locale failed. 可以參考這篇文章

# systemctl start apache2 && systemctl enable apache2
# systemctl start mariadb && systemctl enable mariadb

 

 

安裝 Acme.sh

快速取得 Let Encrypt SSL 憑證:
(這過程需要用到 curl,請先安裝 apt install curl -y):

# curl https://get.acme.sh/ | sh

 

使用下面這個申請 SSL 的 Script 來申請 SSL 憑證,我放在 /root/script/ 資料夾之中:

 

執行腳本,我使用 CloudFlare API 進行申請

 

 

新增 NextCloud 設定檔

新增 /etc/apache2/sites-available/nextcloud.conf ,內容如下:

 

Apache 新增以下三個模組:

# a2enmod headers
# a2enmod ssl
# a2enmod rewrite

 

啟動網站設定檔

# a2ensite nextcloud

 

重新啟動 Apache

# systemctl restart apache2

先執行 mysql_secure_installation 設定資料庫的 root 密碼,其他問題全部直接 Enter 過去就可以了。因為只跑 NextCloud 所以直接用 root 帳號來安裝最快,如果考慮更高安全性的人,請自己再建使用者。

 

建立資料庫

# mysql -u root
# CREATE DATABASE nextcloud CHARACTER SET utf8;
# CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'NEXTCLOUDPASSWORD';
# GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
# flush privileges;
# exit;

 

開始安裝 NextCloud

進入網頁根目錄,下載 NextCloud 並解壓縮:
(解壓縮需要用到 unzip :apt install unzip

# wget https://download.nextcloud.com/server/releases/nextcloud-15.0.5.zip
# unzip nextcloud-15.0.5.zip
# rm nextcloud-15.0.5.zip
# rm index.html
# mv nextcloud/* /var/www/html/
# mv nextcloud/.htaccess /var/www/html/
# mv nextcloud/.user.ini /var/www/html/
# chown -R www-data: /var/www/html/

 

打開 NextCloud 的網址,全部預設值即可,之後會再作修改:

 

調校 NextCloud

在設定的頁面可以看到有這些問題,我一項一項來解決。

 

啟用 .htaccess 功能

您的資料目錄和檔案看來可以被公開存取,這表示 .htaccess 設定檔並未生效,我們強烈建議您設定網頁伺服器,拒絕公開存取資料目錄,或者將您的資料目錄移出網頁伺服器根目錄。

修改 /etc/apache2/apache2.conf 的第 107 行,改成:

存檔後重啟 Apache2:

# systemctl restart apache2

 

修改 .htaccess

您的網頁伺服器設定不正確,因此無法解析 “/.well-known/caldav” ,請至說明文件瞭解更多資訊。

您的網頁伺服器設定不正確,因此無法解析 “/.well-known/carddav” ,請至說明文件瞭解更多資訊。

 

啟用 Apache2 的 Rewrite 功能即可:

# a2enmod rewrite
# systemctl restart apache2

 

設定 Memory Cache

/var/www/html/config/config.php 加入:

'memcache.local' => '\OC\Memcache\APCu',

 

存檔後修改 /etc/php/7.2/apache2/php.ini ,在最後一行加上:

apc.enable_cli=1

# systemctl restart apache2

 

設定 Opcache 快取

/etc/php/7.2/apache2/conf.d/10-opcache.ini 檔案下方加入以下內容啟用 Opcache:

# systemctl restart apache2

 

修正資料庫 bigint

先加入 occ 指令設定 alias 方便後續操:

# echo "alias occ='sudo -u www-data php /var/www/html/occ'" >> ~/.bashrc
# source ~/.bashrc

 

輸入 occ db:convert-filecache-bigint,輸入 y 確認轉換:

設定系統 Crontab

到「基本設定」的工作背景選擇 「Cron」:

 

並使用 www-data 使用者身份執行五分鐘一次的 crontab 任務:

# crontab -u www-data -e

 

加入:

*/5 * * * * php -f /var/www/html/cron.php

 

調校完畢

如此一來基本調校安裝就大功告成啦!

 

改造 NextCloud

隱藏 index.php

預設的 NextCloud 是會讓你看見 index.php 這個路徑的,為了美觀,使用下列方法隱藏 index.php 路徑

編輯 config/config.php,加入:

'htaccess.RewriteBase' => '/',

 

執行 occ 指令重新產生 .htaccess

occ maintenance:update:htaccess

 

成果如下:

 

 

自動檢查檔案資料夾系統變化

編輯 config/config.php,加入:

'filesystem_check_changes' => 1,

這樣未來就可以透過任何軟體直接修改家目錄的檔案了,此參數的功能可以讓 NextCloud 自去檢查檔案是否被修改/增加/刪除,達到同步的效果,如果沒有這行的話,直接透過 Linux 刪除家目錄的檔案,NextCloud 是不會發現檔案遭到異動的。

 

關閉檔案資料夾權限檢查

編輯 config/config.php,加入:

'check_data_directory_permissions' => false,

之後整合 OpenMediaVault 的時候必須的重要設定,整合時需要大量的權限修改,這些修改並不符合 NextCloud 系統所期許的,系統會認為你的設定是不安全而不讓你登入 NextCloud,關掉後就可以盡情改造了。

 

再來..請看下一篇:[DIY NAS] Proxmox VE + NextCloud + OpenMediaVault + OpenLDAP 整合紀錄(二):OpenMediaVault

 

系列文章:

[DIY NAS] Proxmox VE + NextCloud + OpenMediaVault + OpenLDAP 整合紀錄 (一):NextCloud

[DIY NAS] Proxmox VE + NextCloud + OpenMediaVault + OpenLDAP 整合紀錄(二):OpenMediaVault

[DIY NAS] Proxmox VE + NextCloud + OpenMediaVault + OpenLDAP 整合紀錄(三):整合 NextCloud + OpenMediaVault


See also

comments powered by Disqus