Firstly this is for hobby coding projects, so I don't need server-grade hardware etc. That doesn't mean I can in any way shape or form countenance losing any data, just that it doesn't matter if things are offline for a few hours/days if necessary while I perform a recovery!
My current setup is that everything is on a homebuilt server, built using high-end but consumer-grade components. By everything, I mean my main servers/apps I rely on every day, which are:
- Gitea for VCS
- TeamCity for CI
- MySQL for both Gitea and TeamCity
- MSVC/clang/etc for TeamCity BuildAgent
Everything works well, and I run an over-elaborate backup system consisting of:
- Nightly Macrium Reflect backup of the whole system saved to to local external SSD
- Nightly Macrium Reflect backup of the whole system saved to Synology NAS drive
- Nightly C2 backup of system to Synology cloud
- Scripts to manually backup Gitea and TeamCity to the NAS
- Synology Hyper backup to backup the backups stored on the NAS to the cloud
The idea is in the event of a failure, I'd have a few options, with the data in various places. So far it hasn't happened, but I know that when this system eventually fails, although I have everything backed-up, it's not going to be an instant process depending on what has failed, as first I will have to fix/replace the hardware and second restore to it in some way. If I end up having to replace the hardware then maybe I'll run into trouble with at least the image-based backups. In the meantime, I won't be able to do anything else at all.
So I started researching and looking around and trying to understand how others are setting up their home dev environments, which is how I stumbled across ProxMox.
So my plan is this:
- Set up a 4 x ProxMox Nodes cluster, based on the latest Intel NUC 13 Pro boxes, all four with identical (and on the generous-side, i.e. 64GB RAM, 2TB SSD) hardware.
- In normal use, each Node hosts 1 x VM, split as above (Gitea, TeamCity, MySQL, Building)
- Use ProxMox backup for a nightly backup of every VM to the NAS (and perhaps also to a local SSD)
- Synology Hyper backup to backup the VM backups stored on the NAS to the cloud
The idea being that if one of the Node fails, I can just really quickly restore the corresponding VM from the NAS drive onto another node. Yes this might temporarily degrade performance a little, but by my calculations/experiences with the software I am using, I will already have enough processing/memory/hard disk space "headroom". I'd then fix/replace the failed node and when it's back up just transfer the VM back onto it, which I understand is a simple function.
A few things I've considered and discounted so far:
I am not going to bother with RAID on the NUCs; my existing server has RAID because it is a single point of failure so I wanted to reduce its chances of failing, but if one of these ProxMox nodes fail then I always have the other ones. So this is already my redundancy.
I'm not bothered about going down the HA route, as this is my first experience with ProxMox and although I've read some discussion about using the NUC thunderbolt to create a secondary network in conjunction with shared storage, I don't think HA is necessary for me and also I don't want to jump before I can walk. I feel like I should get a basic knowledge of ProxMox before overcomplicating things. At the same time, it's nice to know HA is an option for the future.
The OS I will be using on each VM is Windows 11. I found this tutorial which seems to be recent enough to be worthwhile and seems to highlight a few things specific to installing Windows on a Proxmox node: https://www.wundertech.net/how-to-install-windows-11-on-proxmox/
Before completely buying into this though, I am going to install Proxmox on one NUC and mess about and get a feel for whether it's right for me.
Does all this sound like a sensible approach and is there anything obvious I am missing/overlooking with my proposed setup?
My current setup is that everything is on a homebuilt server, built using high-end but consumer-grade components. By everything, I mean my main servers/apps I rely on every day, which are:
- Gitea for VCS
- TeamCity for CI
- MySQL for both Gitea and TeamCity
- MSVC/clang/etc for TeamCity BuildAgent
Everything works well, and I run an over-elaborate backup system consisting of:
- Nightly Macrium Reflect backup of the whole system saved to to local external SSD
- Nightly Macrium Reflect backup of the whole system saved to Synology NAS drive
- Nightly C2 backup of system to Synology cloud
- Scripts to manually backup Gitea and TeamCity to the NAS
- Synology Hyper backup to backup the backups stored on the NAS to the cloud
The idea is in the event of a failure, I'd have a few options, with the data in various places. So far it hasn't happened, but I know that when this system eventually fails, although I have everything backed-up, it's not going to be an instant process depending on what has failed, as first I will have to fix/replace the hardware and second restore to it in some way. If I end up having to replace the hardware then maybe I'll run into trouble with at least the image-based backups. In the meantime, I won't be able to do anything else at all.
So I started researching and looking around and trying to understand how others are setting up their home dev environments, which is how I stumbled across ProxMox.
So my plan is this:
- Set up a 4 x ProxMox Nodes cluster, based on the latest Intel NUC 13 Pro boxes, all four with identical (and on the generous-side, i.e. 64GB RAM, 2TB SSD) hardware.
- In normal use, each Node hosts 1 x VM, split as above (Gitea, TeamCity, MySQL, Building)
- Use ProxMox backup for a nightly backup of every VM to the NAS (and perhaps also to a local SSD)
- Synology Hyper backup to backup the VM backups stored on the NAS to the cloud
The idea being that if one of the Node fails, I can just really quickly restore the corresponding VM from the NAS drive onto another node. Yes this might temporarily degrade performance a little, but by my calculations/experiences with the software I am using, I will already have enough processing/memory/hard disk space "headroom". I'd then fix/replace the failed node and when it's back up just transfer the VM back onto it, which I understand is a simple function.
A few things I've considered and discounted so far:
I am not going to bother with RAID on the NUCs; my existing server has RAID because it is a single point of failure so I wanted to reduce its chances of failing, but if one of these ProxMox nodes fail then I always have the other ones. So this is already my redundancy.
I'm not bothered about going down the HA route, as this is my first experience with ProxMox and although I've read some discussion about using the NUC thunderbolt to create a secondary network in conjunction with shared storage, I don't think HA is necessary for me and also I don't want to jump before I can walk. I feel like I should get a basic knowledge of ProxMox before overcomplicating things. At the same time, it's nice to know HA is an option for the future.
The OS I will be using on each VM is Windows 11. I found this tutorial which seems to be recent enough to be worthwhile and seems to highlight a few things specific to installing Windows on a Proxmox node: https://www.wundertech.net/how-to-install-windows-11-on-proxmox/
Before completely buying into this though, I am going to install Proxmox on one NUC and mess about and get a feel for whether it's right for me.
Does all this sound like a sensible approach and is there anything obvious I am missing/overlooking with my proposed setup?
Last edited: