Virtual Machine for the Web
Find a file
Alessandro Pignotti 4f490dc153 Copy editing
2023-05-19 11:02:58 +02:00
.github/workflows Copy editing 2023-05-19 11:02:58 +02:00
assets updated /assets/welcome_to_WebVM_slim.png 2023-05-17 19:12:19 +02:00
dockerfiles Added cowsay and netcat-openbsd to the debian_mini Dockerfile. 2023-05-17 17:00:42 +02:00
docs Copy editing 2023-05-19 10:17:46 +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 New split endpoint does not support for slow first load anymore 2023-05-17 23:06:45 +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 Copy editing 2023-05-19 11:02:58 +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.

Enable networking

  • Click "Connect via Tailscale" in the page header.
  • 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.

Fork, deploy, customize

  • 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.
    • Click on `Actions.
    • Accept the prompt. This is required only once to enable Actions for your fork.
    • Click on the workflow named Deploy.
    • Click Run workflow and then once more Run workflow in the menu.
  • Customize dockerfiles/debian_mini to suits your needs.
  • You can also make a new Dockerfile from scratch. Use the "Path to Dockerfile" workflow parameter to select it.
deploy_instructions_gif

After the workflow completes, which takes a few minutes, it will show the URL below the deploy_to_github_pages job.

Local deployment

From a local git clone

  • Download the debian_mini Ext2 image from https://github.com/leaningtech/webvm/releases/
    • You can also build your own by selecting the "Upload GitHub release" workflow option.
    • Place the image in the repository root folder.
  • Edit index.html
    • Replace the UID/GID variables with 1000
    • Replace DEVICE_TYPE with "bytes"
    • Replace IMAGE_URL with the name of the Ext2 image. For example "debian_mini_20230519_5022088024.ext2"
  • Start a local HTTP server
  • Enjoy your local WebVM.

Bugs and Issues

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

More links

Thanks to...

This project depends on:

License

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