11# JVP
22
3- jimyag's virtualization platform. jimyag 的虚拟化平台
3+ jimyag's virtualization platform
44
5- [ English] ( README_EN .md) | 中文
5+ English | [ 中文 ] ( README_CN .md)
66
7- ## 简介
7+ ## Introduction
88
9- JVP 是一个基于 QEMU/KVM 和 libvirt 的虚拟化平台,提供完整的虚拟机生命周期管理功能。支持通过 RESTful API 和现代化的 Web 管理界面创建、管理和监控虚拟机实例。
9+ JVP is a virtualization platform based on QEMU/KVM and libvirt, providing complete virtual machine lifecycle management. It supports creating, managing, and monitoring virtual machine instances through RESTful API and a modern web management interface.
1010
11- ![ 节点管理 ] ( docs/static/nodes.png )
11+ ![ Node Management ] ( docs/static/nodes.png )
1212
13- ![ 实例列表 ] ( docs/static/instance.png )
13+ ![ Instance List ] ( docs/static/instance.png )
1414
15- ![ 实例详情 ] ( docs/static/instance-detail.png )
15+ ![ Instance Details ] ( docs/static/instance-detail.png )
1616
17- ![ VNC 控制台 ] ( docs/static/instance-vnc.png )
17+ ![ VNC Console ] ( docs/static/instance-vnc.png )
1818
19- ![ 串口控制台 ] ( docs/static/instance-console.png )
19+ ![ Serial Console ] ( docs/static/instance-console.png )
2020
21- ![ 存储池列表 ] ( docs/static/storage-pool.png )
21+ ![ Storage Pool List ] ( docs/static/storage-pool.png )
2222
23- ![ 存储池详情 ] ( docs/static/storage-pool-detail.png )
23+ ![ Storage Pool Details ] ( docs/static/storage-pool-detail.png )
2424
25- ![ 模板管理 ] ( docs/static/template.png )
25+ ![ Template Management ] ( docs/static/template.png )
2626
27- ![ 快照管理 ] ( docs/static/snapshot.png )
27+ ![ Snapshot Management ] ( docs/static/snapshot.png )
2828
29- ## 核心功能
29+ ## Core Features
3030
31- ### 实例管理(Instances)
31+ ### Instance Management
3232
33- - ** 创建实例 ** :自定义 CPU、内存、磁盘,支持桥接或 NAT 网络
34- - 集成 cloud-init,支持用户数据与 SSH 公钥注入
35- - ** 查询实例 ** :按节点 /ID 查询,返回网卡、 MAC、IP、多 IP 信息、开机自启动标记、启动时间
36- - ** 生命周期管理 ** :启动、停止、重启、删除(可选同时删除卷)
37- - ** 修改实例属性 ** :调整 CPU、内存、名称、自动启动
38- - ** 密码重置 ** :基于 guest-agent 的异步重置(后台执行),保留 virt-customize 兜底
39- - ** 远程控制台 ** :支持 VNC/Serial 控制台
33+ - ** Create Instances ** : Customize CPU, memory, and disk, support bridge or NAT networking
34+ - Integrated cloud-init, supports user data and SSH public key injection
35+ - ** Query Instances ** : Query by node /ID, returns network interfaces, MAC, IP, multiple IPs, autostart flag, start time
36+ - ** Lifecycle Management ** : Start, stop, reboot, delete (optionally delete volumes)
37+ - ** Modify Instance Properties ** : Adjust CPU, memory, name, autostart
38+ - ** Password Reset ** : Asynchronous reset based on guest-agent (background execution), with virt-customize fallback
39+ - ** Remote Console ** : Support VNC/Serial console
4040
41- ### 节点与存储
41+ ### Nodes and Storage
4242
43- - ** 多节点管理 ** :支持同时管理多个 libvirt 节点(本地和远程),构建分布式虚拟化集群
44- - ** 本地节点 ** :自动创建 ` local (qemu:///system) ` 节点
45- - ** 远程节点 ** :通过 libvirt URI 添加远程节点(如 ` qemu+ssh://user@host/system ` )
46- - ** 节点类型 ** :支持 compute(计算)、 storage(存储)、 hybrid(混合)等类型
47- - ** 节点操作 ** :添加、删除、启用、禁用节点
48- - ** 节点概要 ** :查看每个节点的 CPU/内存 /NUMA/虚拟化能力等硬件信息
49- - ** 存储池管理 ** :按节点管理存储池,列举/创建/启停/删除存储池,查看存储池使用情况
50- - ** 存储卷管理 ** :按节点和存储池列举卷,创建卷,查看卷详情(容量、分配、格式),删除卷
43+ - ** Multi-Node Management ** : Support managing multiple libvirt nodes (local and remote) simultaneously, building distributed virtualization clusters
44+ - ** Local Node ** : Automatically creates ` local (qemu:///system) ` node
45+ - ** Remote Nodes ** : Add remote nodes via libvirt URI (e.g., ` qemu+ssh://user@host/system ` )
46+ - ** Node Types ** : Support compute, storage, hybrid, and other node types
47+ - ** Node Operations ** : Add, delete, enable, disable nodes
48+ - ** Node Summary ** : View hardware information for each node ( CPU/memory /NUMA/virtualization capabilities, etc.)
49+ - ** Storage Pool Management ** : Manage storage pools by node, list/create/start/stop/delete storage pools, view storage pool usage
50+ - ** Storage Volume Management ** : List volumes by node and storage pool, create volumes, view volume details (capacity, allocation, format), delete volumes
5151
52- ### 快照管理(Snapshots)
52+ ### Snapshot Management
5353
54- - ** 创建快照 ** :为虚拟机创建快照,支持包含内存状态
55- - ** 列举快照 ** :按节点和虚拟机查询快照列表
56- - ** 快照详情 ** :查看快照的详细信息(创建时间、状态、磁盘信息等)
57- - ** 回滚快照 ** :将虚拟机恢复到指定快照状态
58- - ** 删除快照 ** :删除不再需要的快照,释放存储空间
59- - ** 快照类型 ** :支持内部快照( qcow2)和外部快照(所有格式)
54+ - ** Create Snapshots ** : Create snapshots for virtual machines, support including memory state
55+ - ** List Snapshots ** : Query snapshot list by node and virtual machine
56+ - ** Snapshot Details ** : View detailed snapshot information (creation time, state, disk information, etc.)
57+ - ** Revert Snapshots ** : Restore virtual machine to specified snapshot state
58+ - ** Delete Snapshots ** : Delete snapshots that are no longer needed, free up storage space
59+ - ** Snapshot Types ** : Support internal snapshots ( qcow2) and external snapshots (all formats)
6060
61- ### 模板管理(Templates)
61+ ### Template Management
6262
63- - ** 注册模板 ** :从 URL 下载云镜像或从本地文件导入
64- - ** 列举模板 ** :查看所有可用的虚拟机模板
65- - ** 模板详情 ** :查看模板的元数据(操作系统、大小、来源等)
66- - ** 删除模板 ** :删除不再使用的模板
67- - ** 模板类型 ** :支持云镜像模板( Ubuntu、 Debian、 Alpine 等)和快照导出的自定义模板
63+ - ** Register Templates ** : Download cloud images from URL or import from local files
64+ - ** List Templates ** : View all available virtual machine templates
65+ - ** Template Details ** : View template metadata (operating system, size, source, etc.)
66+ - ** Delete Templates ** : Delete templates that are no longer used
67+ - ** Template Types ** : Support cloud image templates ( Ubuntu, Debian, Alpine, etc.) and custom templates exported from snapshots
6868
69- ### 密钥对管理(KeyPairs)
69+ ### Key Pair Management
7070
71- - ** 创建密钥对 ** :支持 RSA 和 ED25519 算法
72- - ** 导入密钥对 ** :导入现有公钥
73- - ** 查询密钥对 ** :支持按 ID、名称等条件查询
74- - ** 删除密钥对 ** :删除不再使用的密钥对
75- - ** 自动注入 ** :创建实例时自动注入 SSH 公钥
71+ - ** Create Key Pairs ** : Support RSA and ED25519 algorithms
72+ - ** Import Key Pairs ** : Import existing public keys
73+ - ** Query Key Pairs ** : Support querying by ID, name, etc.
74+ - ** Delete Key Pairs ** : Delete key pairs that are no longer used
75+ - ** Auto Injection ** : Automatically inject SSH public keys when creating instances
7676
77- ### Web 管理界面
77+ ### Web Management Interface
7878
79- - ** 现代化 UI** :基于 React + Vite + Tailwind CSS 构建的响应式 Web 界面
80- - ** 实时监控 ** :查看实例状态、资源使用情况、网络信息等
81- - ** 远程控制台 ** :集成 VNC 和 Serial 控制台,支持图形和文本界面访问
82- - ** 统一管理 ** :通过 Web 界面管理所有资源(实例、节点、存储、模板、快照、密钥对)
79+ - ** Modern UI** : Responsive web interface built with React + Vite + Tailwind CSS
80+ - ** Real-time Monitoring ** : View instance status, resource usage, network information, etc.
81+ - ** Remote Console ** : Integrated VNC and Serial console, support graphical and text interface access
82+ - ** Unified Management ** : Manage all resources (instances, nodes, storage, templates, snapshots, key pairs) through web interface
8383
84- ## 环境要求
84+ ## Requirements
8585
86- ### 必需工具
86+ ### Required Tools
8787
88- | 工具 | 用途 |
89- | ------------------------------ | ------------------------------------------ |
90- | ** libvirt** | 虚拟化管理核心(libvirtd 守护进程) |
91- | ** virsh** | 执行 qemu-agent-command |
92- | ** qemu-img** | 磁盘镜像操作(创建、调整大小、转换、快照) |
93- | ** genisoimage** 或 ** mkisofs** | 生成 cloud-init ISO |
94- | ** ssh** | 远程节点连接( VNC/串口代理、文件传输) |
88+ | Tool | Purpose |
89+ | ------------------------------ | ---------------------------------------------------- |
90+ | ** libvirt** | Virtualization management core (libvirtd daemon) |
91+ | ** virsh** | Execute qemu-agent-command |
92+ | ** qemu-img** | Disk image operations (create, resize, convert, snapshot) |
93+ | ** genisoimage** or ** mkisofs** | Generate cloud-init ISO |
94+ | ** ssh** | Remote node connection ( VNC/serial proxy, file transfer) |
9595
96- ### 可选工具
96+ ### Optional Tools
9797
98- | 工具 | 用途 |
99- | ------------------ | -------------------------------------------- |
100- | ** wget** | 下载模板镜像(优先使用) |
101- | ** curl** | 下载模板镜像(wget 不可用时回退) |
102- | ** ip** | 查询 ARP 邻居表获取 VM IP(优先使用) |
103- | ** arp** | 查询 ARP 表获取 VM IP( ip 命令不可用时回退) |
104- | ** virt-customize** | 重置虚拟机密码(兜底方案) |
105- | ** socat** | 远程节点 VNC/串口转发(远程节点上需要) |
98+ | Tool | Purpose |
99+ | ------------------ | ------------------------------------------------------ |
100+ | ** wget** | Download template images (preferred) |
101+ | ** curl** | Download template images (fallback when wget unavailable) |
102+ | ** ip** | Query ARP neighbor table for VM IP (preferred) |
103+ | ** arp** | Query ARP table for VM IP (fallback when ip unavailable) |
104+ | ** virt-customize** | Reset VM password (fallback method) |
105+ | ** socat** | VNC/serial forwarding for remote nodes (required on remote host) |
106106
107- ### 远程节点额外要求
107+ ### Additional Requirements for Remote Nodes
108108
109- 如果使用远程 libvirt 节点(如 ` qemu+ssh://user@host/system ` ),远程主机需要:
109+ If using remote libvirt nodes (e.g., ` qemu+ssh://user@host/system ` ), the remote host needs:
110110
111- - ** ssh** 服务
112- - ** socat** ( VNC/串口控制台)
113- - ** genisoimage** 或 ** mkisofs** ( cloud-init ISO 生成)
114- - ** find** , ** cat** , ** mkdir** , ** rm** (基础 shell 命令)
111+ - ** ssh** service
112+ - ** socat** (for VNC/serial console)
113+ - ** genisoimage** or ** mkisofs** (for cloud-init ISO generation)
114+ - ** find** , ** cat** , ** mkdir** , ** rm** (basic shell commands)
115115
116- ### 安装命令
116+ ### Installation Commands
117117
118118** Debian/Ubuntu:**
119119
@@ -127,32 +127,32 @@ apt install libvirt-daemon-system qemu-utils genisoimage wget curl openssh-clien
127127dnf install libvirt qemu-img genisoimage wget curl openssh-clients libguestfs-tools socat
128128```
129129
130- ## 如何使用
130+ ## How to Use
131131
132- ### 方式一: Docker 部署(推荐)
132+ ### Option 1: Docker Deployment (Recommended)
133133
134- Docker 部署会在容器内运行 libvirtd,完全接管宿主机的虚拟化环境。
134+ Docker deployment runs libvirtd inside the container, completely taking over the host's virtualization environment.
135135
136- ** 1. 停止宿主机的 libvirt 服务 **
136+ ** 1. Stop host libvirt services **
137137
138138``` bash
139139sudo systemctl stop libvirtd libvirtd.socket virtlogd virtlogd.socket
140140sudo systemctl disable libvirtd libvirtd.socket virtlogd virtlogd.socket
141141```
142142
143- ** 2. 创建数据目录 **
143+ ** 2. Create data directory **
144144
145145``` bash
146146sudo mkdir -p /var/lib/jvp
147147```
148148
149- ** 3. 启动容器 **
149+ ** 3. Start the container **
150150
151151``` bash
152- # 使用 docker-compose
152+ # Using docker-compose
153153docker compose up -d
154154
155- # 或直接使用 docker run
155+ # Or using docker run directly
156156docker run -d \
157157 --name jvp \
158158 --hostname jvp \
@@ -174,28 +174,28 @@ docker run -d \
174174 ghcr.io/jimyag/jvp:latest
175175```
176176
177- ** 4. 访问 Web 界面 **
177+ ** 4. Access the Web interface **
178178
179179```
180- http://<服务器IP >:7777
180+ http://<server-ip >:7777
181181```
182182
183- ### 方式二:二进制文件部署
183+ ### Option 2: Binary Deployment
184184
185- ** 1. 下载二进制文件 **
185+ ** 1. Download the binary **
186186
187- 从 [ GitHub Releases] ( https://github.com/jimyag/jvp/releases ) 下载适合您系统的二进制文件。
187+ Download the binary for your system from [ GitHub Releases] ( https://github.com/jimyag/jvp/releases ) .
188188
189189``` bash
190- # 创建目录
190+ # Create directory
191191sudo mkdir -p /opt/jvp
192192
193- # 下载并解压(以 linux amd64 为例)
193+ # Download and extract (example for linux amd64)
194194wget https://github.com/jimyag/jvp/releases/latest/download/jvp_linux_amd64.tar.gz
195195tar -xzf jvp_linux_amd64.tar.gz -C /opt/jvp
196196```
197197
198- ** 2. 创建 systemd 服务 **
198+ ** 2. Create systemd service **
199199
200200``` bash
201201sudo tee /etc/systemd/system/jvp.service > /dev/null << EOF
@@ -216,82 +216,82 @@ WantedBy=multi-user.target
216216EOF
217217```
218218
219- ** 3. 启动服务 **
219+ ** 3. Start the service **
220220
221221``` bash
222222sudo systemctl daemon-reload
223223sudo systemctl enable jvp
224224sudo systemctl start jvp
225225```
226226
227- ** 4. 访问 Web 界面 **
227+ ** 4. Access the Web interface **
228228
229229```
230- http://<服务器IP >:7777
230+ http://<server-ip >:7777
231231```
232232
233- ### 方式三:本地构建运行
233+ ### Option 3: Build and Run Locally
234234
235- ** 1. 构建项目 **
235+ ** 1. Build the project **
236236
237237``` bash
238- # 构建包含前端的完整二进制文件
238+ # Build complete binary file including frontend
239239task build
240240```
241241
242- ** 2. 运行服务 **
242+ ** 2. Run the service **
243243
244244``` bash
245- # 运行 JVP 服务(默认端口 7777)
245+ # Run JVP service (default port 7777)
246246./bin/jvp
247247```
248248
249- ** 3. 访问 Web 界面 **
249+ ** 3. Access the Web interface **
250250
251- 构建完成后,前端已嵌入到二进制文件中。启动服务后访问:
251+ After building, the frontend is embedded in the binary file. After starting the service, access:
252252
253253```
254254http://localhost:7777
255255```
256256
257- ### 本地调试( Docker)
257+ ### Local Debugging ( Docker)
258258
259259``` bash
260- # 构建本地调试镜像
260+ # Build local debug image
261261task debug-image
262262
263- # 修改 docker-compose.yml 中 image 为 jvp:local 后启动
263+ # Modify image in docker-compose.yml to jvp:local, then start
264264docker compose up -d
265265```
266266
267- ## 未来计划
267+ ## Future Plans
268268
269- JVP 正在持续开发中,以下功能计划在未来版本中支持:
269+ JVP is under continuous development. The following features are planned for future releases:
270270
271- ### 用户体验增强
272- - ** 国际化( i18n) ** :支持多语言切换(中文、英文等)
273- - ** 深色/浅色主题切换 ** :支持主题切换和系统主题自动检测
274- - ** 用户引导 ** :首次使用引导、功能提示、快速开始向导
271+ ### User Experience Enhancements
272+ - ** Internationalization ( i18n) ** : Support for multiple languages (Chinese, English, etc.)
273+ - ** Dark/Light Theme Toggle ** : Theme switching with automatic system theme detection
274+ - ** User Onboarding ** : First-time user guide, feature tooltips, quick start wizard
275275
276- ### 网络功能增强
277- - ** 多种网络配置 ** :桥接、 NAT、虚拟网络、直通网络、 VLAN、网络 QoS 等
278- - ** 网络隔离 ** :支持网络隔离和多网卡绑定
276+ ### Network Feature Enhancements
277+ - ** Multiple Network Configurations ** : Bridge, NAT, virtual networks, passthrough networks, VLAN, network QoS, etc.
278+ - ** Network Isolation ** : Support for network isolation and multi-NIC bonding
279279
280- ### 设备直通虚拟化
281- - ** PCIe 设备直通 ** : GPU、网卡、 NVMe 等 PCIe 设备直通
282- - ** USB 设备直通 ** : USB 设备直通和热插拔支持
283- - ** 磁盘直通 ** :物理磁盘、分区、 LVM 逻辑卷直通
280+ ### Device Passthrough Virtualization
281+ - ** PCIe Device Passthrough ** : GPU, network cards, NVMe, and other PCIe device passthrough
282+ - ** USB Device Passthrough ** : USB device passthrough and hot-plug support
283+ - ** Disk Passthrough ** : Physical disk, partition, and LVM logical volume passthrough
284284
285- ### Windows 虚拟机支持
286- - ** Windows 安装支持 ** : Windows ISO 镜像、 VirtIO 驱动集成
287- - ** Windows 优化配置 ** : CPU 模式优化、时钟同步、性能优化
288- - ** Windows 工具集成 ** : QEMU Guest Agent、 VirtIO 驱动自动安装
285+ ### Windows Virtual Machine Support
286+ - ** Windows Installation Support ** : Windows ISO images, VirtIO driver integration
287+ - ** Windows Optimization ** : CPU mode optimization, clock synchronization, performance tuning
288+ - ** Windows Tools Integration ** : QEMU Guest Agent, automatic VirtIO driver installation
289289
290- 更多详细信息请参考 [ 实现计划 ] ( docs/implement/implementation-plan.md ) 。
290+ For more details, please refer to the [ Implementation Plan ] ( docs/implement/implementation-plan.md ) .
291291
292- ## 相关资料
292+ ## Related Resources
293293
294294- < https://www.voidking.com/dev-libvirt-create-vm/ >
295295- < https://sq.sf.163.com/blog/article/172808502565068800 >
296296- < https://shihai1991.github.io/openstack/2024/02/20/%E9%80%9A%E8%BF%87libvirt%E5%88%9B%E5%BB%BA%E8%99%9A%E6%8B%9F%E6%9C%BA/ >
297- - < https://www.baeldung.com/linux/qemu-uefi-boot > 启动 qemu 的 UEFI 引导
297+ - < https://www.baeldung.com/linux/qemu-uefi-boot > Boot qemu with UEFI
0 commit comments