Skip to content

A glance at Proxmox VE

A glance at Proxmox VE

由于某些原因我获得了一台独服(Dedicated Server),那我正好来试试早有耳闻的 PVE 吧。

感觉这界面跟飞机仪表盘一样(x

我为什么要尝试 PVE

其实是突然有了两三个小项目,我想把他们部署在服务器上,又想把环境隔离开。 众所周知 KVM 里面是能装 Docker 的,我就正好想试一下。

那有人可能要问了,为什么不直接多搞几个 Docker Compose 呢? 我也不知道,我编不下去了。。

初装 PVE

这台服务器有两块盘,设计应该是正好组个 RAID 1,于是便稀里糊涂分了个区。

File system Mount point RAID Usable size Space used
ext4 /boot 1 1.0 GiB 2.0 GiB
ext4 / 1 40 GiB 80 GiB
swap swap - 2 x 1.0 GiB 2.0 GiB
ext4 /var/lib/vz 1 160 GiB 320 GiB

其实这个配置是比较接近服务商的推荐配置的,不过我也不太理解为什么开这么小的 swap, 查了半天说是可以通过 swap 看负载咋样。感觉挺牵强的,但我也没管了。反正不是我的盘。

装完了以后就出现了一堆奇奇怪怪的事情,先是我一打开 WebUI 他就说不安全,导致垃圾 Chrome 不让我记住密码, 好吧我也能理解。所以我就先 SSH 上去装了个 Caddy,直接反代,然后就清爽多了。 (哦,这里还需要去设置一下 rDNS,那要不做个邮局正好

pve.example.com {
    reverse_proxy https://127.0.0.1:8006 {
        transport http {
            tls_insecure_skip_verify
        }
    }
}

不过这个打开也挺诡异的,一上来就一个弹窗吓我一跳,这个 PVE 还要收费的吗。

You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.

查了半天发现是仓库收费,这太神秘了。按照网上的教程改了半天,最后我也没有解决掉这个弹窗。开摆了。

配置网络

新建虚拟机倒不是特别复杂,对着教程一步步来就行,倒是我一装好就遇到了网络问题。 这里的虚拟机的网络居然全都要自己配,吓哭了。

一般的话会用 NAT 的形式让虚拟机能访问外网,这里需要自己创建一个局域网

vim /etc/network/interfaces.d/vmbr1
ifup vmbr1

其中写入

auto vmbr1
iface vmbr1 inet static
    address 10.0.0.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up   iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE

再改虚拟机里的配置 /etc/network/interfaces

auto lo
iface lo inet loopback

allow-hotplug ens18
iface ens18 inet static
    address 10.0.0.2/24
    gateway 10.0.0.1
    dns-nameservers 8.8.8.8 1.1.1.1
systemctl restart networking

结果还是连不上网,一怒之下我怒了一下,把防火墙全关了,结果还是没用,不得不寻求 AI 的帮助。 他跟我说我网卡选错了,但我在 WebUI 里面怎么也改不了,最后非常难绷的把配置文件打开改了..

vim /etc/pve/qemu-server/100.conf

手动把 vmbr0 改成 vmbr1,然后强制关机,重新开机后网络就正常了,太神秘了这个

做一个网关 LXC

不过现在就会遇到一个糟糕的问题,我要怎么让内网的服务都能被外网访问呢,那肯定是个人都知道我要反代出来, 直接在宿主机上装 Nginx/Caddy 对吧。可以,但我还是秉持了这个分工明确的原则,非常迫切的想把他们拆开, ~把简单的问题复杂化,以此满足我折腾的欲望。~所以最终我选择专门拿一个 LXC 来放 Caddy 网关。

那么该做什么也就很明了了,我们直接把 80 和 443 都完全绑到网关去

auto vmbr1
iface vmbr1 inet static
    address 10.0.0.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
    post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
    post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2:443
    post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2:443

然后就可以愉快的写 Caddy 了

pve.example.com {
    reverse_proxy https://10.0.0.1:8006 {
        transport http {
            tls_insecure_skip_verify
        }
    }
}
app.example.com {
    reverse_proxy http://10.0.0.3:8080
}

后记

最后跑的项目也没啥人用,服务器也正好过期了,对 PVE 的初体验也算是结束了。不得不说这个 PVE 和 Arch 挺像的, 不知道是不是我的操作问题,都有一大堆需要自己完成的东西。你可以想象我对着那个难用的 VNC 窗口敲了好久,还是在火车上..

下次不用这个了,如果有下次的话。我可能会试试 Incus 吧。

Comments