Many IT professionals and enthusiasts operate one or more private servers at home for learning new things and improving their skillset. Whether it's building networks, applications or learning about DNS, proxies, programming or even more advanced topics such as Kubernetes, Docker and DevOps.
Usually, the biggest question that arises for starters is what type of server do I need and have to use. They often know their use cases and what they want to establish with a server, but are unsure about the performance requirements and options available. Shall I use my current computer as server? What about cloud instances? Is a Raspberry Pi sufficient or do I need more expensive, maybe professional hardware?
What Server Options Exist
Usually, the following options of running a server come up:
- Spawning local virtual machines using VMWare or Virtualbox on your personal computer;
- Spawning a cloud instance or VPS on one of the many providers such as Amazon AWS, Microsoft Azure, Google Cloud, Oracle Cloud, etc.;
- Buying hardware or using spare parts to build a computer to operate your own server at home. Starting from Raspberry Pis to professional business hardware put inside server racks. The sky is the limit.
Using Virtual Machines
Don't understand me wrong, working with local virtual machines is totally fine and the best way to start and test things out. You can build and learn a lot of things doing so and there are hardly any limitations on what you can achieve using VMs. However, spawning several virtual machines gets resource heavy after some time and often requires access to an already powerful computer. Usually, the fun starts with at least 16 GiB of RAM if you plan to run multiple machines conveniently. Less RAM, a very old processor or slow hard disk drives often lead to increased waiting times and a less pleasant experience using VMs. But hey, it always depends on what your plans are. Just start and try it out. If it works, it works. Good for you, but keep on reading.
A big negative aspect of running VMs on your personal computer or laptop may be that your device has to stay on 24/7 to operate your VMs. Otherwise, your virtual machines will power off and your services and applications are offline. Your so called server is DEAD. Not to speak about the electricity bill of letting a regular PC running 24/7 as well as the reduced smoothness when you have to use the computer for regular work, Amazon shopping etc. besides having multiple VMs running in the background. Maybe there are better alternatives?
Using Cloud Computing
Going into the cloud has many advantages. First of all, you are going to learn the various cloud panels and consoles of famous companies like Amazon, Google, Microsoft, Oracle and many more. Additionally, cloud instances can scale up or down to your needs and financial resources. You need a beefy server? Just select the beefy EC2 instance in the AWS console. You just need a small server to test out Ubuntu OS or running some commands? Let's use Oracle's free tier program to spawn a totally free cloud instance or multiple of them. The cloud has what you need and ensures a very high reliability. Bonus points for not hearing any fans, not increasing the ambient temperature during heavy load in your home and the ability to just terminate the instance if you don't need it anymore. No reselling, no spare parts laying around, no hardware that can brick.
However, the main disadvantage may be the need to monitor your costs. In comparison of the rare case of only needing and using a free tier instance, which won't produce any real costs ever, you'll usually end up paying for the services you consume. Ever read about people that forgot to terminate their test instance and received a multi thousand dollar bill by Amazon or Microsoft? Yep, that's not what we want. Especially not as self-hosting beginner in the cloud. Furthermore, paying for stuff in the cloud is like renting your flat. Ultimately, you'll never be the owner despite monthly payments.
Moreover, some people just like walking up to a physical hardware server to see what's going on. See the rack blinking, feel the temperature increase during loads, hear the blasting sound of rotating HDDs. Okay, let's stop here. No one wants to hear HDDs anymore. But not gonna lie, connecting an HDMI cable and watching the boot POST messages is something cool. Or just learning about hardware, how to replace or upgrade parts of your server or simply securing the BIOS with a strong password.
The cloud is definitely very cool and offers many great deals to get your hands dirty. However, always remember that your data is stored and processed on a foreign computer. The organizational and technical security measures of the well-known cloud vendors is considered very high and state-of-the-art. Something you'll be never able to put up by your own when running some VMs on your personal computer or operating some form of server(s) at home. No protection against theft, outage, natural disasters and usually nothing like disaster recovery, bio-metric access controls, monitoring systems with thermal cameras and so on.
Using Own Hardware - Single Board Computers
In order to operate an own server many folks begin by buying a Raspberry Pi or alternative single-board computers (SBC) like Odroid or Banana Pi. These hardware devices are great! They have a very low power consumption (about 2-5 Watt), but also enough power to get your first projects started. Learning about Linux, installing an OS and drivers or just starting scripting with a new language such as Python, Golang or Ruby. A Raspberry Pi 4 is usually a great learning partner.
Raspberry Pi 4 (2GB - 8GB)
Raspberry Pi is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned towards the promotion of teaching basic computer science in schools and in developing countries.
I personally also started my self-hosting route with a Raspberry Pi 2B+. Later on I upgraded to a more powerful Raspberry Pi 4 with 8 GiB of RAM and finally full Gigabit Ethernet. I ran up to 25 docker containers with various applications, services and tools. It definitely pushed my skills and knowledge without draining my wallet or better said the hard earned money of my parents at that time by costly electricity bills.
I'd always recommend buying such single-board computers from Raspberry, Odroid and so on. There are many great models with their advantages and disadvantages. But if you are a beginner and unsure whether a RPi4 can put up with your ideas of self-hosting, just buy one! It will be fun and a great accompany during your journey of becoming the next IT expert. Unfortunately, due to the current supply bottlenecks, Raspberry Pis are kinda rare and the price went up a lot.
Using Own Hardware - NAS Systems
Another way would be to purchase a ready-made NAS solution from Synology or other vendors, which provides a great storage solution and often comes with additional great software. Depending which vendor you choose, you may get shell access to the underlying operating system or can use the built-in software center to install additional things like the Docker engine and Portainer.
Another great way of getting your hands dirty by using a polished NAS solution as your personal server.
Synology NAS Solutions
Private cloud solution designed for easy data management, secure sharing, and more.
However, access to such NAS systems is often limited and you cannot just install whatever you like as it is for virtual machines or on one of your cloud instances. You are kinda bound to the software stack provided by the NAS vendor and must hope for improvements and features like Docker etc. Furthermore, NAS systems are often less powerful than a regular Raspberry Pi 4 and can get expensive real quick.
Using Own Hardware - Consumer Hardware and SFF/Tiny/Micro
Finally, there is the way of purchasing regular consumer hardware components to build your own server. From mainboard, to a processor (CPU) with memory (RAM), storage (HDD/SSD/NVME) and a graphics card (GPU). You'll build your own computer which will act as server, staying on 24/7, not being your personal desktop computer for daily work or shopping at Amazon.com. Being it spare or used parts or even completely new components. You are free to select your choice of hardware components and learn about assembling a real computer. How awesome!
Big disadvantage is often power consumption and overall the act of finding the right parts. What works together, how to assemble the parts, where to locate the desktop tower in your flat without disturbing others or yourself by fan noise and heat.
However, you may follow a video like this though to build a power efficient server:
Alternatively, some folks watch out for SFF/tiny/micro computer models that won't take much physical space, are more silent and won't consume a lot of energy. They often end up buying a tiny server by Lenovo, a micro server by Dell or find the NUC series by Intel.
The NUC series by Intel really look great but are also kinda expensive if you want a recent model with a decent power (i5 or i7 CPU). I remember those models starting at $700 and above. Additionally, due to the compact form factor you will only be able to put one SSD or a single 2.5" HDD into the case of an Intel NUC. This may be sufficient for some use cases and people but does not allow for raid configurations or very large storage setups (talking about 16 TiB data graves).
Intel® NUC Kits, Mini PCs and Elements give you the tools for innovative designs—from business productivity to visual solutions and extreme gaming.
Therefore, buying a server of Dell's Optiplex Micro or Lenovo's Tiny series is often the better choice. You can find many great deals on eBay etc. Watch out for Dell Optiplex Micro 3050 or Lenovo Tiny M700 SFF servers. They can only fit one hard drive usually, but are also very compact and consume a reasonable amount of energy (between 10 and 20 Watt on idle).
Lenovo ThinkCentre M700 Tiny
Tiny Desktop PC i5 6500T 8GB 512GB SSD Win10 Refurbished
Dell OptiPlex 3050 Micro
Intel Core i5-7500T, 8GB DDR4, 256GB SSD, Windows 10 Pro
Here comes my personal game changer. Not the best for your wallet, not the best for every selfhoster, but personally the best for people loving the compact form factor of NUCs with a lot of power and a low energy demand.
The gorgeous HM90 EliteMini NUC by Minisforum with many cool features such as:
- Brilliant design and compact form factor alike to Intel's NUC series;
- Low power consumption of about 10-15 Watt (idle);
- Powerful hardware components to overcome heavy loads and tasks;
- Ability to store 1 NVME SSD onboard and up to two additional 2.5" SSDs or HDDs for RAID configurations in the casing cover. Usually, many tiny or micro servers only allow for a single hard drive, not multiple ones;
- Comes with two NICs. 1x 2.5 Gigabit and one regular Gigabit Ethernet;
- Supports various operating systems out of the box such as Windows 10, Proxmox, Ubuntu and many more. Contains a TPM chip to support Windows 11 too!
Minisforum EliteMini HM90
Minisforum HM90 is a high performance mini PC powered by AMD Ryzen ™ 9 4900H processor and AMD Radeon ™ graphics, which opens up a world of computing possibilities for your home, office, or anywhere else you need it.
If you do not want to spend that much amount of money, definitely check out the ThinkCell Tiny models by Lenovo as well as the Optiplex Micro series by Dell - both already mentioned above.
I personally run the
HM90 EliteMini model with the following hardware configuration that drains 13W on idle:
- AMD Ryzen 9 4900H, 8 x 3.3 GHz (16 threads, up to 4.4 GHz)
- Crucial DDR4 RAM 64GB (3200 MHz CL22)
- AMD Radeon™ Graphics, 8 Cores, 1750 MHz
- 2 x WD Red SA500 SATA SSD (2,5")
- 1 x WD Blue SN570 M.2 PCIe NVMe SSD
On the NVME SSD runs the latest Proxmox VE operating system and the two WD Red SA500 NAS SSDs are configured as ZFS mirror in a TrueNAS Core VM. I use LXC containers as well as virtual machines to operate my services - mainly Docker though.
I currently have about 50 Docker containers. You name it, I likely run it <3