Proxmox Virtual Environment

PVE

PVE 掛載NFS目錄

於PVE WEB介面新增NFS目錄,新增成功後於PVE內修改掛載參數/etc/pve/storage.cfg

option後加入soft

nfs: pvebackup1
        export /xxx/xxx
        path /mnt/pve/pvebackup1
        server xxx.xxx.xxx.xxx
        content vztmpl,rootdir,snippets,iso,images,backup
        prune-backups keep-all=1
        options soft

預設為hard(硬連結),當NFS Server有問題時,client會持續進行連接,可能影響主機與節點(影響更久可能會觸發Watchdog)

更改後重開機或NFS Storage 取消掛載

umount /mnt/pve/pvebackup1

再去PVE WEB介面上點選左邊NFS儲存區就會自動掛載NFS目錄(可能會自動掛載)

於PVE內確認使用soft掛載

mount | grep pvebackup
xxx.xxx.xxx.xxx:/xxx/xxx on /mnt/pve/pvebackup1 type nfs4 
(rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,soft,
proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.xxx.xxx,local_lock=none,addr=xxx.xxx.xxx.xxx)

如果要移除NFS連接,於PVE WEB介面上先停用此NFS然後cli 取消掛載

umount /mnt/pve/pvebackup1
如果取消不了可以強制umount
umount -l /mnt/pve/pvebackup1
或
fusionrmount -u -z /mnt/pve/pvebackup1

PVE WEB上再刪除此NFS即可

 

PVE LXC OpenVPN客戶端安裝

運行環境

LXC設定

PVE/etc/pve/lxc/xxx.conf新增設定後啟動

lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir

安裝OpenVPN

wget https://git.io/vpn -O openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh

依序步驟使用預設安裝即可

範例:將homevpn.ovpn檔案丟到/etc/openvpn/client內

執行openvpn客戶端讀取設定檔

openvpn --daemon --cd /etc/openvpn --config client/vpn.ovpn --log-append /var/log/openvpn.log &

確認連上 OpenVPN Server 所取得的 IP

ip a | grep tun

關閉連線

pkill openvpn

PVE Postfix由Gmail寄發信件

運行環境
安裝相關套件
apt install libsasl2-modules -y
設定Postfix

編輯/etc/postfix/main.cf

# GMail Setting
relayhost = [smtp.gmail.com]:587
#  use tls
smtp_use_tls=yes
# use sasl when authenticating to foreign SMTP servers
smtp_sasl_auth_enable = yes
# path to password map file
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# list of CAs to trust when verifying server certificate
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# eliminates default security options which are imcompatible with gmail
smtp_sasl_security_options = noanonymous
smtp_always_send_ehlo = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

編輯 /etc/postfix/sasl_passwd

[smtp.gmail.com]:587 <google信箱>:<應用程式密碼>

需到 Google 帳號產生應用程式密碼

更改檔案權限

postmap /etc/postfix/sasl_passwd
cd /etc/postfix
chown postfix /etc/postfix/sasl_passwd*

/etc/init.d/postfix reload
測試寄件
echo “Test mail from postfix” | mail -s “Test Postfix” test@test.com

PVE 安裝Synology 黑群暉

安裝

建立虛擬機

image.png

於PVE內建立VM

作業系統:不使用任何媒體

系統:架構選Q35

磁碟:刪除

CPU:核心自行設置,類別選host

記憶體:自行設置

網路:自行設置(VirtIO)

完成建立虛擬機

下載RR

下載最新版RR引導,並上傳ISO映像

image.png

進入PVE shell,導入RR映像

命令為導入VM編號 映像檔位置 磁碟儲存位置

qm importdisk 500 /mnt/pve/space3/template/iso/rr.img space3

虛擬機有出現剛剛導入的映像檔,選擇SATA

image.png

新增一塊SATA硬碟

image.png

將SATA0設置開機順序第一位

image.png

RR引導安裝

虛擬機開機後進入控制台會看到提示,進入IP:7681進行設定

進入Settings menu選擇語言先切換中文

型號自行選擇,這裡使用DS920+,自行選擇版本

點選URL下載pat系統文件

最後編譯開機檔開機

image.png

NAS初始化安裝

進入IP:5000開始安裝

image.png

上傳剛剛下載的pat檔案

image.png

提示刪除硬碟資料確認後開始安裝

image.png

提示10分鐘後重啟,實際上5分鐘內應該會完成

image.png

完成後進入安裝引導

image.png

關閉自動更新

image.png

略過建立帳號

image.png

不勾選裝置分析

image.png

完成後成功進入NAS桌面

image.png

硬碟設定

image.png

因為只有一顆硬碟我選擇Basic

image.png

image.png

image.png

image.png

自行選擇,這裡選擇建議系統

image.png

自行選擇,這裡選擇不加密

image.png

套用後就建立完成

image.png

PVE LXC安裝PNETLAB

PVE內安裝PNETLAB可建立VM正常安裝,但是虛擬機在PVE裡經過多層虛擬化效能不佳,故使用CT安裝來接近本機效能

運行環境
PVE設定

確認PVE已安裝openvswitch-switch

systemctl status openvswitch-switch

若未安裝執行

apt update
apt install openvswitch-switch

 

 

建立CT

取消勾選無特權容器,範本選擇ubuntu-18.04,建立容器後選擇不開機

image.png

進入PVE SHELL修改LXC設定,編輯/etc/pve/lxc/<lxc-id>.conf,新增以下設定後啟動CT

features: nesting=1
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.cgroup2.devices.allow: c 10:232 rwm
lxc.mount.entry: /dev/kvm dev/kvm none bind,create=file

安裝PNETLAB

PVE網頁上開啟CT視窗,修改允許root SSH登入

sed -i -e "s/.*PermitRootLogin .*/PermitRootLogin yes/" /etc/ssh/sshd_config

service sshd restart

image.png

重新登入PNETLAB,編輯/etc/apt/sources.list新增repository

deb [trusted=yes] http://repo.pnetlab.com ./

開始安裝

echo "nameserver 8.8.8.8" > /etc/resolv.conf
apt-get update
apt-get purge netplan.io
apt-get install pnetlab -y

安裝到這裡時會卡住,因為PNETLAB和CT網路設定會衝突

To activate the new configuration, you need to run:
  systemctl restart apache2
Considering dependency proxy for proxy_html:
Enabling module proxy.
Considering dependency xml2enc for proxy_html:
Enabling module xml2enc.
Enabling module proxy_html.
To activate the new configuration, you need to run:
  systemctl restart apache2

將CT的網路設定靜態並移除IP後重啟CT

image.png

重新登入PNETLAB後開始初始化安裝,完成後會再次重啟

image.png

重啟後確認可進入PNETLAB網頁

image.png

若出現file_get_contents訊息

file_get_contents(http://127.0.0.1/html5/api/tokens): failed to open stream: HTTP request failed! HTTP/1.1 5XX Service Unavailable

image.png

於PNETLAB內修正

sed -i '/skip_ssl/d' /etc/mysql/mysql.conf.d/mysqld.cnf
echo "skip_ssl" >> /etc/mysql/mysql.conf.d/mysqld.cnf
service mysql restart

qemu啟動需安裝net-tools

apt install net-tools

測試虛擬機

測試建立的虛擬機可正常執行

image.png

若啟動失敗,觀察詳細報錯紀錄

tail -f /opt/unetlab/data/Logs/unl_wrapper.txt

PVE LXC 修改名稱

VM名稱可從網頁上直接修改,但LXC改名稱需要修改以下檔案

/var/lib/lxc/lxc-id/config
/etc/pve/lxc/lxc-id.conf

 

PVE 發送syslog到遠端伺服器

運行環境

設定rsyslog

由於PVE已改成systemd-journald簡化日誌架構,需啟用轉發到Syslog並安裝rsyslog傳送log到遠端

編輯/etc/systemd/journald.conf

ForwardToSyslog=yes

安裝rsyslog

apt install rsyslog

新增/etc/rsyslog.d/remotelog.conf

傳送所有log

*.* @remoteip:516

篩選log,範例為篩選sshd程式訊息包含pam_unix則傳送

if ($programname == "sshd" and $msg contains "pam_unix") then {
    action(type="omfwd" target="remoteip" port="516")
    stop
}

 

重啟系統服務

systemctl enable rsyslog
systemctl restart rsyslog

systemctl restart systemd-journald

測試

使用Synology日誌接收,確認有PVE的log

image.png

PVE 備份 LXC 失敗問題

當使用PVE備份LXC時,出現INFO: tar: /mnt/pve/synology_home_backup/dump/vzdump-lxc-103-2025_10_31-13_50_35.tmp: Cannot open: Permission denied ERROR: Backup of VM 103 failed - command 'set -o pipefail && lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536..等訊息並備份失敗

image.png

由於非特權容器不是使用root執行備份,而vzdump預設把/tmp 拿來當做暫存資料夾故沒權限寫入而失敗

解決方法在/etc/vzdump.conf 編輯tmpdir指向其他目錄

image.png

在執行備份就能成功

image.png

PVE LXC 掛載 NFS

運行環境

建立 CT

取消勾選無特權容器,NFS 需要特權容器才可掛載

image.png

建立後在選項內功能把 NFS 勾選並開機

image.png

安裝 NFS Client
apt install nfs-common

systemctl start rpcbind && systemctl enable rpcbind

掛載 NFS 目錄

檢查 NFS 服務分享的目錄設定

root@pbs:~# showmount -e 192.168.0.1
Export list for 192.168.0.1:
/volume1/file        10.0.0.250/32

建立掛載目錄

mkdir /backup

掛載 NFS 至本地創建目錄,使用 soft 參數避免掛載失敗時 IO 操作會持續重試導致伺服器卡住

mount -t nfs -o soft 192.168.0.1:/volume1/file/backup /backup
root@pbs:~#  mount |grep backup
192.168.0.1:/volume1/file/backup on /backup type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.1,mountvers=3,mountport=892,mountproto=udp,local_lock=none,addr=192.168.0.1)

 

若重啟CT不會自動掛載,可以建立rclocal

把mount寫入rclocal確保開機能自動重新掛載

PVE 安裝 homeassistant

安裝 Home Assistant (HAOS)

https://community-scripts.org/scripts/haos-vm?id=haos-vm&ref=spacen.io

haos-vm.sh

在PVE命令行使用社群腳本指令安裝即可

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/haos-vm.sh)"

基本上使用預設安裝到底就完成

進入Home Assistant

啟動後輸入IP:8123 完成剩餘安裝

直通USB裝置

若有USB(例如Zigbee)需要使用需加入到VM中

image.png

選擇你的USB裝置在重新啟動即可