pve安裝windows 注意事項
- 官網建議使用SCSI VirtIO Controller + SCSI HDD的設定
https://pve.proxmox.com/wiki/Paravirtualized_Block_Drivers_for_Windows - 到這裡下載最新的驅動程式
- pve vm除了掛載作業系統外, 還需要掛載驅動程式(ISO檔), 安裝的時候會找不到硬碟,此時可以使用掛載驅動程式偵測到硬碟

jitsi 大名鼎鼎, 我們公司用了10年的openfire內部即時通訊(xmpp server), 用戶端就是用jitsi(我都簡稱神燈巨人).
多年前發現 jitsi 有meet套件可以套用在openfire裡面, 使用結果好爛幾乎不能用, 用ubuntu安裝,也一直很不穩定, 改版很頻繁.
隨著新冠病毒出現, 節神 丟出開源視訊這個議題,我才想起應該是時候,要再測試看看了, 試用結果還不錯,可以讓公司的人使用.
**經過多次測試, 建議使用 “虛擬機加單個對外ip網卡” (非docker,無nat) 才能真正穩定 – 2020/05/06
https://github.com/jitsi/docker-jitsi-meet # 先想好要用哪個主機名稱, 先把letsencrypt搞定 certbot-auto certonly --standalone --preferred-challenges http -d <full host name> 1. # root # 下載最新的版本, 複製預設的設定檔案 git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet cp env.example .env 1.1 安全性增加了 ./gen-passwords.sh 2.修改 .env , 視自己docker狀況調整以下參數 CONFIG=~/.jitsi-meet-cfg # Exposed HTTP port HTTP_PORT=8000 # Exposed HTTPS port HTTPS_PORT=8443 # System time zone # 這我調整taipei TZ=Asia/Taipei # Public URL for the web service # 這我是沒調整,因為我是用httpd reverse proxy #PUBLIC_URL=https://<full host name> ENABLE_LETSENCRYPT=1 # 告訴 jitsi 說我的letsencrypt是什麼 LETSENCRYPT_DOMAIN=<full host name> 3.依照.env的 CONFIG 參數, 建立相關目錄 mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb} 4.視情況修改 docker-compose.yml volumes: - ${CONFIG}/web:/config - /etc/letsencrypt:/etc/letsencrypt - ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts 5.上線兼啟動(這部份讓人產生錯覺,很快網頁可以連線,但實際上要5分鐘才正常,畢竟用了4個container) docker-compose up -d 6.修改解析度(這我沒怎麼測試,預設是720,為了頻寬著想,所以改480) # ~/.jitsi-meet-cfg 這個目錄依剛開始安裝的.env設定而不同 cd ~/.jitsi-meet-cfg/web vi config.js ## constraints: { video: { aspectRatio: 16 / 9, height: { ideal: 480, max: 480, min: 240 } } },
Optional
1. 啟用認證 # 修改 .env 啟用登入認證(我使用最基本的內部認證, ldap怎麼都不成功...XD) # Enable authentication ENABLE_AUTH=1 # Enable guest access ENABLE_GUESTS=0 # Select authentication type: internal, jwt or ldap AUTH_TYPE=internal 1.1 啟用內部認證後,如何新增使用者 # 進入container docker exec -it docker-jitsi-meet_prosody_1 bash # 建立使用者,後面那串meet.jitsi不需要修改哦 prosodyctl --config /config/prosody.cfg.lua register <使用者名稱> meet.jitsi
2. 增加google日曆功能
1 先想好使用哪個google 帳號讓大家能自由存取,可個人帳號也可使用g suite帳號 建議該帳號的calendar只用來預約會議室使用 2 登入進入 https://console.cloud.google.com/apis/dashboard 新增project,進入Credentials新增 OAuth 2.0 client IDs , 新增後會給你一個client id,記下來 xxxx.apps.googleusercontent.com 3 進入 AAuth consent screen , 設定該 auth 的使用範圍 4 修改 vi ~/.jitsi-meet-cfg/web/config.js 啟用google calendar , 加上先前的client id, enableCalendarIntegration: true, googleApiApplicationClientID:”xxx.apps.googleusercontent.com”, 5.重啟 cd ~/docker-jitsi-meet/ ; docker-compose restart 6 登入jitsi meet 進行相關授權, 若出現未經允許存取calendar,就不管了,允許吧. https://github.com/jitsi/jitsi-meet/blob/master/doc/integrations.md
sudo vi /etc/ssh/sshd_config # 加上以下設定 PermitRootLogin yes # 重啟sshd sudo systemctl restart sshd.service
參考 http://www.linux-kvm.org/page/Networking#Public_Bridge
必須要這樣設定,才能讓 ravada vdi 或是 kvm 新增網卡時候, 不走nat模式, 走bridge模式
手動新增(每次開機都需要再執行一次)
# 請注意 要準備 eth1 為ubuntu第二網卡,請不要用原本的eth0 ip link add br0 type bridge ; ifconfig br0 up ip link set eth1 master br0
開機自動啟動
# 若是 lxc 使用ubuntu 18.04 請記得確定有安裝netplan apt install ifupdown #修改 /etc/network/interfaces auto br0 iface br0 inet dhcp bridge_ports eth1 bridge_stp off bridge_maxwait 0 bridge_fd 0
1. 匯出xml設定檔案,假設vm名稱為 win10_1909
mkdir win10_1909 virsh dumpxml win10_1909 > win10_1909/win10_1909.xml
2.找出所有qcow2並且複製到vm_name這個目錄
cp /var/lib/libvirt/images/win10_1909*.qcow2 win10_1909/
3.壓縮整個目錄
tar jcvfp win10_1909.bz2 win10_1909
1.解開bz2
tar vfxz win10_1909.bz2
2.匯入設定檔案
virsh define --file win10_1909/win10_1909.xml
3.複製qcow2檔案
cp win10_1909/*.qcow2 /var/lib/libvirt/images
1. 查看系統是否載入nbd模組, 若沒有就載入
#查看 lsmod |grep nbd #載入 modprobe nbd max_part=16
2. 掛載
qemu-nbd -c /dev/nbd0 xxxx.qcow2
3.fdisk查看/dev/nbd0
fdisk /dev/nbd0
查看zfs的狀態
root@pve:/dev/zvol/zdata# zpool status
pool: zdata
state: ONLINE
scan: scrub repaired 0B in 2h35m with 0 errors on Sun Mar 8 02:59:48 2020
config:
NAME STATE READ WRITE CKSUM zdata ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0xDC_WD10EZEX-08WN4A0_WD-WCC6Y3LRYL6X ONLINE 0 0 0 wwn-0xDC_WD10EZEX-08WN4A0_WD-WCC6Y2SYFNY2 ONLINE 0 0 0
errors: No known data errors
查看zfs的檔案
root@pve:/dev/zvol/zdata# zfs list -t volume NAME USED AVAIL REFER MOUNTPOINT zdata/vm-100-disk-0 33.0G 175G 56K - zdata/vm-100-disk-1 683G 142G 683G - zdata/vm-101-disk-0 27.0G 142G 27.0G - zdata/vm-102-disk-0 10.3G 142G 10.3G - zdata/vm-103-disk-0 4.12G 142G 4.12G -
刪除某個vm, 但是失敗
root@pve:/dev/zvol/zdata# zfs destroy zdata/vm-103-disk-0 cannot destroy 'zdata/vm-103-disk-0': dataset is busy
停用 multipathd 服務, 然後再刪除看看, 結果成功
root@pve:/dev/zvol/zdata# systemctl stop multipathd.service Warning: Stopping multipathd.service, but it can still be activated by: multipathd.socket root@pve:/dev/zvol/zdata# zfs destroy zdata/vm-103-disk-0 root@pve:/dev/zvol/zdata# zfs list -t volume NAME USED AVAIL REFER MOUNTPOINT zdata/vm-100-disk-0 33.0G 179G 56K - zdata/vm-100-disk-1 683G 146G 683G - zdata/vm-101-disk-0 27.0G 146G 27.0G - zdata/vm-102-disk-0 10.3G 146G 10.3G - root@pve:/dev/zvol/zdata#
pve預設使用LV(Logical Volume), 所以可以使用指令的方式查詢目前磁碟劃分的狀態
root@pve:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data pve twi-aotz-- 339.33g 0.00 0.04
root pve -wi-ao---- 96.00g
swap pve -wi-ao---- 7.00g
pve預設使用 /dev/pve/data 掛載 lvm-thin , 因此移除掉(請先確認無任何資料)
root@pve:~# lvremove /dev/pve/data
查看還有多少可用空間
root@pve:~# vgdisplay pve --- Volume group --- VG Name pve System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 32 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 465.26 GiB PE Size 4.00 MiB Total PE 119106 Alloc PE / Size 26368 / 103.00 GiB Free PE / Size 92738 / 362.26 GiB VG UUID PGiSeZ-0yrO-lWUb-GWae-k307-5GPS-UTWXfN
將多出來的空間建立新的lv , 建立之後就可以針對 /dev/pve/data 格式化成ext4
root@pve:~# lvcreate -l 92738 -n data pve WARNING: dos signature detected on /dev/pve/data at offset 510. Wipe it? [y/n]: y Wiping dos signature on /dev/pve/data. Logical volume "data" created. root@pve:~# mkfs.ext4 /dev/pve/data
最後再mapping到系統的/data目錄 , 並且寫在/etc/fstab 以後開機自動掛載
root@pve:~# mkdir /data root@pve:~# mount /dev/pve/data /data root@pve:~# blkid|grep pve-data /dev/mapper/pve-data: UUID="1560ee98-1a51-4673-b117-807c8b353fc2" TYPE="ext4" root@pve:~# more /etc/fstab UUID="1560ee98-1a51-4673-b117-807c8b353fc2" /data ext4 defaults 0 1
前一陣子偶花很多時間將 esxi 重心改成proxmox ve, 好不容易告一段落.
但是節神又丟出來 mail gateway 這個怪獸,
原來是 proxmox mail gateway(PMG) 開源了(open-source software license GNU AGPL,v3).
這很不得了!
早在 2007 咖啡偶就開始使用 mail gateway 這個概念來過濾郵件, 過濾後才丟到公司內部郵件伺服器.
偶們公司的 mail gateway 使用 linux + postfix + amavisd-new 的方式,
設定極其複雜, 當時還無法透過套件安裝 , 要自行下載甚至編譯 perl 相關模組, 才能使用,
過了幾年為了能達到公司 SSO(single sign on) 的要求, 還研究好久 , 讓 mail gateway 與公司的網域主控站結合,
慘的是公司網域使用工號登入, 工號與郵件名稱又不一樣, 設定起來夭壽雜亂, 設定好之後就不敢動, 也怕動.
但還有些好處, 新人來的時候, 可以拿這個威風一下, 瀟灑地把秘笈丟過去.
現在裝了proxmox mail gateway 5.2 (pmg) , 真想罵髒話(哎喲, 我是彰化人…) , 居然可以輕易取代公司目前使用的mg.
這裡記下一些設定上的眉角:
1. 綁定網域主控站( ldap )
但是要注意一些相關屬性, 例如Base DN(確認帳號是否存在), BaseDN for Groups(確認是否有此群組) , Email 存放在哪個屬性
2.1 設定Who Objects, 這將用來查詢帳號是否在ldap 裡面
新增一個who物件, 於這個物件中綁定步驟1的ldap設定 , 並且務必指定 Unknow LDAP address, 代表無此帳號的意思
2.2. 設定aliases, 因為原本mail gateway 並沒有aliases這個機制, 但公司的郵件伺服器有aliases, 這時候可以這樣做
2.3 設定危險內容(exe, java ,或是副檔名是vbs, shs, 偶是額外加上ace這個副檔名)
3. 新增規則
規則號碼越高,越優先執行,rules with higher priority are executed first
以下範例, 請依現況調整優先順序(但是aliases必須要在ldap之前),
Rule: 100 若符合aliases就通過
Rule: 99 若在ldap搜尋不到該email , 就阻擋
Rule: 98 若符合危險內容就阻擋
4. 設定Relay Domains
5.
5.設定轉寄到內部郵件伺服器
6.
6. 取消灰名單, 以前的經驗告訴偶, 不要啟用這東西, 因為跟公司往來的客戶或廠商, 並不見得有好的mail server
7. 取消寄發到使用者的報表,別讓使用者覺得困擾
8. 一般來說,初體驗會很high, 但是久了就淡了, 因此可以考慮取消各式各樣的報表 status report , 有空再來看就好了
systemctl stop pmgreport.timer
9. 設定 TLS 讓pmg的網頁, 與郵件傳輸使用TLS加密的方式傳輸
9.1 確認是否有DNS CAA
pmg網站需要設定一個對外ip, 與對應dns名稱, 並確保有Certificate Authority Authorization (CAA)功能, 請參閱這裡
9.2 ssh 登入pmg
9.3 取得憑證
安裝工具以便取得免費的證書 LetsEncrypt
apt-get install certbot
certbot certonly –standalone –preferred-challenges http -d <主機dns名稱>
ps. 成功後會在 /etc/letsencrypt/live/<主機名稱> 找到相關的證書, 需要有fullchain.pem , privkey.pem
9.4. 設定憑證
將 fullchain.pem , privkey.pem 合併成一個pem檔案, 並且取代/etc/pmg/pmg-tls.pem , /etc/pmg/pmg-apt.pem
新增並修改renew.sh內容如下
vi /etc/pmg/renew.sh
#!/bin/bash /usr/bin/certbot renew /bin/cat /etc/letsencrypt/live/<主機dns名稱>/fullchain.pem /etc/letsencrypt/live/<主機dns名稱>/privkey.pem > /etc/pmg/pmg-tls.pem /bin/cat /etc/letsencrypt/live/<主機dns名稱>/fullchain.pem /etc/letsencrypt/live/<主機dns名稱>/privkey.pem > /etc/pmg/pmg-api.pem /bin/chmod 600 /etc/pmg/pmg-tls.pem /bin/chmod 640 /etc/pmg/pmg-api.pem /bin/chown root:root /etc/pmg/pmg-tls.pem /bin/chown root:www-data /etc/pmg/pmg-api.pem /bin/systemctl restart pmgproxy
讓renew.sh變成可以執行的屬性 chmod +x /etc/pmg/renew.sh
9.5. 設定排程
我是設定1個月,但理論上3個月執行就可以了
crontab -e
輸入
0 0 1 * * /etc/pmg/renew.sh
9.6 啟用TLS
到pmg網頁, Configuration: Mail Proxo : TLS 勾選啟用
9.7.確認是否啟用startssl ,
請輸入 telnet localhost 25 , 再輸入 ehlo localhost , 即可查詢是否有starttls功能
9.8. 測試是否有加密連線
使用gmail寄信, 觀查 /var/log/mail.log 是否出現 starttls=1 字樣
Apr 16 17:43:24 pmg postfix/smtpd[13252]: disconnect from mail-pg1-f170.google.com[209.85.215.170] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
10. /etc/postfix/main.cf 加上拒絕反查無主機名稱的郵件伺服器IP
smtpd_sender_restrictions = ... ... reject_unknown_reverse_client_hostname
然後重啟postfix ,
systemctl restart postfix
11. 還沒想到
esxi轉到pve的時候, 通常只要把硬碟類型改成ide , 就能開機成功了
但是windows 2003實在是太老舊了, 改ide居然失敗, 出現藍屏0x000007B的錯誤.
偶試過很多方式, 除了更新硬碟類型 scsi , sata , ide 外 , 還使用台灣之光再生龍( clonezilla ) 將esxi端vm備份起來, 還原到pve上, 可惜還是失敗.
找了一陣子, proxmox論壇找到此篇文章, 裡面提到使用 mergeide 把esxi的windows 2003開機後執行mergeide, 將硬碟相關驅動程式幹掉, 隨即立即關機, 之後再轉換到pve上面, 設定成ide類型, 開機後就能重新抓取硬碟,正常啟動了.
mergeide的方式, 與微軟為了解決大量佈署作業系統建立 sysprep 架構有關, 把底層一些驅動資料清空, 讓系統保留原本的軟體, 又能重新抓取新的硬體資訊, 來達到異機安裝的目的.
哈!成功開機, 偶想說一切非常美好, 世界和平了,
但是問題又冒出來, windows 2003開機後, 需要重新啟用, 可惜無論如何修改啟用方式, 包括用原版序號都啟用失敗,
後來參考蘇老碎碎念-Windows Server 2003 OEM隨機版系統轉大量授權版本
使用蘇老建議的方法2, 把 windows 2003 升級成為大量授權版, 很神奇的就能正常啟用了.
哈!成功啟用, 偶想說和平又再一次降臨,
但是問題又又冒出來了, 正常啟用後, 居然還遇到裡面的 MS SQL server 2005 無法使用的情況, 查了一下最後發現原因是 .net framework 2.0 sp2失效了, 這應該跟mergeide清除底層有關, 本來想移除重新安裝, 但無論如何都無法移除失效的.net framework 2.0 , 更不用說直接重裝.
好險微軟官網出了.Net Framework移除工具可以移除到目前為止所有出過的版本(4.7).
下載移除工具之後, 可以只選擇移除 .net framework 2.0 , 等待移除完畢, 就可以重新安裝.
最後最後, 終於完成移轉這個該死的windows 2003 server, 真正的世界和平到來.