retspen / webvirtcloud

WebVirtCloud is virtualization web interface for admins and users
1.63k stars 362 forks source link

console shows blank page #636

Closed Xzavier0722 closed 4 months ago

Xzavier0722 commented 4 months ago

What

Console webpage for any instance is blank(I tried on a windows server and Debian without desktop env) as the screenshot below:

image

I didn't find any error message on the webpage.

System environment

System Info:

image

KVM is QEMU with KVM, connected via local.

The WebVirtCloud is installed by installer. Proxy by Nginx with the config in /srv/webvirtcloud/conf/nginx/webvirtcloud.conf

All services seem working well:

image

Would anyone please help on this issue, thanks. I didn't find noVNC log file, if any log or additional information is required please let me know.

catborise commented 4 months ago

i think you are using spice for console. spice is deprecated by qemu/kvm + libvirt. can you please change console type spice to vnc, then try again.

Xzavier0722 commented 4 months ago

i think you are using spice for console. spice is deprecated by qemu/kvm + libvirt. can you please change console type spice to vnc, then try again.

Nope, I think it is vnc now.. image

catborise commented 4 months ago

your screenshot shows default settings. but you must change instance settings. image

do you access instances on remote host or localhost?

Xzavier0722 commented 4 months ago

Oh yes, now the instance was using spice and I changed it to vnc. But after this I got an error message on the console page: 'Something went wrong, connection is closed'

And I'm accessing localhost

catborise commented 4 months ago

after changing console spice to vnc, you must change also primary video model.(recommended one vga) image

Xzavier0722 commented 4 months ago

Set to VGA, but the error still. I paste the instance's xml config hope can be more clear:


<domain type='kvm' id='15'>
  <name>winserver</name>
  <uuid>38c4ebc2-3b6d-4de7-888d-e2cbf7972ee9</uuid>
  <metadata xmlns:ns0="http://libosinfo.org/xmlns/libvirt/domain/1.0">
    <ns0:libosinfo>
      <ns0:os id="http://microsoft.com/win/2k22"/>
    </ns0:libosinfo>
  </metadata>
  <memory unit='KiB'>33554432</memory>
  <currentMemory unit='KiB'>33554432</currentMemory>
  <vcpu placement='static'>8</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-7.2'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv mode='custom'>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <vmport state='off'/>
  </features>
  <cpu mode='host-passthrough' check='none' migratable='on'/>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/ssd/vm/storage/winserver.qcow2' index='1'/>
      <backingStore/>
      <target dev='sda' bus='sata'/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10'/>
      <alias name='pci.1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='2' port='0x11'/>
      <alias name='pci.2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0x12'/>
      <alias name='pci.3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x13'/>
      <alias name='pci.4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x14'/>
      <alias name='pci.5'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0x15'/>
      <alias name='pci.6'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0x16'/>
      <alias name='pci.7'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='8' port='0x17'/>
      <alias name='pci.8'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x7'/>
    </controller>
    <controller type='pci' index='9' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='9' port='0x18'/>
      <alias name='pci.9'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='10' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='10' port='0x19'/>
      <alias name='pci.10'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x1'/>
    </controller>
    <controller type='pci' index='11' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='11' port='0x1a'/>
      <alias name='pci.11'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x2'/>
    </controller>
    <controller type='pci' index='12' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='12' port='0x1b'/>
      <alias name='pci.12'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x3'/>
    </controller>
    <controller type='pci' index='13' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='13' port='0x1c'/>
      <alias name='pci.13'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x4'/>
    </controller>
    <controller type='pci' index='14' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='14' port='0x1d'/>
      <alias name='pci.14'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x5'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:3a:3c:1e'/>
      <source network='default' portid='733e15ac-5dfe-44b1-80ea-1e5f32b41c70' bridge='virbr0'/>
      <target dev='vnet14'/>
      <model type='e1000e'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>
    <sound model='ich9'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </sound>
    <audio id='1' type='none'/>
    <video>
      <model type='vga' vram='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <memballoon model='none'/>
  </devices>
  <seclabel type='dynamic' model='apparmor' relabel='yes'>
    <label>libvirt-38c4ebc2-3b6d-4de7-888d-e2cbf7972ee9</label>
    <imagelabel>libvirt-38c4ebc2-3b6d-4de7-888d-e2cbf7972ee9</imagelabel>
  </seclabel>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+64055:+64055</label>
    <imagelabel>+64055:+64055</imagelabel>
  </seclabel>
</domain>
catborise commented 4 months ago

it seems there is not a problem with instance config. (to make verification you can use virt-viewer) it can be webvirtcloud settings. i tested with debian12 with using "install.sh" there is not any problem with console. my settings.py config like that

.
..
..........
#
# WebVirtCloud settings
#

# Websock port
WS_PORT = 6080

# Websock host
WS_HOST = '0.0.0.0'

# Websock public port - 80 or 443 if reverse-proxy, else 6080
WS_PUBLIC_PORT = 6080

# Websock public host
WS_PUBLIC_HOST = None

# Websock public path
WS_PUBLIC_PATH = "/novncd/"

# Websock Certificate for SSL
WS_CERT = None

SOCKETIO_PORT = 6081
SOCKETIO_HOST = '0.0.0.0'

# Socketio public host
SOCKETIO_PUBLIC_HOST = None

# Socketio public port - 80 or 443 if reverse-proxy, else 6081
SOCKETIO_PUBLIC_PORT = 6081

# Socketio public path
SOCKETIO_PUBLIC_PATH = "socket.io/"

# List of console listen addresses
QEMU_CONSOLE_LISTENER_ADDRESSES = (
    ("127.0.0.1", "Localhost"),
    ("0.0.0.0", "All interfaces"),
)
.................
.
.
Xzavier0722 commented 4 months ago

Seems there is not much difference excepting I'm using reverse proxy so the public ports are 443..

settings.py: image

Nginx config: image

catborise commented 4 months ago

Hımm you are using https then you must use certificate with console

https://github.com/retspen/webvirtcloud/issues/173 This issue explains how to use it

Xzavier0722 commented 4 months ago

Just tried but issue still. And I think my case is different with the one you pointed out. In #173 the ssl is handled by the noVNC service itself (on 6080 port), but for mine the ssl is handled by Nginx so for noVNC service self is not using ssl..

Do we have anyway to enable more debug log to identify what happened? For now only this is printed out:

image