PVE 8 + Virtualizor: 功能比VF多,有开心版,9刀无限制,更好的技术支持 Debian 12 + Virtfusion: 简单易用,暂无开心版,18刀无限制,小团队支持
1. 基本环境部署
如何使用宝塔本文不会介绍,登录到宝塔管理页面进行基本的安全设置后,先下载Linux工具箱应用,添加SWAP。
接着安装LNMP环境,我的设置是:
Nginx 1.26.3/MySQL 8.0.36/PHP 8.1.31/phpMyAdmin 5.1
如果配置较低仅建议使用php 7.4和mysql 5.7的搭配。
雷池需要使用docker,在宝塔选择docker页面会提示没有安装,现在安装它(默认设置即可)。完成后到官网执行自动安装脚本。
1.1 宝塔PHP设置
首先在“禁用函数”删除
putenv
,然后安装扩展ionCube
。1.2 MySQL设置
由于内存有限,在优化方案手动选择一个相对合适的方案来限制内存占用。
如果了解参数作用可以自行修改。
2. 安装WHMCS
安装文件从官网获取,我选择的是V8.12.0,直链:https://s3.amazonaws.com/releases.whmcs.com/v2/pkgs/whmcs-8.12.0-release.1.zip
开心版License的官网:http://whmcsfull.com/ ,直链http://whmcsfull.com/download.whmcs.com/license/License8120.php
WHMCS的版本取决于开心版支持到什么。
2.1 创建站点
新建自己的站点顺便把数据库创建了,保存好账户密码,没存也可以在bt中找到。然后删除以下自动创建的文件:
由于宝塔9.4的远程下载没了,本地下载后将WHMCS的zip压缩包上传
接着右键解压,原zip可以删掉释放空间。
2.2 安装开心版License
参考Installation Guide,先进入目录
/vendor/whmcs/whmcs-foundation/lib/
,然后将下载的License8120.php
重命名为License.php
,上传到这个目录下,操作正确会有以下提示,选择覆盖。2.3 安装汉化包
项目地址:https://github.com/hostsoft/whmcs-chinese-lang或https://github.com/Rodots/WHMCS-zh-CN,下载对应版本/admin/lang里的chinese.php,上传到站点目录下相同路径的文件里。也可以直接点新建文件粘贴进去
2.4 设置WHMCS
此时可以访问域名开始设置过程。
系统检查通过即可,如果出现额外问题需自行排查。
接着填入Key和数据库用户名和密码。宝塔的数据库名一般是和用户名相同的,可以到侧边栏“数据库”查看。
接着是基本设置,管理账户的信息要保存好。
接着严格按照步骤操作,第一步删除install目录
第二步是安全操作(也可略过),参考https://go.whmcs.com/22/enhancing-security 和https://hostloc.com/thread-1011706-1-1.html 建议操作前进行备份。
第三步添加计划任务:
在宝塔“计划任务”添加,按说明设置为每五分钟执行一次
手动执行一次查看日志,显示成功后安装完毕。
正确安装后访问
域名/admin
出现登录界面就说明开心版安装成功了。如果whmcs选择8.12.1,license 8.12.0是不会生效的。3. 雷池设置
正常安装好宝塔也会有显示,默认管理端口是9443。
3.1 设置站点SSL
配置好SSL后,将“强制HTTPS”选项关闭。
修改HTTPS端口为8443(不限制,空闲端口都行),http 80不用改。建议全程SSL。
按需设置,无需相同
域名管理那改端口不会把配置中全部修改,需手动。
如果雷池需要同时监听80端口,那么执行以下操作:
- 修改nginx默认监听端口
路径
/www/server/panel/vhost/nginx
下phpfpm_status.conf和0.default.conf文件中将80修改为8080- 重载Nginx配置
- 修改站点配置文件
雷池——防护应用——应用管理,添加应用,只有额外操作后才可以在这里添加80端口。
我个人将其进行了分离。
4. CloudFlare
CF用来CDN和补充雷池WAF社区版没有提供的功能,例如地区限制和缓存。
A,AAAA启用代理,一般情况是正常使用的。SSL/TLS 加密:自动,正确配置SSL会是“完全(严格)”。
WAF可以添加规则限制能访问的国家/地区,例如:
意思是除了HK和TW以外都会阻断访问,可以减少爬虫和恶意访问。添加后可以在事件找到相当多的机器人。
4.0 端口安全说明
在配置好后把宝塔的IP访问关了(绑定自己的域名),端口不要使用CF能够代理的。
4.1 为宝塔添加鉴权访问
接下来的操作是在服务器上进行(非必要,若设置可以迁移到面板控制),可以在网页上创建tunnel,用一键脚本安装:
- 安装cloudflared。
- 接着
cloudflared tunnel login
服务器上操作出来的链接进行登录,选择对应域名。完成后会生成/root/.cloudflared/cert.pem
。
cloudflared tunnel create bt-pannel
创建通道,会在/root/.cloudflared/
下生成一个json,并获得通道id。
cloudflared tunnel route dns bt-pannel tunnel.example.com
创建一个指向通道的子域名。
- 在服务器上创建一个目录,例如
cftunnel
然后
nano config.yml
新文件,改成自己的信息tunnel: bt-pannel(隧道名) credentials-file: /root/.cloudflared/<TUNNEL-ID>.json ingress: - hostname: tunnel.example.com service: http://localhost:宝塔端口 # 必须改成无tls - service: http_status:404
无 TLS 验证选项启用,否则访问全是502。
cloudflared tunnel --config config.yml run bt-pannel
可能会提示ping的警告,但不重要。
下一步在CF网页上操作:
Zero Trust开通服务,Access——策略,添加策略Owner Only:
添加策略Deny All Others:
接着Access——应用程序,添加应用程序——自托管,策略选择刚新建的。
顺序不能反。
4.2 正确设置的访问
访问URL形如:
https://tunnel.example.com/宝塔安全入口
,即应用程序URL。只有输入了正确的email才能收到验证号码,完成后即可登录宝塔面板。
4.3 类似的添加雷池9443端口
在tunnels的bt-pannel里添加一个主机名指向
https://localhost:9443/
,关闭tls。Access那添加的应用程序“鉴权访问”,添加主机名,子域名保持一致,不需要填路径。
5. 更简单的安全管理内网服务
使用tailscale组网,通过内网访问,将宝塔面板端口和雷池端口在防火墙放行那删除,如此一来公网就不能访问了。
此时需要在宝塔那删掉“绑定域名”,使用内网IP访问。
特别的,CF Tunnel也是组建了类似的网络,不需要公网访问宝塔和雷池端口,都可以关闭。
6. WHMCS安装Virtualizor
6.1 安装
从Virtualizor官方文档 Download 标题下找到模组安装文件链接。下载的
whmcs_v2.zip
上传到文件目录/站点域名/modules/servers/
下解压得到virtualizor
文件夹,然后删除压缩包即可。6.2 检验
进入whmcs管理后台后,右上角小扳手——System Settings——General Settings
然后在左侧栏找到Products/Services——Servers——Add New Server
在Module一栏可选择Virtualizor即安装成功。
7. 在Debian 12中安装PVE 8
目前官方文档仅提供了在Debian 12下的安装教程,Ubuntu等其它系统可能并不建议如此操作,应当使用ISO安装完整的系统。
现在我以DigitalOcean创建虚拟机为例子进行操作。对于实体硬件安装过程仅作参考。
提前说明:PVE管理口开放到公网不是一个明智的选择,应组建内网在安全的条件下进行远程操作。
7.1 获得合适的配置
Virtualizor关于PVE的文档中要求根目录在80-100G,SWAP 4G+,在DO创建的实例配置如下,其中额外的100G是用于测试创建KVM虚拟机的硬盘。如果硬盘的高可用的,建议选择XFS,如果是灵车二手盘,当断电或死机会非常麻烦,这种情况下EXT4反而是更好的选择(限系统盘,小小鸡LVM或ZFS)。
关于硬盘分区,文档中的Partition Scheme对Storage的要求有清晰说明,加入的新磁盘不要做挂载操作。需要留意的是,Virtualizor仅使用配置好的存储池,它不会自动处理磁盘分区。
补充说明:使用ISO镜像安装能在最开始设置为全局zfs文件系统,并启用raid。实际生产环境不推荐从Debian安装。 将硬盘划分为多个分区也是有效的,当这是为了同时在一张硬盘使用LVM或ZFS等。正常情况下ZFS是对未划分硬盘的做raid。
可以使用
lsblk
或 fdisk -l
查看硬盘分区,现在可以知道是在vda里安装系统,附加卷是sda并且已经挂在到/mnt/。PVE添加可用硬盘需要非挂载的状态
umount /mnt/volume_sgp1_01
文件存储类型的设置一般在PVE中处理
7.2 安装PVE
直接参考文档的说明进行。
echo "deb [arch=amd64]http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
验证哈希
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
输出应该等于
7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87 /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
apt update && apt full-upgrade
无错误开始安装PVE内核
apt install proxmox-default-kernel systemctl reboot
重启后安装必要的包
apt install proxmox-ve postfix open-iscsi chrony
下载完后检查当前系统内核
dpkg --list | grep linux-image
删除现有Debian默认的内核
apt remove linux-image-amd64 'linux-image-6.1*'
用
update-grub
更新GRUB2引导加载器。正常输出如下官方推荐删除
os-prober
包,根据说明按需操作 apt remove os-prober
。再重启后,
apt install net-tools
安装一下网络工具,netstat -tulnp
检查端口状态,可见8006端口已经被pve使用,现在只需要在防火墙端口打开8006就可以管理了。检查当前防火墙规则
iptables -L
简单起见,使用ufw管理,
apt install ufw
。分别执行ufw allow ssh
,ufw allow 8006
,ufw enable
。(之后不要再用ufw管理了,直接用PVE面板里提供的进行配置,避免意外的优先级冲突)到此时可能会发现
https://ip:8006
无法访问,首先检查云防火墙是否开放端口,其次nano /etc/hosts
这里第一行 10.104.0.3 是主机的内网ip,没修改前可能是127.0.1.1,将跟着的hostname改成形如hostname.proxmox.com hostname。PVE安装文档第一个操作部分有解释。改完hosts直接重启。
接着再用
https://ip:8006
访问即可见到界面,此时PVE账户还没创建,需要PAM使用root账户登入。7.3 添加硬盘
无挂载的硬盘sda,擦出磁盘再GPT初始化。
此时这里四种磁盘类型都能显示空盘sda,file/目录就是最基础的ext4或xfs。
存储类型的选择:
ZFS默认支持随着文件使用量动态分配空间,物理空间是固定的。LVM不行,但LVM-Thin可以。
考虑到硬盘性能,我选择不压缩的方案
成功后会显示所添加的硬盘,local根目录主要是放置系统镜像和设置等,这也与virtualizor描述的一致。下图也能发现Debian默认没有LVM池。
至此创建虚拟机时在磁盘部份就可以选择该新的存储设备
7.4 Tailscale组网-安全管理
首先需要将APT企业源关了,不然没法正常安装。
/etc/apt/sources.list.d/pve-enterprise.list
里面的注释掉。完成后就可以把防火墙8006端口规则删去
ufw delete allow 8006
,使用tailscale的内网ip:8006访问。8. 安装 Virtualizor
本文安装环境:Debian 12 —— PVE 8 —— Virtualizor,其它仅作参考。
默认的网卡不需要修改,创建桥接网卡即可。
由官方文档提供的方法进行安装
echo "152.53.53.249 api.virtualizor.com" >> /etc/hosts #锁定hosts sudo chattr +i /etc/hosts
wget -N http://files.virtualizor.com/install.sh chmod 0755 install.sh ./install.sh email=your@email.com kernel=proxmox
静待一段时间,完成安装后保存输出的API和面板入口,最后重启。用root登录
9. 安装 Virtfusion
VF与第7/8独立,需要纯的Debian 12环境。https://docs.virtfusion.com/installation/hypervisor
对于有静态IP的服务器,可以把Control Server和Hypervisor安装到一起,动态IP就需要另外准备一个VPS安装Control Server处理会更好。