🏠 KVM + Cockpit 打造家庭虚拟化平台
树莓派只是开始。
我用它跑了 Git、Drone、博客、FRP,甚至尝试了中间件容器,但它的性能注定是实验性的。于是,我正式上马了:
Dell 7080MFF(i7-10700T / 64G / 1T NVMe)
这台性能小钢炮,终于承担起“家庭云平台核心节点”的任务。而我给它装上的第一层盔甲是:
Ubuntu + KVM + Cockpit
这是一个轻量、开源、图形化的虚拟化平台,足以支持我后续部署 Kubernetes、MySQL、Redis、Flink 等中间件集群。
💡 为什么不用 Docker 直接部署?
因为我需要隔离性更强的环境,用于:
- 测试不同操作系统(如 Ubuntu Server、Debian、Windows)
- 模拟生产部署架构(多个虚拟机互通)
- 独立调试网络策略、防火墙、桥接等
Docker 用于中间件和微服务;KVM 用于操作系统层的“沙箱”。
⚙️ 安装流程一览
系统环境:Ubuntu Desktop 25.04
✅ 安装虚拟化组件
| |
这会安装 KVM、libvirt 和 virt-manager(桌面版 GUI 管理器,可选)。
✅ 安装 Web 管理工具 Cockpit
| |
cockpit-machines是虚拟机管理插件,必须安装。
✅ 启用 Cockpit Socket(注意!不是直接启动服务)
| |
Cockpit 是通过 socket 按需激活的服务,不能用 systemctl enable cockpit 启动。你可以确认状态:
| |
出现 Active: active (listening) 就表示启动成功。
🌐 Web 管理面板初体验
打开浏览器访问:
| |
例如:
| |
首次访问会提示自签证书不可信,继续访问即可。使用你的系统用户名/密码登录。
登录后进入 “虚拟机” 页面,就能看到熟悉的图形界面,可以:
- 上传 ISO 镜像
- 创建新虚拟机(分配 CPU / 内存 / 磁盘)
- 启动 / 停止 / 克隆 / 快照
- 浏览器中直接访问桌面(VNC / SPICE)
没有复杂命令,点几下鼠标就能把虚拟机跑起来。
👤 用户权限设置(必须)
为了能够创建和管理虚拟机,需要将当前用户加入 libvirt 和 kvm 组:
| |
执行完后需要重新登录终端或桌面会话。
🧱 虚拟化环境结构规划
我在这台 Ubuntu Desktop 上,通过 virt-manager + Cockpit 构建了一个 KVM 虚拟化平台,所有服务都运行在虚拟机中,便于资源隔离、快照备份和故障恢复。
各个虚拟机按功能划分为三类:
| 层级 | 功能描述 |
|---|---|
| 基础系统 VM | 最小化安装的 Ubuntu Server 22.04 / Debian,用作集群节点操作系统 |
| 集群节点 VM | Kubernetes 节点、Kafka、Flink 等服务运行环境 |
| 辅助用途(Docker 宿主机) | Gitea、Drone 等工具直接部署在宿主机的 Docker 中,无需额外 VM |
目前所有虚拟机使用 NAT 网络模式,宿主机通过端口转发或 FRP 实现外部访问。
🛠️ 安装虚拟机并配置静态 IP
✅ 安装 Ubuntu Server 虚拟机
我的第一台虚拟机是一个基础系统 VM,作为其他服务的模板。
安装步骤如下:
从 Ubuntu 官网下载
ubuntu-22.04-server.iso;将 ISO 镜像移动到虚拟机镜像目录:
1sudo mv ubuntu-22.04-server.iso /var/lib/libvirt/images/打开 Cockpit(通过浏览器访问宿主机 9090 端口);
在 虚拟机 > 创建新虚拟机 中,选择该 ISO 镜像;
按照界面提示配置 CPU、内存、磁盘等参数,完成 Ubuntu Server 安装。
完成首个虚拟机安装后,我通过 Cockpit 提供的“克隆虚拟机”功能,快速复制出多个节点 VM,省去重复安装步骤。
✅ 配置静态 IP 地址
安装好几台虚拟机后,我发现一个大问题:
所有 VM 居然默认分配到同一个 IP,导致后启动的虚拟机会把前一个挤掉,网络出现冲突。
为了解决这个问题,我为每台虚拟机绑定了静态 IP:
在每台虚拟机中查找其网络接口的 MAC 地址
回到宿主机的 Cockpit 界面,在 虚拟网络 → 网络 → 静态主机条目 中,点击添加:
- 填写对应的 MAC 地址;
- 指定一个固定 IP 地址(比如
192.168.122.11,192.168.122.12等); - 保存设置。
重启所有虚拟机,使配置生效。


现在,每台虚拟机都有了唯一的固定 IP,方便我后续用 Kubeadm 或 SSH 来管理和部署服务。
🔐 Cockpit + FRP 实现公网访问
我使用 FRP 将 Cockpit 面板穿透到公网:
| |
这样我就可以通过阿里云域名远程访问家庭服务器上的 Web 管理界面了:
| |
📸 控制面板截图


🚀 结语:家庭虚拟化平台正式启航
这台 64G 的 Dell 主机,已经成功取代了树莓派成为新的家庭云核心。未来我将:
- 在虚拟机中部署 Kubernetes 集群
- 用 GitOps 管理基础架构配置
- 实现博客、CI/CD、监控、存储、日志等模块集成
敬请期待。
