Virtual Machine for the Web
Find a file
2023-05-17 17:04:04 +02:00
.github/workflows Actions: Tun interface is now part of the CX deployment 2023-05-17 09:49:40 +02:00
assets Added Gh action gif & png to assets 2023-05-17 17:00:42 +02:00
dockerfiles Added cowsay and netcat-openbsd to the debian_mini Dockerfile. 2023-05-17 17:00:42 +02:00
docs Moved networking instructions from README.md. Some refactor. 2023-05-17 17:00:42 +02:00
examples Added luajit interp lines to the other 2 lua examples. 2023-05-04 23:53:06 +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 UI: Minor spacing adjustment 2023-05-17 17:04:04 +02:00
login.html Revert "Experimental function calling across tabs" 2022-10-06 11:48:43 +02:00
network.js Use tailscale provided by CheerpX directly, instead of vendoring it 2023-05-16 17:55:29 +02:00
nginx.conf Initial commit 2022-01-31 22:00:49 +01:00
README.md Updated /assets/welcome_to_WebVM_slim and adjusted the scaling. 2023-05-17 17:00:42 +02:00
scrollbar.css Scrollbar 2022-10-05 09:31:39 +02:00
serviceWorker.js serviceworker.js: Adjusted a comment in, to clarify the ifstatement in doRegister(). 2023-04-18 13:53:29 +02:00
tower.ico Move favicon to red tower on black background 2022-10-05 09:31:39 +02:00

WebVM

This repository hosts the source code for https://webvm.io, a Linux virtual machine that runs in your browser.

WebVM is a server-less virtual environment running fully client-side in HTML5/WebAssembly. It's designed to be Linux ABI-compatible. 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.

How to: enable networking

  • Go to https://webvm.io.
  • Click "Tailscale Login" in the top right corner.
  • Log in to Tailscale (create an account if you don't have one).
  • If you are unfamiliar with Tailscale or would like additional information see WebVM and Tailscale.

How to: fork and deploy

  • Fork the repository.
  • Enable Github pages in settings.
    • Click on Settings.
    • Go to the Pages section.
    • Select Github Actions as the source.
  • Run the workflow.
    • Go to the forked repository its Github actions tab.
    • Accept the prompt.
    • Click on the workflow named Deploy.
    • Click Run workflow and then once more Run workflow.
deploy_instructions_gif

After the action completes, it will show the URL to the GitHub Pages site below the deploy_to_github_pages job.

How to: host WebVM locally

  • Replace UID and GID with the requested uid and gid in double quotes.
  • Replace DEVICE_TYPE with "bytes".
  • Run nginx -p . -c nginx.conf in the root of the WebVM directory. WebVM can then be found at http://localhost:8081.

Bugs and Issues

Please use Issues to report any bug. Or come to say hello / share your feedback on Discord.

Browsers support

WebVM and CheerpX are compatible with any browser, both Desktop and Mobile, provided support for SAB, IndexedDB, and the device having enough memory.

More links

Thanks to...

This project depends on:

License

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