How to install Web Console with Virtual Machines on Debian 10

1) ssh to debian system and install Web Console with Virtual Machines

debian>$ echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list.d/backports.list
debian>$ sudo apt update
debian>$ sudo apt install -t buster-backports cockpit cockpit-machines
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  augeas-lenses cockpit-bridge cockpit-networkmanager cockpit-packagekit cockpit-storaged cockpit-system cockpit-ws
  dmeventd exim4-base exim4-config exim4-daemon-light genisoimage gir1.2-libosinfo-1.0 ibverbs-providers ipxe-qemu
  libaio1 libaugeas0 libblockdev-mdraid2 libbytesize1 libcapstone4 libdaxctl1 libdevmapper-event1.02.1 libfdt1
  libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libgnutls-dane0 libgovirt-common libgovirt2 libgsasl7 libibverbs1
  libiscsi7 libkyotocabinet16v5 liblvm2cmd2.03 liblzo2-2 libmailutils5 libndctl6 libnetcf1 libntlm0 libpmem1
  libpwquality-tools librados2 librbd1 librdmacm1 libreadline5 libslirp0 libspice-server1 libssh-4 libtirpc-common
  libtirpc3 libunbound8 liburcu6 liburing1 libvdeplug2 libvirglrenderer0 libvirt-clients libvirt-daemon
  libvirt-daemon-system libvirt-dbus libvirt-glib-1.0-0 libvirt0 libxencall1 libxendevicemodel1 libxenevtchn1
  libxenforeignmemory1 libxengnttab1 libxenmisc4.11 libxenstore3.0 libxentoolcore1 libxentoollog1 libxml2-utils lvm2
  mailutils mailutils-common mdadm netcat-openbsd ovmf python3-distutils python3-lib2to3 python3-libvirt
  python3-libxml2 qemu-block-extra qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86 qemu-utils
  seabios sysuser-helper thin-provisioning-tools virt-viewer virtinst
Suggested packages:
  augeas-doc cockpit-doc cockpit-pcp sssd-dbus exim4-doc-html | exim4-doc-info eximon4 spf-tools-perl swaks wodim
  cdrkit-doc augeas-tools libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-storage-rbd
  libvirt-daemon-driver-storage-zfs numad auditd nfs-common open-iscsi pm-utils radvd systemtap zfsutils mailutils-mh
  mailutils-doc dracut-core samba vde2 debootstrap
The following NEW packages will be installed:
  augeas-lenses cockpit cockpit-bridge cockpit-machines cockpit-networkmanager cockpit-packagekit cockpit-storaged
  cockpit-system cockpit-ws dmeventd exim4-base exim4-config exim4-daemon-light genisoimage gir1.2-libosinfo-1.0
  ibverbs-providers ipxe-qemu libaio1 libaugeas0 libblockdev-mdraid2 libbytesize1 libcapstone4 libdaxctl1
  libdevmapper-event1.02.1 libfdt1 libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libgnutls-dane0 libgovirt-common
  libgovirt2 libgsasl7 libibverbs1 libiscsi7 libkyotocabinet16v5 liblvm2cmd2.03 liblzo2-2 libmailutils5 libndctl6
  libnetcf1 libntlm0 libpmem1 libpwquality-tools librados2 librbd1 librdmacm1 libreadline5 libslirp0 libspice-server1
  libssh-4 libtirpc-common libtirpc3 libunbound8 liburcu6 liburing1 libvdeplug2 libvirglrenderer0 libvirt-clients
  libvirt-daemon libvirt-daemon-system libvirt-dbus libvirt-glib-1.0-0 libvirt0 libxencall1 libxendevicemodel1
  libxenevtchn1 libxenforeignmemory1 libxengnttab1 libxenmisc4.11 libxenstore3.0 libxentoolcore1 libxentoollog1
  libxml2-utils lvm2 mailutils mailutils-common mdadm netcat-openbsd ovmf python3-distutils python3-lib2to3
  python3-libvirt python3-libxml2 qemu-block-extra qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86
  qemu-utils seabios sysuser-helper thin-provisioning-tools virt-viewer virtinst
0 upgraded, 95 newly installed, 0 to remove and 146 not upgraded.
Need to get 66.2 MB of archives.
After this operation, 188 MB of additional disk space will be used.
Do you want to continue? [Y/n]
...
debian>$ sudo reboot

2) ssh to debian system and download netinstall iso to local iso directory

debian>$ mkdir iso
debian>$ cd ~/iso
debian>$ wget -q https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.10.0-amd64-netinst.iso

3) Login to Web Console from your workstation (PC or Mac)

% curl -I http://debian:9090
HTTP/1.1 301 Moved Permanently
Content-Type: text/html
Location: https://debian:9090/
Content-Length: 73
X-DNS-Prefetch-Control: off
Referrer-Policy: no-referrer
X-Content-Type-Options: nosniff
Cross-Origin-Resource-Policy: same-origin

Chrome or Firefox --> https://debian:9090/ --> Advanced --> Proceed to debian

!!! WARNING !!!

Activate default networks in virtual machines to avoid following error

Creation of VM vm1 failed
ERROR Requested operation is not valid: 
network 'default' is not active Domain installation does not appear to have been successful. 
If it was, you can restart your domain by running: virsh --connect qemu:///system start vm1 
otherwise, please restart your installation.

4) Create your first VM (vm1) from Web Console

   Virtual Machines --> Create VM
   Name: vm1
   Connection: System
   Installation type: Local install media
   Installation source: /home/tchung/iso/debian-10.10.0-amd64-netinst.iso
   Operation system: Debian 10 (buster)
   Storage: Create new volume
   Size:  20 GiB
   Memory: 2 GiB
   [x] Immediately start VM

5) Install Debian 10 on virtual machine as you do in physical machine

6) ssh to virtual machine (vm1) and confim you can ping

debian>$ ssh vm1
   vm1>$ ping www.google.com
         ... works!