I bought my own second hand server, a Siemens Fujitsu RX200 S6, with 96 GB of RAM and 4.2 TB of storage. I bought this since i had been busy with Raspberry Pi's for a while but this entire server was almost the same price as a Raspberry Pi, so I figured I could buy a real server. Now I have more computing power than with a Raspberry Pi for roughly the same price. Below I will showcase all virtual machines I am running on my server and explain what they do. This project shows how sufficient I am when dealing with managing multiple services on the same server.
As you can see in the image above, thats the server, it works perfectly fine. I have been using it for a while now and I am really happy with it. The server is running 24/7 and I have not had any issues with it so far.
So to start it all off, the main operating system running on the server is ProxMox, ProxMox is a virtualization platform designed for the provisioning of hyper-converged infrastructure. Basically what this means is that ProxMox is an Operating system that is really good at running virtual machines and containers. I chose for ProxMox since it is easier to manage all my virtual machines in and gives you a easy UI to manage all of your machines.
The setup process for proxmox is pretty straight forward, i flashed the proxmox iso file to my USB drive, inserted it into the server, went to the BIOS and made it boot from the USB. After this I followed the installation steps and ProxMox was up and running.
The first container I set up was Pi-Hole, Pi-Hole is a DNS sinkhole that acts as a black hole for advertisements, scam websites and malware/phishing links. This means that when you try to visit a website with malicious links, Pi-Hole will block these links and only show you the content of the website. This is really nice since it speeds up your browsing experience and makes sure you are not bothered by malicious links.
As you can see in the screenshot above Pi-Hole blocks about 25% of all domain names visited, meaning it saves me and my family from a lot of malicious links or ads. To set up the Pi-Hole I created a container within ProxMox, the container runs Debian Linux. After this I ran the installation commands listed on the Pi-Hole website. After this I added the lists of malicious domain names so Pi-Hole can block these.
The second thing I set up was a Virtual machine for Home Assistant, Home Assistant is a home automation platform that focuses on privacy and local control. This means that all your data is stored locally and not in the cloud, so you don't have to worry about your data being sold to third parties. Home Assistant can be used to control all your smart devices, like lights, cameras, thermostats and more. I mainly use it to control our electric car charging, so it starts charging automatically start charging when the solar panels are producing enough energy. This way we can charge our car for free and save a lot of money on our electricity bill.
To set up Home Assistant, I created a virtual machine inside of ProxMox running the Homeassistant OS, the setup process is pretty straight forward, after the installation I started adding all smart devices we have around the house. I also made automations so that our car charges on solar energy automatically and much more. I will be adding a seperate tab on my projects page explaining what I added to Home Assistant.
The next virtual machine I set up was a virtual machine running Debian Linux with Nginx Proxy Manager installed on it, Nginx Proxy Manager is a reverse proxy that allows you to manage your web applications and services. This means that you can run multiple web applications on the same server and access them through different domain names. I use this to host my website, so I can access it through my own domain name instead of the IP address of my server. This is why you can access this site right now.
After installing Nginx proxy manager I configured all domain names I have registered to the appropriate domain names. After this I started programming this website.
The next virtual machine I set up was Grafana dashboard, in which I can see all values of my server, in case everything ever goes wrong I can determine on which factor this depended.
Grafana uses Prometheus connected to node_exporter running on the server itself (not in a VM), to extract all metrics from the server.
The next virtual machine I set up was TrueNAS, TrueNAS is a free and open-source operating system that is designed for network-attached storage (NAS) devices. I use this to store all my files, so I don't have to worry about losing them if my computer crashes or if I lose my USB drive. You can see TrueNAS as a locally hosted cloud storage, so you can access your files from anywhere in the world.
My server has 4.2 TB of storage space in total of which 600GB for all operating systems running in RAID 1. The remainder of my storage is allocated to my NAS, this is configured in RAID 6. This RAID level makes sure I still am able to use most of my storage space while being able to lose 1 disk and not lose any data.