webvm/README.md
Alessandro Pignotti 4a56f44b48 Bump README
2023-05-22 10:29:35 +02:00

4.6 KiB

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

deploy_instructions_gif
  • 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.
  • After a few seconds a new Deploy workflow will start, click on it to see details.
  • After the workflow completes, which takes a few minutes, it will show the URL below the deploy_to_github_pages job.

You can now customize dockerfiles/debian_mini to suits your needs, or make a new Dockerfile from scratch. Use the "Path to Dockerfile" workflow parameter to select it.

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 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

WebVM is released under the Apache License, Version 2.0.

You are welcome to use, modify, and redistribute the contents of this repository.

WebVM depends on the CheerpX x86-to-WebAssembly virtualization technology. A link to the current latest build is always available at https://cheerpxdemos.leaningtech.com/publicdeploy/LATEST.txt. Builds of CheerpX are immutable and uniquely versioned. An example link would be:

https://cheerpxdemos.leaningtech.com/publicdeploy/20230517_94/cx.js

We strongly encourage users not to use the latest build. Plase directly use a specific build to avoid unexpected regressions. Since builds are immutable, if they work for you now they will keep working forever.

These up-to-date builds are provided as-is and are free to use for technological exploration, testing and non-commercial uses. Downloading the CheerpX build for the purpose of hosting it elewhere is not permitted.

If you want to build a product on top of CheerpX/WebVM, please get in touch: sales@leaningtech.com