沒什麼整理的Ravada vdi安裝筆記

Ravada vdi 網站資源

服務器安裝

1. 實體機(or lxc in pve)安裝ubuntu 18.04 
CPU需支援虛擬功能 ,

若使用pve的 lxc , 該 lxc container需在options中要啟用nest指令, 並且需修改主機中該lxc container的設定

mkdir -p /dev/net
vi /etc/pve/lxc/<lxc_id>.conf
增加 
lxc.mount.entry = /dev/kvm dev/kvm none bind,create=file
lxc.cgroup.devices.allow: c 10:232 rwm
啟後,確認權限是否為666,若沒有就要到pve主機(非lxc) 改一下 chmod 666 /dev/kvm
ps. pve的lxc安裝ravada 後來測試還是失敗 (2020/05/04)
且該container確認安裝以下套件
sudo apt-get install virt-manager ssh-askpass-gnome --no-install-recommends
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker

2 安裝mysql

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mysql-server
sudo mysql_secure_installation
sudo mysqladmin -u root -p create ravada
sudo mysql -u root -p ravada -e "create user 'rvd_user'@'localhost' identified by 'Pword12345*'"
sudo mysql -u root -p ravada -e "grant all on ravada.* to rvd_user@'localhost'" 

3 查看mysql設定檔案,可視需要修改使用者密碼,但要搭配上一步驟一起修改

sudo vi /etc/ravada.conf
db:
  user: rvd_user
  password: Pword12345* 

4 安裝相關套件

sudo apt-get install perl libmojolicious-perl mysql-common libauthen-passphrase-perl \
libdbd-mysql-perl libdbi-perl libdbix-connector-perl libipc-run3-perl libnet-ldap-perl \
libproc-pid-file-perl libvirt-bin libsys-virt-perl libxml-libxml-perl libconfig-yaml-perl \
libmoose-perl libjson-xs-perl qemu-utils perlmagick libmoosex-types-netaddr-ip-perl \
libsys-statistics-linux-perl libio-interface-perl libiptables-chainmgr-perl libnet-dns-perl \
wget liblocale-maketext-lexicon-perl libmojolicious-plugin-i18n-perl libdbd-sqlite3-perl \
debconf adduser libdigest-sha-perl qemu-kvm libnet-ssh2-perl libfile-rsync-perl \
libdate-calc-perl libparallel-forkmanager-perl libssh2-1-dev  libssh2-1 libdate-calc-perl \
 zlib1g-dev libpcre3-dev zlib1g-dev libpcre3-dev  make gcc gcc-4.8 \
 libdatetime-perl libdatetime-locale-perl libdatetime-timezone-perl libparams-validationcompiler-perl libspecio-perl libio-stringy-perl libpbkdf2-tiny-perl \
 libfile-sharedir-perl libclass-singleton-perl libsub-quote-perl libexception-class-perl libref-util-perl libclass-data-inheritable-perl libclass-inspector-perl net-tools
sudo reboot

底下0.10-1_all版本, 可至 http://infoteleco.upc.edu/img/debian/ 確認是否最新

wget http://infoteleco.upc.edu/img/debian/libmojolicious-plugin-renderfile-perl_0.10-1_all.deb
sudo dpkg -i libmojolicious-plugin-renderfile-perl_0.10-1_all.deb 
sudo perl -MCPAN -we 'install "Net::SSH2"'

5 安裝Ravada

以下ravada版本0.7.0 可上官網確認最新版 http://infoteleco.upc.edu/img/debian/

wget http://infoteleco.upc.edu/img/debian/ravada_0.7.0_ubuntu-18.04_all.deb
sudo dpkg -i ravada_0.7.0_ubuntu-18.04_all.deb 
sudo apt-get update
sudo apt-get -f install 

6 設定啟動參數

sudo systemctl daemon-reload
sudo systemctl enable rvd_back
sudo systemctl enable rvd_front
sudo systemctl start rvd_back
sudo systemctl start rvd_front 

7 設定qemu 壓縮

sudo vi /etc/libvirt/qemu.conf
加上以下參數
save_image_format = "bzip2" 

8 重開機後,新增使用者,並且同意該使用者為管理員

sudo /usr/sbin/rvd_back --add-user <使用者>

9 使用瀏覽器連線登(上一個步驟新增的使用者登入)

http://your.server.ip:8081/

10 登入ravada後, 安裝VM(win 10)

記得要先把win10 安裝檔案放到ravada主機上(/var/lib/libvirt/images), 然後執行以下指令刷新列表

sudo virsh pool-list

ps.安裝win 10會很痛苦, 滑鼠很慢,之後安裝驅動程式就正常了

11 win10安裝完畢,登入win10下載驅動程式並且安裝起來

安裝virtio驅動程式
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
執行qemu-ga-x64.msi (64-bit) or qemu-ga-x86.msi (32-bit) 
安裝spice guest tools
https://www.spice-space.org/download.html
https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe 
#安裝win10後關機, 編輯開機設定,讓vm的cpu與本機同步
virsh edit <vm name>
加上host-passthrough(直接使用原本的cpu), 以及核心數4(請依照實際cpu數修改)
 <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
 </cpu>

服務器端安裝完畢,找一台主機,使用spice方式連線

若是 linux,樹梅派,可安裝virt-viewer這套件, 安裝完畢可以執行remote-viewer進行連線
若是windows,請到此下載  https://virt-manager.org/download/ 

ps 目前不要嘗試docker, 若要嘗試,請切換branch到369_dockers, 但有一些perl 的bug,要自己修正才能執行,可是最後又會出現backend錯誤

virsh備份還原

備份

1. 請參考 https://kafeiou.pw/2020/03/25/2303/  透過virsh方式備份xml
2. 備份 mysql 
mysqldump -u root -p ravada domains > domains.sql 
mysqldump -u root -p ravada networks > networks.sql

還原

1.將/var/lib/libvirt/images 同步到新的主機上
2.同步相關xml
3.資料庫還原

單一vdi還原
除了使用virsh還原外,還需以下指令, 然後再到網頁調整一下硬體設定

rvd_back --import-domain=<machine name>

pve 無法移除自身zfs的vm檔案

查看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# 

刪除Proxmox VE中的lvm-thin,重新掛載成ext4

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

VirtualBox安裝catalina

Step 1. 想辦法下載別人做好的catalina iso檔案,或是自行建立iso

Step 2. ,準備好 virtualbox 6.1.4(或以上) 並且安裝extension pack

可參考這裡製作iso檔案

Step 3. 建立MacOS VM

1. Mac OS X (64位元)
2. vmdk 
3. Video Memory 要改成128 MB
4. USB 3.0
5. Graphics Controller 選擇VMSVGA
6. Storage 要增加光碟片,選擇安裝的iso檔案
7. 記憶體至少要4G
8. 輸入以下設定經過測試
** Catalina_10.15是vm名稱
** 在windows下設定需要dos run as administrator, Mac不用
** 記得要到vm所在的目錄,再下指令 cd "C:\Program Files\Oracle\Virtualbox"
 VBoxManage modifyvm "Catalina_10.15" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff 
 VBoxManage setextradata "Catalina_10.15" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
 VBoxManage setextradata "Catalina_10.15" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
 VBoxManage setextradata "Catalina_10.15" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
 VBoxManage setextradata "Catalina_10.15" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
 VBoxManage setextradata "Catalina_10.15" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3" 
9. 設定完畢後, 開始啟動安裝, 安裝完只能算是第一階段安裝, 必須移除iso檔案,再重開機.

Step 4. 第二階段安裝

** 設定1920x1080
VBoxManage setextradata "macOS Catalina" VBoxInternal2/EfiGraphicsResolution 1920x1080

在MacOS上將catalina安裝檔案(DMG)轉成iso檔案

原理就是從app store下載好的catalina dmg檔案, 先轉成可開機的檔案, 再轉成iso檔案

hdiutil create -o /tmp/Catalina_10.15 -size 8800m -volname Catalina -layout SPUD -fs HFS+J

hdiutil attach /tmp/Catalina_10.15.dmg -noverify -mountpoint /Volumes/Catalina_10.15

sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/Catalina_10.15 --nointeraction

hdiutil detach /volumes/Install\ macOS\ Catalina

convert /tmp/Catalina_10.15.dmg -format UDTO -o ~/Desktop/Catalina_10.15.cdr

mv ~/Desktop/Catalina_10.15.cdr ~/Desktop/Catalina_10.15.iso

rm -rf /tmp/Catalina_10.15.dmg 

v2ray初體驗-使用v2-ui初階安裝

安裝v2ray之前,你必須符合以下基本技術基礎

  1. 會安裝CEntOS 7
  2. 懂apache httpd 2.4基本設定
  3. 懂dns, 懂申請let's Encrypt

你也必須準備以下軟硬體

  1. 安裝好CEntOS7
  2. 有Internet IP
  3. 有網域,並可賦予該系統一個網路名稱

開始安裝

1. 安裝v2ray
到這個神人網站 https://github.com/sprov065/v2-ui/
一鍵安裝
bash <(curl -Ls https://blog.sprov.xyz/v2-ui.sh)

2. 安裝完畢網站預設是 http://ip:65432 預設帳號密碼都是admin , 記得登入修改密碼


3. 以下示範兩種連線, 一種http/2(h2), 另一種透過apache httpd(port 443)代理連到後端websocket
3.1 設定 h2 連線
Server:


client:
v2ray初體驗-使用v2-ui初階安裝



3.2
Server 設定:


Clinet 設定:
websocket , port 用443, 要輸入tls

apache httpd 設定:

ServerName xxx
ErrorLog /var/log/httpd/ssl_error_log1
TransferLog /var/log/httpd/ssl_access_log1

SSLEngine On
SSLProxyEngine On
SSLCertificateFile /etc/letsencrypt/live/xxx/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxx/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/xxx/fullchain.pem
## v2-ui management
RewriteEngine On
ProxyPass / http://localhost:65432/
ProxyPassReverse / http://localhost:65432/
## server
RewriteRule /ray/(.*) ws://localhost:1234/$1 [P,L]
RewriteCond %{HTTP:Upgrade} =websocket [NC]
ProxyPass /ray/ http://localhost:1234/
ProxyPassReverse /ray/ http://localhost:1234/


4. 心得
若是使用3.1 , port不是443,但是卻是使用httpd/2的方式
若是使用3.2可以看起來像是https的存取

1 2 3 4 5 ... 36