A simple Node.js-based launcher for a preconfigured QEMU virtual machine with VPN routing.
β οΈ This project does not include QEMU binaries due to licensing. See the QEMU Setup section below for instructions on installing them manually or via script.
- Launches a secure virtual machine using QEMU
- Routes VM traffic through a VPN interface
- Built-in Node.js control interface
- Minimal GUI / CLI for selecting VM profiles
- Node.js (v18+ recommended)
- A compatible VPN client (e.g., OpenVPN or WireGuard)
- Virtual disk image (e.g.,
.qcow2
) - QEMU (manually installed or fetched via script)
- ISO image of distro (This is when you are installing a distro)
- Disk.img for the installation (make from
qemu-img create -f qcow2
) - PKG for compiling into Windows and other systems
- Absolute paths for specifying where the files are
When exporting and distributing, the directory must have:
- deb.img
- QEMU
- config.json
- debian-12.0.0-amd64-netinst.iso
This project depends on QEMU to launch virtual machines. Due to licensing terms (GPLv2), QEMU binaries are not included in this repository.
Download QEMU for Windows from:
Extract the .exe and .dll files into the qemu/
directory at the root of this project.
If you need a minimal Debian installation image for your virtual machine, you can download the official Debian netinst ISO:
β‘οΈ Download Debian netinst ISO
This image is ideal for small VMs, as it only contains the installer and fetches the rest of the packages from the internet during setup.
Once downloaded, place the .iso
file in your vm-images/
directory (or wherever you keep your VM assets), and update your config.json
or launch script to boot from it.
vm-images/
βββ debian-12.6.0-amd64-netinst.iso
βββ your-vm-disk.qcow2
git clone
cd vpn-vm-launcher
npm install
## installing an image please use install.js
node install
## Running / Testing an img
node index
## Building for windows
npm build = pkg . --targets node14-win-x64 --output vpn-vm-launcher.exe --debug