基於 Debian 10 開發的 OMV5 beta 已經出來啦,更新速度真的很快,這邊記錄一下跟以往安裝過程不同的流程,OMV5 全部採用 Saltstack 的架構了,以前修改的部分需要做一些修正囉!
安裝 OpenMediaVault 5
初始化 LXC
先創一台 Debian 10 的 LXC,規格隨意,創好 LXC 後,請勿開機,不然後續會有問題喔!
創好後修改 LXC 的設定檔,我這台的 ID 是 106,在 /etc/pve/lxc/LXCID.conf
加入下列內容:
開機後先修改 /etc/apt/sources.list
的內容,指向國網中心,在台灣連線速度最快:
更新 LXC 並且重新啟動 LXC: apt update && apt dist-upgrade -y && reboot
(如果有出現 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 # [email protected]:~# 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/LXCID/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/LXCID.conf
- 分別加入這行以自動掛載 Dataset 到兩個 LXC 的
/home
之中:lxc.mount.entry: /data/nas home none bind,create=dir,optional 0 0
- OMV LXCID.conf:
NextCloud LXCID.conf
- 存檔後把兩個 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 即可。
我发现在OMV的命令行下用lsblk,是可以看到那个1G的磁盘的,但是用fdisk -l看不到,而且在OMV的webui上也找不到设备
你好,我Passthrough Zvol 到 LXC之后,在OMV系统中看不到sda磁盘设备,运行fdisk -l也是没有磁盘,请问是什么原因呢?
你好,我克服了不能访问OMV主页的问题,现在卡在把1G的zvol直通到LXC上,我的池名字是disk001,地址是230:0,230:1,我反复确认了我的命令,但只要lxc里用了直通命令就导致lxc不能启动,返回:lxc-console: 101: tools/lxc_console.c: main: 131 101 is not running
希望能给予任何帮助,非常感谢。
請問在 「建立檔案系統」這一步時出現 Device ‘/dev/dm-0’ does not exist. ,沒有辦法選擇裝置,問題較有可是出在哪裡
Nasuser 這個群組 為什麼不直接用www-data 群組?
www-data 是系統用的 group,只接把 normal user 加進 system group 總是不太好,使用 www-data 以外的群組還可以進行更細部的權限控管
你這個方法是否只適合一個人用?
如果有多用戶大家可以互相睇到對方的檔案啊
多人登入只會看到自己家目錄內的檔案喔
samba 那邊的參數就是這個用途
你好,我完全按照您的教程操作,但安装完成后打不开web,ping地址是通的,请问问题有可能出现在什么地方?不同的是我使用的是旁路由,路由地址和网关不一样,谢谢。
建議先從同個 LAN 測試比較好排除狀況
我从本地主机可以打开proxmox的web,也可以打开在proxmox上vm的软路由的web,ssh到openmediavault也是可以连接的,只是因为debian的策略关系不能用root登录,本地主机可以ping通open media vault,通过open media vault的网页控制台也可以ping通lan上的所有主机,请问我可能遗漏了什么?谢谢你回复。
很抱歉再次打扰您,我查了omv的活动端口,发现似乎监听的是ipv6的80,我不知道怎么在这里贴图,只能把数据粘贴在这里,希望能告诉我怎么解决这个问题,非常感谢。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 105/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 301/sshd
tcp 0 0 0.0.0.0:45889 0.0.0.0:* LISTEN –
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN –
tcp 0 0 0.0.0.0:60169 0.0.0.0:* LISTEN 303/rpc.mountd
tcp 0 0 0.0.0.0:33195 0.0.0.0:* LISTEN 303/rpc.mountd
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 105/systemd-resolve
tcp 0 0 0.0.0.0:58765 0.0.0.0:* LISTEN 303/rpc.mountd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init
tcp6 0 0 :::21 :::* LISTEN 427/proftpd: (accep
tcp6 0 0 :::22 :::* LISTEN 301/sshd
tcp6 0 0 :::2049 :::* LISTEN –
tcp6 0 0 :::37057 :::* LISTEN 303/rpc.mountd
tcp6 0 0 :::58405 :::* LISTEN 303/rpc.mountd
tcp6 0 0 :::41609 :::* LISTEN –
tcp6 0 0 :::34187 :::* LISTEN 303/rpc.mountd
tcp6 0 0 :::5355 :::* LISTEN 105/systemd-resolve
tcp6 0 0 :::111 :::* LISTEN 1/init
tcp6 0 0 :::80 :::* LISTEN 310/nginx: master p
這是正常的,請嘗試在 PVE 上面:
curl Your_OMV_IP
or
telnet Your_OMV_IP 80
如果有出現訊息代表服務是正常的,只是不知道什麼原因 80/tcp 而被擋住了
你好 我會出現以下錯誤
Failed to execute command ‘export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export LANG=C.UTF-8; omv-salt deploy run ldap 2>&1’ with exit code ‘100’: ERROR: The state ‘ldap’ does not exist
可以請教您如何排除的嗎?
是在哪個步驟發生的呢?
請問你是用Zentyal嗎
不是唷
請問ldap+omv,您是參考哪些文件,可以分享嗎
你好,閱讀官方文件即可喔!
https://www.openmediavault.org/?p=782
lxc.hook.autodev: /var/lib/lxc/203/mount-hook.sh
我一直卡在這裡,無法開機
缺檔案嗎?
我也是一直卡在這裡