基於 Debian 10 開發的 OMV5 beta 已經出來啦,更新速度真的很快,這邊記錄一下跟以往安裝過程不同的流程,OMV5 全部採用 Saltstack 的架構了,以前修改的部分需要做一些修正囉!
安裝 OpenMediaVault 5
初始化 LXC
先創一台 Debian 10 的 LXC,規格隨意,創好 LXC 後,請勿開機,不然後續會有問題喔!
創好後修改 LXC 的設定檔,我這台的 ID 是 106,在 /etc/pve/lxc/<strong>LXCID</strong>.conf
加入下列內容:
開機後先修改 /etc/apt/sources.list
的內容,指向國網中心,在台灣連線速度最快:
更新 LXC 並且重新啟動 LXC: apt update && apt dist-upgrade -y && reboot<br />
(如果有出現 Perl: warning: Setting locale failed. 可以參考這篇文章 )
新增OMV套件來源
# echo "deb https://packages.openmediavault.org/public usul main" >> /etc/apt/sources.list.d/omv.list
更新套件庫
# apt update # apt install gnupg wget -y # export DEBIAN_FRONTEND=noninteractive # export APT_LISTCHANGES_FRONTEND=none # wget -O "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc" https://packages.openmediavault.org/public/archive.key # apt-key add "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc" # apt update
安裝 OpenMediaVault 5
# apt-get --yes --auto-remove --show-upgraded \ --allow-downgrades --allow-change-held-packages \ --no-install-recommends \ --option Dpkg::Options::="--force-confdef" \ --option DPkg::Options::="--force-confold" \ install openmediavault-keyring openmediavault # omv-confdbadm populate
這樣子就裝好啦!XD完全不用像以前那樣 chroot 啦!
安裝 OpenMediaVault 5 外掛來源
進入 LXC,安裝插件來源:
# wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all5.deb # apt install -f ./openmediavault-omvextrasorg_latest_all5.deb # apt update
可以看到套件列表了(容許我抓舊圖來用):
新增 Zvol — 利用 ZFS 模擬實體硬碟
在 ZPOOL 建立一個 1GB 大小的 zvol:
# zfs create -V 1GB data/omv-disk
查詢 Zvol 的實際位置
透過 ls -al
發現是一個 link位置後發現是一個 link,再用 ls -al
查尋他的真實位置
# ls -al /dev/zvol/data/omv-disk lrwxrwxrwx 1 root root 11 Mar 26 23:48 /dev/zvol/data/omv-disk -> ../../zd224 # root@x79:~# ls -al /dev/zd224 brw-rw---- 1 root disk 230, 224 Mar 26 23:48 /dev/zd224
建立 Zvol 分割區
透過 fdisk
幫 /dev/zd224
切一個分割區出來,因為 OMV 初始化硬碟會幫你切分割區,在這裡先切好把可能會出現的錯誤給避免掉:
Passthrough Zvol 到 LXC
# ls -al /dev/zd224* brw-rw---- 1 root disk 230, 224 Mar 26 23:53 /dev/zd224 brw-rw---- 1 root disk 230, 225 Mar 26 23:53 /dev/zd224p1
LXC 關機後,編輯 LXC 設定檔,加入下面內容:
lxc.cgroup.devices.allow: b 230:224 rwm lxc.cgroup.devices.allow: b 230:225 rwm lxc.autodev: 1 lxc.hook.autodev: /var/lib/lxc/LXCID/mount-hook.sh
新增 Hook Script ,LXC 開機自動掛載 Zvol
使用編輯器建立 /var/lib/lxc/<strong>LXCID</strong>/mount-hook.sh
,內容如下:
#!/bin/sh mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda b 230 224 mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sda1 b 230 225
存檔後給予執行權限
chmod +x /var/lib/lxc/LXCID/mount-hook.sh
執行 LXC
可以把 LXC 開機囉!
建立檔案系統
登入 OpenMediaVault 後,將掛載的 Zvol 格式化,步驟如圖:
記得掛載檔案系統
啟動家目錄
照著圖設定,記得「套用變更」
啟動 Samba
整合 NextCloud
格式化完 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 # 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 5 Samba 設定
重頭戲來囉!這是在改版成 saltstack 後,和之前 omv4 時修改的部份都不一樣了,找了很久才找到這些設定的位置..QQ
修改 homes.j2
編輯 /srv/salt/omv/deploy/samba/files/homes.j2
,
第 3 行(OMV_SAMBA_HOMES_CREATEMASK
)、
第 4 行(OMV_SAMBA_HOMES_FORCECREATEMODE
)、
第 5 行(OMV_SAMBA_HOMES_DIRECTORYMASK
)、
第 6 行(OMV_SAMBA_HOMES_FORCEDIRECTORYMODE
)
把數值 0600
改為 0775
;
在第 13 行 comment = {{ comment }}
下面新增:
path = /home/%S/files
成果如下:
修改 shares.j2
再編輯 /srv/salt/omv/deploy/samba/files/shares.j2
,
修改:
第 17 行 OMV_SAMBA_SHARE_FORCECREATEMODE
第 18 行 OMV_SAMBA_SHARE_DIRECTORYMASK
的 0664 改成 0775:
存檔後,執行這個指令,把設定檔部署到 SAMBA 中:
omv-salt deploy run samba
測試整合成果
先進入 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 即可。