kasmtech / KasmVNC

Modern VNC Server and client, web based and secure
GNU General Public License v2.0
3.38k stars 306 forks source link

Blank screen instead of desktop when not accessed locally (from Ubuntu KVM in Proxmox) #129

Open Pierric82 opened 1 year ago

Pierric82 commented 1 year ago

Describe the bug I've installed the Ubuntu Jammy version of KasmVNC to run on top of a recent install of Ubuntu desktop running inside a ProxMox KVM (no GPU). When accessing locally (127.0.0.1) I can see the desktop; however accessing from other machines in the LAN, the connection seems successful and I see the left-side menu, but the screen is otherwise blank (unless I disconnect, then I get the generic KASM disconnected background).

System Description

PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
Linux ubudesk2204 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Running inside a Proxmox VM.

KasmVNC Details kasmvncserver_jammy_1.0.1_amd64.deb

Provide the output of this command.

Xvnc -version
Xvnc KasmVNC 0.9.8285ea812d6433af9504fde6b92e18aac6641e57 - built Dec  1 2022 16:33:10
Copyright (C) 1999-2018 KasmVNC Team and many others (see README.me)
See http://kasmweb.com for information on KasmVNC.
Underlying X server release 12008000, The X.Org Foundation

To Reproduce Steps to reproduce the behavior (for non-installation issues):

  1. Use a different machine in the LAN
  2. Connect to VM_IP:8445 (port returned by kasmvncserver)
  3. Log in
  4. See the side menu loaded but a blank display

Expected behavior Seeing a desktop.

Browser Using Vivaldi on MacOS and Vivaldi on Android, both give the same result.

Additional context The log from KasmVNC is here.

coleg06 commented 1 year ago

+1 on this. Having same issue on Ubuntu with the 1.0.1 amd64 Jammy release.

Also running Ubuntu Jammy Jellyfish vm in KVM.

mmcclaskey commented 1 year ago

Can you try Chrome on MacOS or Android?

Can you open up devtools on your browser, check the console tab for output, check the network tab for failed connections, specifically the websocket connection.

tail the logs on the server, which is located at ~/.vnc/*.log, what do you see in the logs when you try to connect?

coleg06 commented 1 year ago

Here is console output from Chrome (MacOS): DevTools failed to load source map: Could not load content for https://192.168.1.145:8445/vendor/interact.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE

Under the network panel, it just shows two fonts not able to load. The text I can see in the Kasm menus look fine, so I don't know why fonts wouldn't be able to load.

I pasted the log below. {{username}} is anytime it posted my username. 192.168.1.166 is my Mac's IP, 192.168.1.145 is my Ubuntu VM's IP.

Log: `2023-02-02 09:02:36,762 [INFO] websocket 105: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/keyboard.svg HTTP/1.1" 200 6599 2023-02-02 09:02:36,762 [DEBUG] websocket 105: No connection after handshake 2023-02-02 09:02:36,762 [DEBUG] websocket 105: handler exit 2023-02-02 09:02:36,763 [INFO] websocket 113: got client connection from 192.168.1.166 2023-02-02 09:02:36,778 [DEBUG] websocket 108: using SSL socket 2023-02-02 09:02:36,779 [DEBUG] websocket 109: using SSL socket 2023-02-02 09:02:36,782 [DEBUG] websocket 108: BasicAuth matched 2023-02-02 09:02:36,782 [DEBUG] websocket 108: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,782 [DEBUG] websocket 108: Requested file '/app/images/ctrl.svg' 2023-02-02 09:02:36,783 [INFO] websocket 108: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/ctrl.svg HTTP/1.1" 200 4576 2023-02-02 09:02:36,783 [DEBUG] websocket 108: No connection after handshake 2023-02-02 09:02:36,783 [DEBUG] websocket 108: handler exit 2023-02-02 09:02:36,783 [DEBUG] websocket 109: BasicAuth matched 2023-02-02 09:02:36,783 [DEBUG] websocket 109: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,783 [DEBUG] websocket 109: Requested file '/app/images/alt.svg' 2023-02-02 09:02:36,783 [INFO] websocket 109: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/alt.svg HTTP/1.1" 200 3748 2023-02-02 09:02:36,783 [DEBUG] websocket 109: No connection after handshake 2023-02-02 09:02:36,783 [DEBUG] websocket 109: handler exit 2023-02-02 09:02:36,784 [INFO] websocket 114: got client connection from 192.168.1.166 2023-02-02 09:02:36,785 [INFO] websocket 115: got client connection from 192.168.1.166 2023-02-02 09:02:36,856 [DEBUG] websocket 110: using SSL socket 2023-02-02 09:02:36,860 [DEBUG] websocket 110: BasicAuth matched 2023-02-02 09:02:36,860 [DEBUG] websocket 110: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,860 [DEBUG] websocket 110: Requested file '/app/images/windows.svg' 2023-02-02 09:02:36,860 [INFO] websocket 110: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/windows.svg HTTP/1.1" 200 2606 2023-02-02 09:02:36,860 [DEBUG] websocket 110: No connection after handshake 2023-02-02 09:02:36,860 [DEBUG] websocket 110: handler exit 2023-02-02 09:02:36,862 [INFO] websocket 116: got client connection from 192.168.1.166 2023-02-02 09:02:36,868 [DEBUG] websocket 112: using SSL socket 2023-02-02 09:02:36,872 [DEBUG] websocket 112: BasicAuth matched 2023-02-02 09:02:36,872 [DEBUG] websocket 112: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,872 [DEBUG] websocket 112: Requested file '/app/images/tab.svg' 2023-02-02 09:02:36,873 [INFO] websocket 112: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/tab.svg HTTP/1.1" 200 3148 2023-02-02 09:02:36,873 [DEBUG] websocket 112: No connection after handshake 2023-02-02 09:02:36,873 [DEBUG] websocket 112: handler exit 2023-02-02 09:02:36,874 [INFO] websocket 117: got client connection from 192.168.1.166 2023-02-02 09:02:36,892 [DEBUG] websocket 111: using SSL socket 2023-02-02 09:02:36,896 [DEBUG] websocket 111: BasicAuth matched 2023-02-02 09:02:36,896 [DEBUG] websocket 111: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,896 [DEBUG] websocket 111: Requested file '/app/images/esc.svg' 2023-02-02 09:02:36,896 [INFO] websocket 111: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/esc.svg HTTP/1.1" 200 4717 2023-02-02 09:02:36,896 [DEBUG] websocket 111: No connection after handshake 2023-02-02 09:02:36,896 [DEBUG] websocket 111: handler exit 2023-02-02 09:02:36,898 [INFO] websocket 118: got client connection from 192.168.1.166 2023-02-02 09:02:36,913 [DEBUG] websocket 113: using SSL socket 2023-02-02 09:02:36,917 [DEBUG] websocket 113: BasicAuth matched 2023-02-02 09:02:36,917 [DEBUG] websocket 113: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,917 [DEBUG] websocket 113: Requested file '/app/images/ctrlaltdel.svg' 2023-02-02 09:02:36,917 [INFO] websocket 113: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/ctrlaltdel.svg HTTP/1.1" 200 3432 2023-02-02 09:02:36,917 [DEBUG] websocket 113: No connection after handshake 2023-02-02 09:02:36,917 [DEBUG] websocket 113: handler exit 2023-02-02 09:02:36,919 [DEBUG] websocket 114: using SSL socket 2023-02-02 09:02:36,923 [DEBUG] websocket 114: BasicAuth matched 2023-02-02 09:02:36,923 [DEBUG] websocket 114: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,923 [DEBUG] websocket 114: Requested file '/dist/images/902f9d35b332b041483439e0f26be15c.svg' 2023-02-02 09:02:36,923 [INFO] websocket 114: 192.168.1.166 192.168.1.166 {{username}} "GET /dist/images/902f9d35b332b041483439e0f26be15c.svg HTTP/1.1" 200 6581 2023-02-02 09:02:36,923 [DEBUG] websocket 114: No connection after handshake 2023-02-02 09:02:36,924 [DEBUG] websocket 114: handler exit 2023-02-02 09:02:36,951 [DEBUG] websocket 115: using SSL socket 2023-02-02 09:02:36,955 [DEBUG] websocket 115: BasicAuth matched 2023-02-02 09:02:36,955 [DEBUG] websocket 115: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,955 [DEBUG] websocket 115: Requested file '/dist/images/294bda69d4ed0f7d5b47bc8145978966.svg' 2023-02-02 09:02:36,955 [INFO] websocket 115: 192.168.1.166 192.168.1.166 {{username}} "GET /dist/images/294bda69d4ed0f7d5b47bc8145978966.svg HTTP/1.1" 200 2754 2023-02-02 09:02:36,955 [DEBUG] websocket 115: No connection after handshake 2023-02-02 09:02:36,955 [DEBUG] websocket 115: handler exit 2023-02-02 09:02:36,974 [DEBUG] websocket 118: using SSL socket 2023-02-02 09:02:36,974 [DEBUG] websocket 116: using SSL socket 2023-02-02 09:02:36,977 [DEBUG] websocket 117: using SSL socket 2023-02-02 09:02:36,978 [DEBUG] websocket 118: BasicAuth matched 2023-02-02 09:02:36,978 [DEBUG] websocket 116: BasicAuth matched 2023-02-02 09:02:36,978 [DEBUG] websocket 116: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,978 [DEBUG] websocket 118: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,978 [DEBUG] websocket 118: Requested file '/app/images/disconnect.svg' 2023-02-02 09:02:36,978 [DEBUG] websocket 116: Requested file '/dist/images/502d013d03ea8508f7df4ba1ace5b541.svg' 2023-02-02 09:02:36,978 [INFO] websocket 116: 192.168.1.166 192.168.1.166 {{username}} "GET /dist/images/502d013d03ea8508f7df4ba1ace5b541.svg HTTP/1.1" 200 3399 2023-02-02 09:02:36,978 [DEBUG] websocket 116: No connection after handshake 2023-02-02 09:02:36,978 [DEBUG] websocket 116: handler exit 2023-02-02 09:02:36,978 [INFO] websocket 118: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/disconnect.svg HTTP/1.1" 200 5257 2023-02-02 09:02:36,978 [DEBUG] websocket 118: No connection after handshake 2023-02-02 09:02:36,978 [DEBUG] websocket 118: handler exit 2023-02-02 09:02:36,982 [DEBUG] websocket 117: BasicAuth matched 2023-02-02 09:02:36,982 [DEBUG] websocket 117: Invalid WS request, maybe a HTTP one 2023-02-02 09:02:36,982 [DEBUG] websocket 117: Requested file '/app/images/toggleextrakeys.svg' 2023-02-02 09:02:36,982 [INFO] websocket 117: 192.168.1.166 192.168.1.166 {{username}} "GET /app/images/toggleextrakeys.svg HTTP/1.1" 200 4636 2023-02-02 09:02:36,982 [DEBUG] websocket 117: No connection after handshake 2023-02-02 09:02:36,982 [DEBUG] websocket 117: handler exit 2023-02-02 09:02:41,100 [INFO] VNCSConnST: Sending client stats: [ 10.0, 10.0, 10.0, 10.0 ]

2023-02-02 09:02:46,101 [INFO] VNCSConnST: Sending client stats: [ 10.0, 10.0, 10.0, 10.0 ]`

mmcclaskey commented 1 year ago

The logs seem incomplete, can you provide the full logs. You can delete the file and reconnect, I only need to see logs for a single connection attempt.

coleg06 commented 1 year ago

Sorry about that, here's the full log.

kasmlog-parsed.txt

mmcclaskey commented 1 year ago

looks like ssl errors. Is there something about your environment we don't know, such as a proxy? Did you try Chrome browser. We do not test against Vivaldi and it is possible it does not behave exactly like Chrome.

coleg06 commented 1 year ago

No proxies, vpns, etc. Standard Ubuntu Jammy Jellyfish install as of I think September '22.

I was using chrome, never used vivaldi before.

I did notice some console message when I initially installed Kasm VNC that there was some error with an ssl file but I haven't been able to recreate that.

Pierric82 commented 1 year ago

Fwiw in my case I initially ran into SSL issues too due to my system not having good default certificates (I think) but ultimately switched it all off and went pure http, yet the same issue was still happening. The log provided in the initial post should be pure http.

mmcclaskey commented 1 year ago

You are both having different issues.

@coleg06 , your issue is that your browser is rejecting the server's SSL cert. Why it is doing that for some requests but not others, I couldn't say. But the KasmVNC logs are quite clear about that being the issue. I personally have MacOS, use Chrome, and connect to Ubuntu 22.04 VMs running on Parallels and have never ran into that issue. The issue is most likely on the client side, based on the logs and the fact that you have no proxies, firewalls, etc. Could be a browser extension or security product installed on MacOS.

@Pierric82, your logs show a successful connection. I would ask that you confirm once again that you are able to connect and see a desktop when using a browser to access KasmVNC locally. Given that you are on port 8445, that means that there is likely more than one VNC session since KasmVNC starts on port 8444. Is it possible you have two sessions running and one is working and the other not?

Generally speaking, when you are able to connect but get a black screen, that means the desktop environment did not start right. So KasmVNC is working, there is just no desktop environment. But that wouldn't change if you were connecting remotely or locally, which is why I want you to double check that you get a desktop on port 8445 locally but not remotely.

Thank you

coleg06 commented 1 year ago

Thank you for your help. It looks like /etc/ssl/private/ssl-cert-snakeoil.key is empty. Is there a way for KasmVNC to generate this file? (Or instructions on how to do so?). I reran the installation (after uninstalling) and it still doesn't create that file.

mmcclaskey commented 1 year ago

I believe that cert is created by the package ssl-cert, so if you install that it should be generated.

sudo apt-get install ssl-cert

Regardless, you can always tell KasmVNC to use a cert that you generate yourself. Here is an example using openssl to generate a self signed cert and key

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365

To configure Kasm to use it, open /etc/kasmvnc/kasmvnc.conf and add the settings. See the following link for a reference, under network.ssl

https://www.kasmweb.com/kasmvnc/docs/latest/configuration.html#network

chastel commented 1 year ago

I have the same issue. I first tried it with a popOS instance on proxmox and today I installed a fresh instance of ubuntu 22.04 on proxmox. After installing kasmVNC the first connection didnt work. With the second try I got a successful connection, but the screen stays blank.

user01-pc-uu:2.log

mmcclaskey commented 1 year ago

@chastel , so you have the same issue? KasmVNC works fine when accessed from the VM itself via https://127.0.0.1:8444, for example, but when you access it from another VM on the network you get a blank screen?

chastel commented 1 year ago

So, i just double checked, because I never tried to access it locally. I have the same outcome when I try to access it locally - blank screen.

Here is also the log of the local access: connection-local.log

mmcclaskey commented 1 year ago

Ok, then your issue is not related. It looks like your desktop environment is not running. What DE are you running and how did you configure Kasm to launch it? Did you use the auto-detected desktop environment when you launched vncserver, or did you select manual?

chastel commented 1 year ago

Thank you for your help. If I am trying locally the DE must be running, because I am using the GUI. I am running GNOME and used auto-detect. I don't understand the question "how did you configure Kasm to launch it?" Can I configure something special or is this question related to the auto-detect function?

Here is also my xstartup file: xstartup.txt

Thank you again for your support.

mmcclaskey commented 1 year ago

@chastel , KasmVNC runs its on X server and therefore your local Gnome desktop that you access via a physical monitor, keyboard, and mouse or virtually via a hypervisor console, are not related with KasmVNC at all.

Since your issue is different, please open up a different ticket and provide details about your system environment in that ticket. Thank you

cwilliams001 commented 1 year ago

+1 on this issue. Same setup, fresh install of ubuntu Jammy installed on a vm in proxmox. I am running the latest release of KasmVNC. I can add it as a kasm workspace and connect but there is only a black screen. Interestingly I tried the same steps with a Kali desktop and it works as expected. Here are the logs from KasmVNC

==> /home/ansible/.vnc/Ubuntu-Management:1.log <==
 2023-04-16 10:17:58,394 [PRIO] Connections: closed: kasm@10.20.200.222_1681654573.50337::websocket (Clean disconnection)
 2023-04-16 10:17:58,394 [INFO] EncodeManager: Framebuffer updates: 4
 2023-04-16 10:17:58,394 [INFO] EncodeManager:   Tight:
 2023-04-16 10:17:58,394 [INFO] EncodeManager:     Solid: 4 rects, 2.93997 Mpixels
 2023-04-16 10:17:58,394 [INFO] EncodeManager:            64 B (1:183749 ratio)
 2023-04-16 10:17:58,394 [INFO] EncodeManager:   Total: 4 rects, 2.93997 Mpixels
 2023-04-16 10:17:58,394 [INFO] EncodeManager:          64 B (1:183749 ratio)
 2023-04-16 10:17:58,395 [INFO] ComparingUpdateTracker: 0 pixels in / 0 pixels out
 2023-04-16 10:17:58,395 [INFO] ComparingUpdateTracker: (1:-nan ratio)
 2023-04-16 10:18:01,033 [INFO] websocket 35: got client connection from 10.20.100.101
 2023-04-16 10:18:01,053 [INFO] EncodeManager: WEBP benchmark result: 5 ms
 2023-04-16 10:18:01,053 [PRIO] Connections: accepted: kasm@10.20.200.222_1681654681.43257::websocket
 2023-04-16 10:18:01,088 [INFO] SConnection: Client needs protocol version 3.8
 2023-04-16 10:18:01,090 [INFO] SConnection: Client requests security type VncAuth(2)
 2023-04-16 10:18:01,092 [INFO] VNCSConnST: Server default pixel format depth 24 (32bpp) little-endian rgb888
 2023-04-16 10:18:01,095 [INFO] VNCSConnST: Client pixel format depth 24 (32bpp) little-endian bgr888
friki67 commented 1 year ago

Hello! I'm just beginning with KasmVNC, but maybe i've found something: I faced same thing (using a LXD VM Ubuntu Lunar). Then: 1) ssh into the VM 2) killall Xvnc 3) then launch spice viewer to access locally to my VM's graphical environment, and logout from my session 4) launch vncserver from the ssh terminal

And now it works. The only thing is that I have plain GNOME and not Ubuntu one. Regards.