This is a prototype VNC client (based on noVNC) that fully runs in the browser and uses tailscale wasm to connect to the remote computer. The work is based on my PR to tailscale that adds TCP support to the tsconnect package. Even tho the PR links to the vnc branch this uses the working branch. This is because the vnc branch is based on the main develop branch of tailscale which doesn't seem super stable. I backported my changes to a stable tag of tailscale in the working branch.
I am not ascoiated with tailscale in any way.
First make sure to clone the tailscale submodule
git pull --recurse-submodules
Afterwards build the tsconnect package, for this you have to cd into the tailscale folder
cd tailscale
./tool/go run ./cmd/tsconnect build-pkg
Now you can start the server just like any other next.js project
npm install
npm run dev
To change the ip of your vnc server and the password edit the index.tsx file in the pages folder. Once done open the browser and go to localhost:3000 and open your console. There should be a message saying "needsLogin" or something similiar, copy the url into a seperate tab and sign in with your tailscale account. If everything goes as planned you should now see your remote desktop in the browser.