A powerful virtual machine management solution based on Vue + Node.js + QEMU
中文文档 | English
voidVM is a modern virtual machine management platform that provides an intuitive web interface for creating, configuring, and managing virtual machines. By integrating QEMU virtualization technology and Supabase cloud database, it offers users a convenient and efficient virtual machine management experience.
- 🖥️ Intuitive Web Interface - Modern user interface built with Vue
- 🚀 Powerful Virtualization - Integrated QEMU provides complete virtual machine functionality
- ☁️ Cloud Data Management - Uses Supabase for data persistence and user authentication
- 📱 Responsive Design - Supports desktop and mobile device access
- 🔧 Online Management - Create, start, stop, and delete virtual machines
- 📊 Real-time Monitoring - Virtual machine status and performance monitoring
- Frontend page optimization (Bootstrap -> TailwindCSS) To be determined
- Associate users with virtual machines (Supabase Auth and Virtual Machines)
- Virtual machine status monitoring (QMP)
- Virtual machine creation process optimization (Image management)
- [✅] Virtual machine image management (Image upload, delete, view)
- [✅] Virtual machine network management (Virtual network configuration)
- Virtual machine document management (VM document upload, delete, view)
- Virtual machine storage management (VM storage configuration)
- [✅] Virtual machine snapshot management (VM snapshot creation, deletion, viewing)
- Backend JavaScript upgrade to TypeScript then upgrade to Bun
- Project testing addition (Using Vitest)
- [✅] Project deployment optimization (Using Docker)
- [✅] Project documentation optimization (Using VitePress)
- Project code optimization (Using ESLint and Prettier)
- Project CI/CD optimization (Using GitHub Actions)
- Project performance optimization (Using Bun and Vitest)
- Frontend: Vue + Composition API
- Backend: Node.js + Express
- Virtualization: QEMU/KVM
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Node.js >= 18.0.0
- npm >= 8.0.0
- QEMU installed and configured
- Supabase account
- Clone the Project
git clone https://github.com/Kian-404/voidVM.git
cd voidVM
- Install Dependencies
pnpm install
- Environment Configuration
# Copy environment variable template
cp .env.example .env
# Edit .env file and fill in Supabase configuration
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_KEY=your_supabase_service_key
- Start Services
pnpm dev
Ensure QEMU is installed on your system:
# Ubuntu/Debian
sudo apt-get install qemu-kvm qemu-utils
# CentOS/RHEL
sudo yum install qemu-kvm qemu-img
# macOS
brew install qemu
-
User Registration/Login
- Visit
http://localhost:3000
- Use Supabase Auth for user authentication
- Visit
-
Create Virtual Machine
- Click the "Create Virtual Machine" button
- Configure CPU, memory, storage, and other parameters
- Select operating system image
-
Manage Virtual Machines
- Start/stop virtual machines
- View virtual machine status and performance
- Modify virtual machine configuration
- Delete unnecessary virtual machines
voidVM/
├── web/ # Vue3 frontend application
│ ├── src/
│ │ ├── components/ # Vue components
│ │ ├── views/ # Page views
│ │ ├── stores/ # Pinia state management
│ │ └── utils/ # Utility functions
│ └── package.json
├── server/ # Node.js backend service
│ ├── routes/ # API routes
│ ├── controllers/ # Controllers
│ ├── middleware/ # Middleware
│ ├── services/ # Business logic
│ └── package.json
├── docs/ # Project documentation
├── scripts/ # Script files
└── README.md
GET /api/vms
- Get virtual machine listPOST /api/vms
- Create virtual machineGET /api/vms/:id
- Get virtual machine detailsPUT /api/vms/:id
- Update virtual machine configurationDELETE /api/vms/:id
- Delete virtual machinePOST /api/vms/:id/start
- Start virtual machinePOST /api/vms/:id/stop
- Stop virtual machine
Contributions are welcome! Please follow these steps:
- Fork this repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details
- Vue.js - Progressive JavaScript framework
- Node.js - JavaScript runtime
- QEMU - Open source virtualization software
- Supabase - Open source Firebase alternative
For questions or suggestions, please contact us through:
- Submit an Issue