本仓库托管 https://webvm.io 的源代码,这是一个在浏览器中运行的 Linux 虚拟机。
体验新的 Alpine / Xorg / i3 图形环境:https://webvm.io/alpine.html
WebVM 是一个无服务器的虚拟环境,完全在客户端通过 HTML5/WebAssembly 运行。它旨在兼容 Linux ABI,运行未经修改的 Debian 发行版,包含许多原生开发工具链。
WebVM 由 CheerpX 虚拟化引擎驱动,可在任何浏览器中安全、沙箱化地执行 x86 二进制文件。CheerpX 包含一个 x86 到 WebAssembly 的 JIT 编译器、一个虚拟块文件系统和一个 Linux 系统调用模拟器。
现代浏览器不提供直接使用 TCP 或 UDP 的 API。WebVM 通过集成 Tailscale(一个支持 WebSocket 作为传输层的 VPN 网络)来提供网络支持。
WebVM 现在可以访问您本地 Tailscale 网络中的机器!
如果您想访问公共互联网,则需要一个出口节点。详细说明请参阅 Tailscale 出口节点。 (根据您的网络速度,可能需要等待 Tailscale Wasm 模块下载完成。) 设置完成后:
作为手动登录的替代方法,您可以在 WebVM URL 末尾添加您的 tailscale 认证密钥。
https://webvm.io/#authKey=<your-key>
建议使用临时密钥。
我们还支持 headscale,一个自托管的开源 Tailscale 控制服务器实现。
不过,由于 headscale 不支持添加 CORS 标头,您需要设置一个代理服务器来添加它们。headscale 的相关说明可以在此处找到。
准备好后,在 nginx 配置文件的 location / 块中添加以下行:
if ($http_origin = "https://webvm.io") {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Credentials' 'true' always;
}
要登录到您的 headscale 网络,请在 WebVM URL 中添加 #controlUrl=<your-control-url>。
注意:
--login-server 命令行选项。& 分隔符。
Settings。Pages 部分。Github Actions 作为源。
Enforce HTTPS。Actions。Deploy 的工作流。Run workflow,然后再次点击菜单中的 Run workflow。Deploy 工作流将开始,点击它以查看详情。deploy_to_github_pages 任务下方显示 URL。
您现在可以自定义 dockerfiles/debian_mini 以满足需求,或从头创建新的 Dockerfile。使用 Path to Dockerfile 工作流参数来选择它。
git clone https://github.com/leaningtech/webvm.git
cd webvm
运行以下命令下载 Debian mini Ext2 镜像:
wget "https://github.com/leaningtech/webvm/releases/download/ext2_image/debian_mini_20230519_5022088024.ext2"
(您也可以通过选择 "Upload GitHub release" 工作流选项来构建自己的磁盘镜像)
编辑 config_public_terminal.js 以引用本地磁盘镜像:
将:
"wss://disks.webvm.io/debian_large_20230522_5044875331.ext2"
替换为:
"/disk-images/debian_mini_20230519_5022088024.ext2"
(使用指向磁盘镜像位置的绝对或相对 URL。)
将 "cloud" 替换为正确的磁盘镜像类型:"bytes"
运行以下命令安装依赖项并构建 WebVM:
npm install
npm run build
输出将放置在 build 目录中。
mkdir disk-images
mv debian_mini_20230519_5022088024.ext2 disk-images/
nginx.conf 文件以提供磁盘镜像服务。添加以下 location 块:location /disk-images/ {
root .;
autoindex on;
}
运行以下命令启动 Nginx:
nginx -p . -c nginx.conf
Nginx 将自动提供 build 目录服务。
打开浏览器并访问:http://127.0.0.1:8081。
享受您的本地 WebVM!
Deploy 工作流会考虑 Dockerfile 中指定的 CMD。要构建一个 REPL,您只需应用此补丁并部署即可。
diff --git a/dockerfiles/debian_mini b/dockerfiles/debian_mini
index 2878332..1f3103a 100644
--- a/dockerfiles/debian_mini
+++ b/dockerfiles/debian_mini
@@ -15,4 +15,4 @@ WORKDIR /home/user/
# 我们设置 env,这将被 Webvm 提取。这是可选的。
ENV HOME="/home/user" TERM="xterm" USER="user" SHELL="/bin/bash" EDITOR="vim" LANG="en_US.UTF-8" LC_ALL="C"
RUN echo 'root:password' | chpasswd
-CMD [ "/bin/bash" ]
+CMD [ "/usr/bin/python3" ]
要访问 Claude AI,您需要一个 API 密钥。请按照以下步骤开始:
"解决位于 /home/user/chall1.bin 的 CTF 挑战。注意,该二进制文件从标准输入读取数据。"
重要提示: 您的 API 密钥是私密的,绝不应共享。我们无法访问您的密钥,该密钥仅存储在您浏览器的本地。
请使用 Issues 报告任何 Bug。 或者来 Discord 打个招呼 / 分享反馈。
本项目依赖:
WebVM 依赖于 CheerpX x86 到 WebAssembly 虚拟化技术,该技术通过 NPM 包含在项目中。
每次发布都会更新 NPM 包。
每个构建都是不可变的,如果某个特定版本今天对您有效,它将永远有效。
WebVM 根据 Apache 许可证 2.0 版发布。
欢迎您使用、修改和重新分发本仓库的内容。
公开的 CheerpX 部署按 原样 提供,并 免费供 个人进行技术探索、测试和使用。任何其他组织(包括非营利组织、学术界和公共部门)的使用都需要许可证。未经商业许可,不得出于在其他地方托管的目的下载 CheerpX 构建。
了解更多关于 CheerpX 许可的信息。
如果您想在 CheerpX/WebVM 之上构建产品,请联系:[email protected]