Hi, I am currently in the process of planning a home server as well. Here are some of my ideas and thoughts, hopefully they are helpful to you and others.
Disclaimer: I am a beginner myself. Please let me know if something is incorrect, might otherwise be problematic or if there is simply a better way to do something.
How should it be done?
I thought about different ways to do it. In the end, I came to the conclusion that, especially considering that electricity costs upwards of € 0.30 ($ 0.35) in Germany, I will try to consolidate as much as possible in one machine and use Proxmox as a host OS. At least in my situation, I think that it is better to spend a bit more on one well-specked machine that can run multiple VMs, instead of spending money on multiple machines that have old and power hungry hardware.
However, in my opinion, Proxmox is the way to go anyway. I think it is a “skill” worth learning, you can easily set up VMs for testing purposes, and it is relatively easy and convenient to manage your VMs via the web user interface.
In Proxmox, I think I will probably create a single VM for every major service I want to run. This should make everything more resilient, since a misconfiguration or some other issue on one VM does not affect the others (of course, running everything on only one machine is also a risk). If you use distros that are light on resources (especially without a desktop environment if possible), you also should not run into performance issues without a Threadripper CPU.
If you do not want to use Proxmox and instead use multiple physical machines, I suggest getting some Raspberry Pi 4’s (the 2 GB RAM base model should be fine for most use cases). I found this YouTube video to be a good tutorial on how to use a Pi as a basic NAS.
I also considered Docker, but each port can only be assigned to one Docker container, which is troublesome if multiple Docker containers use, for example, port 80 for http. This website describes the problem and how to solve it, but I still decided that I am going to use Proxmox for my server, also because Proxmox has support for Linux Containers (LXC).
What is the server supposed to do/be?
1. Router
I am currently using a Rasberry Pi 4 4 GB as a router, with a USB dongle as second NIC. Alternatively, you could also create a pfSense VM on Proxmox (I think this tutorial might be helpful).
If you want, I can also provide instructions on how I set up my Pi as a router (it is surprisingly straightforward if you just want NAT and DHCP).
2. NAS
I am planning to use an OpenMediaVault (OMV) VM on Proxmox. It can not only do RAID, but also supports ZFS and it can create volumes that are recognized by macOS as Time Machine backup volumes. OMV also comes with support for Docker containers (this way, you could run some or all of the services you want in Docker containers).
3. Private Cloud
I think I will set up Nextcloud on a VM in Proxmox. If you do not have a static IP address, you will need to configure DynDNS to access your cloud from outside of your network.
4. Other stuff
Besides this, I have some long-term goals (all as VMs on Proxmox):
- MotionEyeOS
- PLEX
- Home Assistant with Grafana plugin (for lights and sensors for temperature, humidity and other air quality metrics like CO2)
- Windows 10 VM with GPU passthrough for gaming
–42069