前兩篇都做完後,才能開始修改、整合唷!
在上一篇格式化完 Zvol 後,檔案不會存在 OMV 那個小小的 1GB 空間之中,只是用來欺騙 OMV 系統,真正的檔案是存在 PVE Host 的 ZFS Dataset 內,需要寫 Script 來掛載 PVE Host 的 ZFS Dataset。
新增 Dataset Mount Point
-
先關閉 OMV LXC、NextCloud LXC
-
在 PVE Host 建立一個 Dataset 讓 OMV、NextCloud可以共用資料
# zfs create data/nas # Zpool 為 data、目的地資料集為 home
-
編輯 OMV、NextCloud 兩個 LXC 的設定檔:
/etc/pve/lxc/<strong>LXCID</strong>.conf
-
分別加入這行以自動掛載 Dataset 到兩個 LXC 的
/home
之中:lxc.mount.entry: /data/nas home none bind,create=dir,optional 0 0
-
OMV LXCID.conf:
NextCloud LXCID.conf
<p id="MjwovnL">
<img loading="lazy" width="723" height="221" class="alignnone size-full wp-image-3321 " src="https://becoder.org/wp-content/uploads/2019/03/img_5c9b0740e0cf7.png" alt="" srcset="https://becoder.org/wp-content/uploads/2019/03/img_5c9b0740e0cf7.png 723w, https://becoder.org/wp-content/uploads/2019/03/img_5c9b0740e0cf7-300x92.png 300w" sizes="(max-width: 723px) 100vw, 723px" />
</p>
- 存檔後把兩個 LXC 都開機,可以看到已經順利掛載了
修改 NextCloud 儲存位置
進入 NextCloud,修改 conf/config.php,將:
'datadirectory' => '/var/www/html/data',
改為:
'datadirectory' => '/home',
再執行下面指令把原本的資料移動到新的位置:
# mv /var/www/html/data/* /home/ # mv /var/www/html/data/.htaccess /home/ # mv /var/www/html/data/.ocdata /home/ # chown -R www-data:www-data /home/ # chmod -R 775 /home/
新增群組修正 NextCloud 讀取權限
這個項目是為了 OMV 而作的,NextCloud 讀取 /home 時,必須讓 www-data 為檔案擁有者,為了讓 OMV 的一般使用者可以對 /home 讀寫,所以創一個群組 nasuser,將 www-data 加入 nasuser,並新增 Crontab 定時修正來權限,讓 NextCloud 可以順利讀寫來自 OMV 使用者的檔案,完成整合,這個部份到時候整合 OpenLDAP 後會更方便。
新增群組 nasuser_(註1)_ 並加入 www-data 使用者:(註1)
# addgroup nasuser -g 1000 # adduser www-data nasuser
撰寫 Shell Script 定時修正權限:
# touch /root/script/repair-permission.sh # chmod +x /root/script/repair-permission.sh # vim /root/script/repair-permission.sh
內容如下:
執行 crontab -e
寫入 crontab:
* * * * * /root/script/repair-permission.sh
後來發現這樣子做會瘋狂的讀寫硬碟,檔案太多實在是很吃資源,第一圈還沒繞完就又跑第二圈了,現在直接修改 NextCloud 的 apache 執行時的 group 以及 umask,在檔案透過 NextCloud 上傳的時候就會有正確的權限:
修改 NextCloud LXC 的 /etc/apache2/envvars
:
將
export APACHE_RUN_GROUP=www-data
改為
export APACHE_RUN_GROUP=nasuser
如此一來 Apache 都會用這個群組來讀寫資料。
再來是權限的部份,一樣在 /etc/apache2/envvars
,於最下方新增一行:
umask 002
umask 相關資料可以參考這篇文章:umask 指令
最後重啟 Apache 即可:
systemctl restart apache2
如果想修正原先的權限,可以參考我的另外一個小站的筆記:快速修正檔案權限、資料夾權限
修改 OpenMediaVault Samba 設定
進入 OpenMediaVault,編輯 /usr/share/openmediavault/mkconf/samba.d/30homes
修改:
第 33 行(OMV_SAMBA_HOMES_CREATEMASK
)、
第 34 行(OMV_SAMBA_HOMES_FORCECREATEMODE
)、
第 35 行(OMV_SAMBA_HOMES_DIRECTORYMASK
)、
第 36 行(OMV_SAMBA_HOMES_FORCEDIRECTORYMODE
)
將數值 0600
改為 0775
;
在
第 48 行(-o "comment = ${OMV_SAMBA_HOMES_COMMENT}" -n
)
下方新增一行,加入
-o "path = /home/%S/files" -n
再編輯 /usr/share/openmediavault/mkconf/samba.d/20shares
,
修改:
第 48 行 (OMV_SAMBA_SHARE_FORCECREATEMODE)、
第 49 行(OMV_SAMBA_SHARE_DIRECTORYMASK)
將數值 0664
改為 0775
。
存檔後執行下面指令寫入設定檔:
# omv-mkconf samba
新增共享資料夾
首先先進入 OMV 後台,新增共享資料夾..(待補)
測試整合成果
先進入 OpenMediaVault,把群組 nasuser_(註1)_ 創好:
# addgroup nasuser -gid 1000
先在 NextCloud 、OMV 建立使用者,使用同一組使用者帳號密碼:
先登入 NextCloud,讓 NextCloud 產生使用者資料夾:
再登入 SAMBA:
可以看到一樣的內容:
測試上傳 ISO 檔案:
NextCloud 上面也可以看到這個檔案了:
註1:
nasuser 這個群組到時候整合 OpenLDAP 時就不需要建立了,直接把 www-data 加入 LDAP 中的群組(adduser www-data $gidNumber),將所有的 nasuser 取代為 LDAP 中的 $gidNumber 即可。
系列文章:
[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