Unable to access guests via VNC using API

arandompveadmin

New Member
Nov 20, 2025
3
0
1
Hi All,

I've a use case where I need to expose specific VMs on one of my PVE hosts via VNC (and/or ideally SPICE using the spice-html5 client) via a simple web-based UI (using the current version of noVNC as the web-client here).

I've been able to integrate the necessary VM controls (reboot/shutdown/etc) without issue but I'm having issues on the display side.

Near as I can tell the way the VNC flow SHOULD work is;
  • Call /api2/json/nodes/{node}/qemu/{vmid}/vncproxy passing the "generate-password" parameter set to 1 (I've also tried with and without websocket = 1 in case the doco was wrong. If somebody can tell me if it's possible to directly pass the ticket to a vanilla noVNC instance that'd also be great)
  • Call /api2/json/nodes/{node}/qemu/{vmid}/vncwebsocket passing the ticket and port from the previous call.
  • Connect using the password from the original API call to the websocket opened by the second API call.

I see the websocket open and listen on 0.0.0.0 when I make the vncwebsocket call but when noVNC attempts to connect it says the request was refused. There are no firewalls in the mix so that's not the issue here.

I've tried pretty much every permutation I can think of for parameters to pass to noVNC (ws/wss, password in raw form, password in urlencoded form, ticket as password) but nothing seems to move the needle.

I can't for the life of me find any logging to help to explain what's going on so I'm at a bit of a loss.

Originally I was using PVE 8.3.4 but I have upgraded to 8.4.14 on the off chance it resolved the issue but I'm seeing the same problem still.

I have also attempted to test this using the ProxmoxVNC project which is basically doing what I'm attempting to but that's not working either so it seems like the issue lies on the PVE side (or there have been breaking changes since that project was released).

Any suggestions would be greatly appreciated, even if it's just a pointer to how to get logging from the PVE side for this so I might have some chance of figuring out what's going on.

Thanks
 
Last edited:
I've just done some testing with a very rudimentary websockets client, I am apparently able to connect using that so it would seem that at least the socket is opening and accepting connections (contrary to what noVNC suggests), however I've still been unable to find any logging to tell me what's happening on the PVE end (aside from the tasks being started and ending, no detail about WHAT is going on with the tasks).

I guess I'm going to have to go trawling in the PVE source to try to figure out what's going on :/
 
Hmm, further testing suggests this is maybe a noVNC issue after all, ran up websockify on the PVE host to try to test using that instead of the baked in websocket proxy and the logs suggest that noVNC isn't even trying to connect...