本文以保姆级记录ProxmoxVE安装全流程(单节点),并且为生产环境做一些必要的安全配置。

Proxmox VE (Proxmox Virtual Environment) 简称PVE,它是一个开源的服务器虚拟化环境Linux发行版,拥有“vCenter”能力,轻与强可兼得!最具代表的 Vultr云 底层虚拟化基于Proxmox VE

虚拟化原理

特点介绍

单节点方案也能拥有计算、网络和存储。

Proxmox VE 是一个完整的开源服务器管理平台,用于企业虚拟化。它将 KVM 管理程序和 Linux 容器 (LXC)、软件定义的存储和网络功能紧密集成在一个平台上。借助基于 Web 的集成用户界面,您可以轻松管理 VM 和容器、集群的高可用性或集成的灾难恢复工具。[](https://www.proxmox.com/en/proxmox-ve#wk-32)

无论是单台PVE还是集群PVE都拥有的相同的功能,不同的是单台PVE不具备冗余。无法承受故障,单节点故障即 宕机 。而使用2台或多台(官方推荐3节点)就组成了具备了容灾能力的 超融合集群 ,集群在一台或多台服务器发生硬件故障时候,集群内会自动转移运行的VPS。VPS租户可以无感知切换到正常的服务器上,从而达到了 容灾热迁移

说到这里是不是发现云计算中的VM模块也是这样,没错的!云计算底层逻辑都大同小异,只是各个产商使用不同的底层架构(如OpenStack、VMware),且还根据自身情况进行了大量的研发而来。PaaS系统已经不是原来的PaaS系统了,底层可能还是原来的底层。

PVE还有许多特点,这里只列举这一项比较具有代表的。此特点总结就是它功能齐全而且轻量,即使单台节点也能具备所有功能,PVE的节点概念就不像VMware ESXi一样 节点就是节点,功能就只有作为节点的功能,VMware vCenter又是单独的vCenter 需要二者配合才能获的全部功能。这样就会让小型系统显得尤为臃肿,当然大型项目这个情况可能就不存在了。这里不对比二者的好坏,毕竟一个是商业虚拟化,一个是开源虚拟化。无论二者面临当台、小/中/大项目 均能表现出自己独到之处。

对于 私有云 ,个人比较偏向选择PVE,这也是本文出现的原因。主要看中 PVE的轻量与功能齐全强大,当然还有 开源免费 、对多语言支持完善、 支持简体中文 ,对于企业PVE也有商业版本提供,适合做大型项目的部署。二者的却别仅有更新源上的区别,开源免费版本的更新源只能更新一些可能没有经过稳定性测试的组件,商业版本可以得到最稳定的组件更新。

ProxmoxVE管理界面

准备安装

Proxmox VE 快速且易于安装

上手很容易: 只需下载 ISO 映像并在您的硬件上安装 Proxmox VE。几分钟后,您将创建您的第一个虚拟机和容器。

Proxmox VE 源代码在 GNU AGPLv3 下获得许可,可以免费下载和使用。通过裸机安装,您将获得一个基于 Debian GNU/Linux 的完整操作系统,64 位,一个具有 KVM 和容器支持的 Proxmox VE 内核,用于备份/恢复和 HA 集群的强大工具,等等… 通过干净的 Web 的管理界面可以轻松完成配置

步骤介绍







Step.1 下载 ISO 镜像

访问官网 https://www.proxmox.com/ 找到 Downloads > Proxmox Virtual Environment > ISO Images

或者直接访问到该页面 https://www.proxmox.com/en/downloads/category/iso-images-pve

安装ProxmoxVE(PVE)并做必要的安全配置

选择你需的版本镜像下载,推荐下载BitTorrent版本 然后再使用迅雷等下载工具来下载镜像。

Step.2 制作USB引导

传统引导一般是把.ISO 文件刻录进光盘使用CD/DVD光驱来安装系统,由于该设备逐渐退出大众消费范围,此处不记录该方法。

制作USB引导需要准备一个不小于8GB的 U盘 ,推荐USB3.0接口。

引导制作软件:

制作USB引导软件本站推荐俩款开源软件:

balenaEtcher是一个免费开源软件,用于将镜像文件 .iso .img等文件 写入USB存储介质,使得U盘具备系统启动能力或者使用U盘来为计算机安装系统。它由Balena开发,并根据Apache License 2.0获得许可。

[Ventoy]()新一代多系统启动U盘解决方案,简单来说Ventoy并不是.iso .img 等镜像文件的写入工具,而是一个微型的启动系统,你只需要把.iso .img 等镜像文件拷贝到安装过Ventoy的U盘中,你就能直接通过引导启动对应的镜像,只要你的U盘足够大。你可以同时存储不同系统的.iso 系统引导的时候,自由选择需要启动的镜像,Ventoy是来自国产的开源软件 妥妥的国货之光!


镜像制作流程

balenaEtcher 官网提供了编译好直接可用的软件,支持3大主流系统: Windows/Linux/macOS

必要条件:

  • 下载ProxmoxVE.iso
  • 安装好了balenaEtcher
  • U盘已经插入电脑


Ventoy版本的重点并不在制作上,因为无需制作。只需要往安装好Ventoy的U盘里拷ProxmoxVE.iso 镜像文件即可进入下一步。

必要条件:

  • 下载ProxmoxVE.iso
  • 安装好了 Ventoy
  • U盘已经插入电脑

Ventoy的安装方法请参考官网提供的的简明教程 https://www.ventoy.net/cn/doc_start.html

Ventoy软件支持Windows/Linux 俩大系统。本文示例以Windows为例(无论是Windows/Linux版的Ventoy都是一样的,功能上没有任何差别):

  1. 访问Ventoy下载地址 下载Windows Ventoy 如ventoy-1.0.84-windows.zip
  2. 然后解压开直接执行 Ventoy2Disk.exe
  3. 如下图所示,选择磁盘设备,然后点击 安装 按钮即可
  4. 拷贝镜像文件
安装完成之后,U盘会被分成两个分区(参考 官方说明)。
其中第1个分区(就是容量大的那个分区,也可以称之为 镜像分区)将会被格式化为exFAT文件系统(你也可以再手动重新格式化成其他支持的文件系统,比如 NTFS/FAT32/UDF/XFS/Ext2/3/4 等,参考 官方说明), 你只需要把ISO/WIM等文件拷贝到这里面即可。你可以把文件放在任意目录以及子目录下。 Ventoy默认会遍历所有的目录和子目录,找出所有的镜像文件,并按照字母排序之后显示在菜单中。
你可以通过插件配置让Ventoy只搜索某一个固定的目录,或是跳过某些特殊目录等。 详细的控制 Ventoy 搜索路径的方法请参考 控制 Ventoy 搜索路径方法总结

安装系统

制作好镜像启动U盘后,就准备好在目标主机安装系统。对于目标主机的配置同样有一些值得注意的地方,您开始之前应去提前了解您的硬件系统比如:主板芯片组驱动、网卡驱动、CPU型号等时候具备安装Linux的条件,ProxmoxVE基于Debian Linux发行分支。

根据官方与Linux内核相关信息 截止Proxmox VE 7.3-3 x86_64 内核版本Kernel: 5.15.74-1-pve 能完美运行ProxmoxVE的CPU一般为intel10代或10代以内、AMD EPYC等,其他版本可能是未经测试认证的,可能可以正常运行也有可能遇到问题

ProxmoxVE系统安装最低硬件要求

  • CPU: 64bit (Intel EMT64 or AMD64)
  • Intel VT/AMD-V capable CPU/Mainboard for KVM full virtualization support
  • RAM: 1 GB RAM, plus additional RAM used for guests

启动硬件前,应根据您主板BIOS说明书得知你的一些操作快捷键,比如如何进入BIOS,如何直接使用U盘设备快速引导。

这里仅收集一些常见快捷键,请根据实际情况来使用;在开机启动界面一般会在屏幕上有所提示。

功能快捷键
进入BISO
快速引导

安全启动 :这个是近代产品开始出现在BIOS里的, 安全启动是防止安装其他未经(Microsoft)验证的系统,包括非Windows系统等 ,所以需要关闭它,才能正确引导。

开始安装

成功进入U盘引导后 首先会进入安装首页,直接选择<strong>Install Proxmox VE</strong> 开始正常安装

选择Prxmox VE系统安装的磁盘,多盘的话这里可以选择多种RAID方案,RAID基于zfs软阵列

选择国家、时区、键盘偏好(会自动按照国家来默认)

设置管理员root密码,同时这个密码也是Linux系统的密码

接着设置系统的IP,IP设置必须手动 [固定] 但有DHCP服务器的话它会自动获取并填写信息你只需确认信息,这里有一个Hostname(FQDN)需要注意你可以自定义个域名地址,域名不要求是持有的公网域名。

⚠️注意事项

  • Management Interface 为PVE管理和WebGUI管理面板所需的网口,如果是多网口此处应按计划选择。网口选定虽能再次更改但操作不谨慎容易造成不必要的麻烦。选定后未来与PVE的通讯或PVE与外部设备存储、备份所走的协议均从这个网口流出,多网口剩下的网口可以单独给VPS独立使用或一起使用。
  • Hostname(FQDN)可以使用 nodes1.localhost.com 如果使用了这个,那么本台服务器的名称就被定义为nodes1 且该名称对大小写敏感,如使用 PVE01.localhost.com 那么本台服务器的名称就为PVE01
  • IP 地址信息配置应提前设计规划好,避免改动。运行中的系统改动IP地址不谨慎容易造成不必要的麻烦

下一步之后会汇总显示一次所有配置注意检查无误后,建议截图或拍照保留一份

接着下一步系统就开始安装了,安装完成后点击 reboot 然后退出U盘等待系统启动即可

系统启动

安装完成并重启退出安装盘后进入引导


等待启动,下面红框就算PVE的管理地址

Proxmox VE默认的管理地址为: https:// 设置的IP地址 :8006 /

管理地址2个重点:

  • https 默认且强制开启
  • 管理端口为 8006

如果使用浏览器去访问时没注意使用了http 而不是https来开启是没有任何反应的

使用同一个局域网内电脑浏览器开启 PVE管理地址, https:// 设置的IP地址 :8006 /

这时候 浏览器一般会跳出以下警告,直接点 继续访问此网站 ,原因主要是https访问模式下SSL证书是PVE安装时候自签名的不受公有机构信任的SSL证书,这里先忽略这个问题 之后会设置会详细配置。

浏览器中就来到了登陆界面,按照安装时候设置的信息填写,用户名默认为root

随机进入主界面,安装步骤全部完成

Step.3 配置主机

本文旨在为单节点 Proxmox VE的安装和进入生产环境的必要配置角度来记录,如需要对集群进行更高阶的配置,会在后续陆续整理出相关文章。不过集群的根本仍然还是单节点,唯一的区别就是把互相加入集群,其他配置大同小异。

基本配置主要由以下几点

1. 面板SSL证书配置

面板SSL证书配置目的为了公网访问时候的数据传输安全

2. 面板安全设置

为面板用户设置2FA二次验证码以增加面板安全性

3. 国内源设置

设置国内源,更快更流畅的进行更新

4. 存储模式基本了解

概述ProxmoxVE下存储的基本关系

1. 面板SSL证书配置

面板SSL证书配置目的为了公网访问时候的数据传输安全,但前提你需要拥有自己的域名。并听过各种证书机构签发SSL证书,签发的SSL证书有免费版、付费版本。这里默认你已经准备好了证书,域名也已经正确解析。

如不知道如何获取SSL证书可以参考本站的文章:如何免费获取SSL证书

打开Web管理面板 定位到 节点服务器 -> 系统 -> 凭证 点击上传你的SSL证书即可

2. 面板安全设置

密码设置

由于Proxmox VE的面板用户使用的就是Linux系统中的root管理员用户,所以相应的安全配置一定需要配置得当,防止被黑客入侵。

首先 密码强度 非常重要,对于root用户的密码强度建议设置为32位或以上

需注意虽然WebGUI面板中密码登陆支持 大小写字母、数字、字符,这个密码同时也是ssh 宿主机登陆时候的密码,一些字符可能会在ssh 中被转义而造成无法登陆,所以建议使用 大小写字母 +数字的组合。如果你的服务器没有IPMI 远程管理功能,那么密码长度按需选择!毕竟等到出故障到宿主机登陆的时候是需要一个一个输入的

修改密码位置

在WebGUI中可以直接修改密码。

2FA/TFA 二次验证码设置

在设置 2FA/TFA 二次验证码前,需要确定你的ProxmoxVE服务器时间是否正确,如果时间不正确,那么可能面临一些问题。检查时间需要使用Shell命令,直接在WebGUI中找到Shell功能。

输入命令

date-R

判断时间是否正确,如不正确。则需要操作同步时间,从 Proxmox VE 7 开始,chrony被用作默认的 NTP 守护进程。

对于使用 chrony 的系统 : 在/etc/chrony/chrony.conf中指定chrony 使用的NTF服务器 接着在Shell中输入命令:

nano/etc/chrony/chrony.conf

在适当位置加入一下NTP服务器(来自腾讯云NTP)

# User custom
serverntp.tencent.comiburst
serverntp1.tencent.comiburst
serverntp2.tencent.comiburst
serverntp3.tencent.comiburst
serverntp4.tencent.comiburst
serverntp5.tencent.comiburst

然后按 Ctrl + x 保存 并按 y 确定。

重启chrony服务

systemctlrestartchronyd

检查日志以确认正在使用新配置的 NTP 服务器:

journalctl--since-1h-uchrony
...
Aug 26 13:00:09 node1 systemd[1]: Started chrony, an NTP client/server.
Aug 26 13:00:15 node1 chronyd[134]: Selected source 139.199.215.251 (ntp.tencent.com)
Aug 26 13:00:15 node1 chronyd[144]: System clock TAI offset set to 37 seconds
...

已经看到了同步对应服务器的日志,这时候再次用命令确认时间是否正确:

date-R

确认了时间无问题后,就开始添加2FA/TFA 首先你至少需要拥有几款手机App中的一个:

[colum]
[block]
Google Authenticator
[/block]
[block]
1Password
[/block]
[block]
Bitwarden
[/block]
[/clumn]

推荐使用Google Authenticator 或 Bitwarden

  • Authenticator本身就是非常轻量的App只为 2FA/TFA 而生,但注意的是你必须自行备份密钥Key,因为当更换了手机或者恢复了手机之后 是不会有任何之前的配置出现,相当于丢失了所有配置文件。
  • 1Password 是一个付费全端App 是目前最强大的密码管理器之一
  • Bitwarden 是一个开源的全端App 是比较强大的密码管理器,本站有该服务自托管 永久免费。

如你的手机已经准备好 Authenticator,那么就开始配置ProxmoxVE的2FA/TFA

在二次验证中找到 添加-> TOTP

添加一个描述,然后复制密钥存在安全的地方,也可以直接截图保存二维码保存在安全的地方。这些准备工作完成后打开手机端 GoogleAuthenticator 直接扫码,然后把App上生成的验证码数字填写到验证码位置 点击添加,不要超时,如超时 则需要填写最新的验证码。

添加成功后不要着急去测试,接着为二次验证创建一个还原密钥。

还原密钥只会显示一次,一定复制出来之后保存在安全的地方,还原密钥一共有10条。每一行为一条,一条只能用一次。在丢失了Google Authenticator设备的情况下,可以使用另外一个设备扫描上面保存的二维码或者使用这个恢复密钥来进行登陆。

操作完成,退出当前用户。重新登陆 输入账号密码后,弹出二次验证码输入框,输入后才能进去管理。

3. 国内源设置

如果你是个人使用那么需要关闭企业版更新源(付费版源) 否则也不能更新。

mv/etc/apt/sources.list.d/pve-enterprise.list/etc/apt/sources.list.d/pve-enterprise.list.bak

更新debian国内加速及pve非订阅版更新源

mv/etc/apt/sources.list/etc/apt/sources.list.bak
nano/etc/apt/sources.list

# debian source
deb http://mirrors.ustc.edu.cn/debian/ bookworm main non-free non-free-firmware  contrib
deb http://mirrors.ustc.edu.cn/debian/ bookworm-updates main non-free non-free-firmware  contrib
deb http://mirrors.ustc.edu.cn/debian/ bookworm-backports main non-free non-free-firmware  contrib

deb-src http://mirrors.ustc.edu.cn/debian/ bookworm main non-free non-free-firmware  contrib
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-updates main non-free non-free-firmware  contrib
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-backports main non-free non-free-firmware  contrib

deb http://mirrors.ustc.edu.cn/debian-security/ bookworm-security main non-free non-free-firmware  contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ bookworm-security main non-free non-free-firmware  contrib


#ProxmoveVE 8
deb http://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription

deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

deb http://mirrors.aliyun.com/debian-security/ bullseye-security main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main non-free contrib


#ProxmoveVE7
deb http://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription

# debian aliyun source
deb https://mirrors.aliyun.com/debian buster main contrib non-free
deb https://mirrors.aliyun.com/debian buster-updates main contrib non-free
deb https://mirrors.aliyun.com/debian-security buster/updates main contrib non-free

# proxmox source
deb http://mirrors.ustc.edu.cn/proxmox/debian/pve buster pve-no-subscription
# deb http://download.proxmox.com/debian/pve buster pve-no-subscription

Proxmox VE 还需下载秘钥

wgethttp://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bull

源更换好后,就可以进行更新了,更新命令

apt-getupdate-y&&apt-getdist-upgrade-y

upgrade 命令前建议加 dist-

当执行apt-get dist-upgrade时,除了拥有upgrade的全部功能外,dist-upgrade会比upgrade更智能地处理需要更新的软件包的依赖关系

4. 存储模式基本了解

安装后的ProxmoxVE在存储目录下 会有俩个空间:local local-lvm

  • local :更像是一个本地文件夹 存储的东西可以以实体文件的形式展示,比如虚拟机的磁盘在local中是一个文件
  • local-lvm :是LVM-Thin 精简配置 的一个卷空间,里面存放的是虚拟机的磁盘,此时的虚拟机磁盘更像是实体的磁盘并不以文件的形式存在

二者的关系可以从参考这个关系包含表:

物理磁盘(Drive) -> 文件系统(EXT4) -> 精简配置Local-LVM -> 本地文件Local

此处仅做概念延伸,不做深入研究讲解。

俩个空间使用的用途总结大致如下:

local

  • 存放.iso .img 等镜像文件以便安装VM
  • 存储VM的完整备份文件
  • 存储LXC容器的模版文件
  • 存放虚拟机磁盘
  • 存放LXC容器磁盘镜像

local-lvm

  • 存放虚拟机磁盘
  • 存放LXC容器磁盘镜像

从二者的用途范围来看,local 存储方式似乎是一种全能的,是的没错!但是值得注意的是上面说过的关系表,local-lvm 优先于local 从性能上来看也是这样的,所以俩个空间都需要! 你只需要按照用途合理利用起来即可。

⚠️不可取的操作 ⚠️ 删除加大减少默认的 local 或local-lvm 空间,这个操作不可取,不建议去操作!除非您对Linux存储系统的了解与掌握程度足够支撑当你面临因此造成错误或故障时能够顺利解决。其他用户建议保持默认以免发生错误!


转自:安装ProxmoxVE(PVE)并做必要的安全配置

最后修改:2023 年 07 月 28 日
如果我的文章帮到你了,欢迎随意赞赏