Virtual Machine for the Web
Find a file
2022-10-06 13:00:11 +02:00
assets Add image cowsay 2022-10-06 13:00:11 +02:00
examples Initial commit 2022-01-31 22:00:49 +01:00
tun tailscale_tun.wasm to be instantiated without streaming (MIME type) 2022-10-05 09:31:39 +02:00
xterm Remove xterm's SourceMap warnings 2022-10-05 09:31:39 +02:00
favicon.ico New favicon: red tower on black background 2022-10-06 11:48:43 +02:00
index.html Another iteration on <meta> 2022-10-06 12:57:28 +02:00
login.html Revert "Experimental function calling across tabs" 2022-10-06 11:48:43 +02:00
network_modal.js WIP network modal 2022-10-05 09:31:20 +02:00
nginx.conf Initial commit 2022-01-31 22:00:49 +01:00
README.md Add networking instructions to the readme 2022-10-06 11:48:43 +02:00
scrollbar.css Scrollbar 2022-10-05 09:31:39 +02:00
tower.ico Move favicon to red tower on black background 2022-10-05 09:31:39 +02:00
tower_logo.png Favicon: use red on white tower 2022-10-05 09:31:39 +02:00

WebVM

This repository hosts the source code of the https://webvm.io live demo page.

WebVM is a server-less virtual environment running fully client-side in HTML5/WebAssembly. It's designed to be Linux ABI-compatible. In this demo, it runs an unmodified Debian distribution including many native development toolchains.

WebVM is powered by the CheerpX virtualization engine, and enables safe, sandboxed client-side execution of x86 binaries on any browser. CheerpX includes an x86-to-WebAssembly JIT compiler, a virtual block-based file system, and a Linux syscall emulator.

For more information: https://medium.com/leaningtech/webvm-client-side-x86-virtual-machines-in-the-browser-40a60170b361

Enable Networking

  • Click "Tailscale Login" in the top right corner.
  • Log in to Tailscale (create an accout if you don't have one)
  • If you want to access the public internet, you need an Exit Node. See here for how to set one up. If you just want to access a machine in your Tailscale Network, you don't need it.
  • Depending on your network speed, you may need to wait a few moments for the Tailscale Wasm module to be downloaded.
  • Log in with your Tailscale credentials.
  • Go back to the WebVM tab. You will see your IP address in the top right.
  • Start firing network requests!

Given the short-lived nature of WebVM, we log into Tailscale as an Ephemeral Node. This means that the node will disappear from your Tailscale Network after a period of inactivity. It also means that when you reload the tab, you need to log in again. It should be faster the second time.

Bugs and Issues

Please use Issues to report any bug.

Browsers support


Chrome

Edge

Safari

Firefox
✔️ ✔️ ✔️ ✔️

WebVM and CheerpX are compatible with any browser, both on Desktop (Chrome/Chromium, Edge, Firefox, Safari), and Mobile (Chrome, Safari), provided support for SAB is present, and the device has sufficient memory.

Other

This project depends on xterm.js (https://xtermjs.org/) and on its add-on xterm-addon-fit

To update the xterm-related files do:

mkdir build
cd build
npm install --save xterm
npm install --save xterm-addon-fit
cd ../xterm
cp ../build/node_modules/xterm/lib/xterm.js .
cp ../build/node_modules/xterm/css/xterm.css .
cp ../build/node_modules/xterm-addon-fit/lib/xterm-addon-fit.js .
cd ..
rm -r build

License

Copyright (c) Leaning Technologies Limited. All rights reserved.