There are several approaches, as usual. And
@Dunuin is right, as usual
Probably you have a Homelab. I do it this way:
- my "main" PBS is installed bare metal parallel to PVE. So this hardware is an additional cluster member. It is not meant to run any VMs but exclusively PBS. Nevertheless I gain some advantages like more stable quota and the possibility to migrate some LXC/VMs to this machine. This one runs 24*7.
- additionally I have PBS's which are turned on only once a week respectively once a month. One is "synced" off the primary, another PBS gets fully independent backups. This is old hardware with relatively high electricity consumption - while being ideal for this job as it runs only a few hours per week/month.
This is my homelab, so I opted for low energy: compute nodes are on MinisForum devices, the mentioned "additional node" is an ODROID...
YMMV!
Unfortunately you always have to cut some corners in a homelab.
The problem with PBS virtualized on a PVE or even bare metal installed parallel to PVE is if a PVE node gets compromised. Once there is a massive vulnerability in PVE and an attacker could get root access you are screwed. If they are unclustered but all on the same PVE version, all are attackable the same way. And even worse with a cluster as getting root access to a single node would allow you root access to all cluster nodes.
Once that PVE host get compromised the attacker gets full access to all the hardware and guests. So he could destroy your guests as well as all your backups of those guests.
The idea of a bare metal PBS (without parallel PVE) would be that this PVE vulnerability may not affect PBS. So even if all your PVEs get compromised and all guests destroyed you still got that uncompromised PBS host with all your backups. You then also set the PBS privileges so PVE nodes are only allowed to create or restore backups but to not be able to prune/delete backups. That way you get ransomware protection and even a compromised PVE host won't be able to destroy your backups.
But I'm doing it similar to UdoB.
PBSs are running as LXCs (wouldn't do that again...I'm just too lazy to turn them into VMs...) on PVE nodes. I make sure no SSH/webUI/IPMI of the PVE nodes is publicly accessible and ideally you also isolate PVE management on a separate network so even a compromised client in your LAN or guestOS won't be able to access the PVE management. So hopefully the PVE hosts won't get compromised in the first place. And one of my PVE nodes is only for backup purposes and only running once per week. So when a PVE nodes would get compromized it's hopefully on those days where the PVE node with the backups is powered down and not attackable.
My two PBS LXCs sync each other so I got 2 local copies of all backups and one of those copies isn't pruneable/deleteable by the PVE nodes.
Then there is a third PBS that is offsite where a third backup of the most important guests is stored.
While not that save, running PBS virtualized (or bare metal parallel to PVE) got some big advantages if you are on a low budget:
- saves space as you don't need to find some room for an additional server
- saves electricity if you run it on a PVE that is running 24/7 anyway instead of running an additional dedicated PBS 24/7
- PBS is great for backing up VMs and LXCs but lacking clients to backup other devices. So for backing up your Win Gaming PCs, Win/Mac Laptops, Smartphones, Tablets, ... you probably want to host some additional backup solutions like Bacula, Veeam, UrBackup, ... or simply a NAS for FTP/Rsync/SMB/NFS/Syncthing/Nextcloud to sync your data to. Here it comes very handy to run a PVE with all those things virtualized so all of that can share the same hardware and disks as backup storage.
- when running PBS virtualized (or bare metal in parallel to PVE) the backups might be way faster as when PVE backing up to the PBS on the same server the packets don't have to leave the server so you are only limited by your CPU and storage performance and not bottlenecked by the NIC.
- when running PBS virtualized (or bare metal in parallel to PVE) and any of your other PVE nodes will fail, you can temporarily restore your guests locally while you fix the broken PVE node. Not that important when running a cluster. But think of the case where you can only afford 2 servers. "PVE A running all guests + PBS" or "PVE A running all guests + PVE B with no guests except for a PBS VM". In the first case, if PVE A would fail you would be pretty screwed and you got no way to run your important services until you fix that single PVE node. In the second case you could restore your daily backups from the PBS VM to the empty PVE B node and later move them to PVE A once it got fixed. This is also the reason why I over-dimensioned my PVE node which I only use for storing backups. It doesn't need all that RAM and CPU power but nice to have it so I could temporarily restore several VMs there.
- you should test your backups. When running PBS virtualized (or bare metal in parallel to PVE) you can do some fast local restores to an isolated subnet on the same host using another VMID, test if the restored guest is working as expected and destroy it again without affecting any of the other PVE nodes.
- its not that great to put all your bets on the same horse. So maybe you want to store some additional VZDump backups on a NFS/SMB share in case there is a major bug in PBS. So even when losing all your PBS backups there are some old VZDump backups as a last resort. Here it then also would be handy to have a NAS and PBS virtualized on the same server. Otherwise you would need to set up a SMB/NFS server yourself via CLI on a bare metal PBS. This then again would make user error more likely and you never know if your changes might negatively affect your PBS installation.