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

前兩篇都做完後,才能開始修改、整合唷!

在上一篇格式化完 Zvol 後,檔案不會存在 OMV 那個小小的 1GB 空間之中,只是用來欺騙 OMV 系統,真正的檔案是存在 PVE Host 的 ZFS Dataset 內,需要寫 Script 來掛載 PVE Host 的 ZFS Dataset。

 

新增 Dataset Mount Point

  1. 先關閉 OMV LXC、NextCloud LXC

  2. 在 PVE Host 建立一個 Dataset 讓 OMV、NextCloud可以共用資料

    # zfs create data/nas # Zpool 為 data、目的地資料集為 home

  3. 編輯 OMV、NextCloud 兩個 LXC 的設定檔:/etc/pve/lxc/<strong>LXCID</strong>.conf

  4. 分別加入這行以自動掛載 Dataset 到兩個 LXC 的 /home 之中:

    lxc.mount.entry: /data/nas home none bind,create=dir,optional 0 0

  5. 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>
  1. 存檔後把兩個 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


See also

comments powered by Disqus