私家 homelab 篇一: proxmox 安装和基本配置
2024-03-04

折腾 homelab 有一段时间了,今天有空记录下基于 proxmox 虚拟化平台的安装和基础配置。

安装 PVE 系统

官网下载最新版本 PVE ISO 镜像,直接使用 Rufus 制作一个 U 盘启动盘。U 盘插入需要安装的机器,重启进入 BIOS 修改 U 盘为启动项,之后基本就是傻瓜式的一直点下一步就可以了。需要注意的就是安装的时候记得插入网线自动获取 IP,之后需要用到这个 IP,比如我这里是 192.168.2.217。

安装完成后就可以断开显示器的连接,之后在另一台设备访问其 Web UI,我这里是 https://192.168.2.217:8006/,注意这里是 https 而非 http,一般会提示 HTTPS 证书无效,忽略即可。接着输入刚刚安装设置的密码,用户名是 root,登录后就可以看到 PROXMOX Web UI 界面了。

大概是下面这个样子:

image-20240304133518738

至此,Proxmox 的安装就算完成。

基本配置

Proxmox 功能很强大,配置也很多。这里只介绍一些我自己在用的基本配置。

模版创建

一般配 Linux 虚拟机,我们当然希望能在虚拟机启动时,就自动配置好 IP 地址、SSH 密钥、文件系统自动扩容,这样能免去很多手工操作。cloudinit 就是一个能帮你自动完成这些功能的工具,AWS、阿里云等各大云服务厂商都支持这种配置方式,好消息是 PVE 也支持。

首先 cloudinit 必须使用特殊的系统镜像,这里以 Ubuntu 的 cloudimg为例。首先下载好镜像到Proxmox 宿主机,并以导入的磁盘为该虚拟机的硬盘,命令如下:

# 创建新虚拟机
qm create 9000 --name ubuntu-noble-template --memory 2048 --net0 virtio,bridge=vmbr0

# 将下载好的 img/qcow2 镜像导入为新虚拟机的硬盘,注意在镜像当前目录
qm importdisk 9000 ubuntu-24.04-server-cloudimg-amd64.img local

# 通过 scsi 方式,将导入的硬盘挂载到虚拟机上
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local:9000/vm-9000-disk-0.raw

# qcow2 镜像默认仅 2G 大小,需要手动扩容到 32G,否则虚拟机启动会报错
qm resize 9000 scsi0 50G

# 设置后 cloud-init 部分才不再是灰色
qm set 9000 --ide2 local:cloudinit

上面的工作都完成后,还需要做一些后续配置

  1. 调整启动顺序,确保 scsi0 设备在启动项中被启用
  2. 手动设置 cloud-init 参数,重新生成 cloudinit image,启动虚拟机,并通过 ssh 登入远程终端
    1. cloud image 基本都没有默认密码,并且禁用了 SSH 密码登录。必须通过 cloud-init 参数添加私钥、设置账号、密码、私钥。
    2. apt install neovim vim git qemu-guest-agent curl wget openssh-server git -y
  3. 检查 qemu-guest-agent,如果未自带,一定要手动安装它!
    1. ubuntu 需要通过 sudo apt install qemu-guest-agent 手动安装它。
  4. 安装所需的基础环境,如 docker/docker-compose/vim/git/python3。
  5. 关闭虚拟机,然后将虚拟机设为模板。

接下来就可以从这个模板虚拟机,克隆各类新虚拟机了~

参考