I want to set up a home server and take advantage of everything it can offer, specialty privacy.
Raspberry PI, no matter the version, are all quite expensive here in Brazil, so that’s off the table. I’ll go for a regular desktop. But the the requirements for a server that “does it all” remains a mystery to me.
What specs do you guys recommend?
Anything that does the job is good enough. At its core a server is just a regular PC with a dedicated purpose and software. Sure, there are specialized hardware better suitable and purpose built, but it’s not a requirement.
I for one prefer 19" rackmount stuff with disk bays in the front, but that’s more of a convenience than anything.
UPS is nice, but it’ll work without it.
I’ve had to deal with the Brazilian computer market and how it’s ridiculously overpriced due to import fees, so in your situation I’d just get any hand-me-down computer. Servers generally don’t require much unless you’re doing something special or intensive.
Get your hands on whatever you can find for free or dirt cheap (laptop or desktop doesn’tmatter), install linux, and you have a basic setup that you can work with. If your use case requires more, then that’s something you can accommodate in the next iteration of your server.
What are you intending to run on this server?
-
If it is just PiHole, you can basically get the weakest computer you can find.
-
If you want lots of storage space, you will need to make sure you have a case and motherboard that will accommodate the drives.
-
If you are running encryption on those drives as well, you will need a CPU more powerful than what comes in a Pi, but nothing crazy.
-
If you are running lots and lots of VMs, you will want lots of RAM. A linux VM will use maybe a few GB each depending on what software each is running internally, a windows vm will use a bit more.
-
If you are doing AI workloads, you will need a graphics card.
-
Take a look at some N100 devices (or N95/N150).
These are a good alternative to RPis. Just be aware some of these are sort of haphazardly assembled so they might have cooling issues or bad power supplies.
Can’t say my Chuwi Larkbox X has any issues (other than missing a few QoL settings in the UEFI).
When I started my media server in 2020 I used e-waste from my building. Had an i7 3770, 16gb ddr3 ram and an rx460 graphics card. I ran jellyfin, ultrasonic and audiobookshelf for 10-15 people with no problem on this hardware. Anything made within the last decade should provide a good starting point for you.
This was almost my gaming PC specs in 2020. Rx580 and 16gb more ram. It’s now my server running jellyfin and immich for my family.
Rx580 was such a workhorse card. Used mine until a year ago and then it went to a friend who’s still using it today.
My Rx580 has basically been on continuously since I bought it in like 2017/18. I used it to mine when I wasn’t gaming until it became unprofitable, then to process sequencing data for my dissertation project while not gaming, and now it’s in my server.
Find out if there are any corporate off-lease machines being sold in your area. USFF machines are frequently used as mini desktops or point of sale computers then sold off for peanuts when warranties are done. Especially look at i3-8xxx generation, as they don’t support windows 11 fully.
How does one find such retired laptops? As an individual hobbyist in the US, would I just monitor eBay, Craigslist, or Facebook?
Yes. EBay and Amazon have a certified refurbished thing with warranties for a little more money, or monitor local classified sites if you can inspect them. I’ve bought a couple off Kijiji here in Canada, which is a bit like Craigslist and Facebook marketplace. The sellers didn’t advertise that they were a business selling off-lease stuff, but you can tell by the number of laptops they post.
A computer. Seriously that’s it. Of course depends on your use case (media servers usually need more than a web host for example)
My current server is just my previous desktop PC hardware. $0 when you repurpose while upgrading your desktop.
The minimum spec is whatever e-waste you can find that still powers on.
My home server has an i3-4160, 10 gigabytes of mis-matched RAM, a ten-year-old 240 GB SSD with 36000 hours on it, and three 1 TB hard drives in a RAID5 array each with ~25000 power-on hours. It runs Proxmox on the metal with a virtualized OPNsense, Nextcloud, and Jellyfin server (plus smaller services). Jank levels are high, but not fatal, and it was mostly free.
This specifically depends on what you want to run.
I’d say grab any unused PC in your home or off the street and it’ll work. Raspberry Pi are good for low wattage so it’s not expensive to run 24/7/365.
The electricity savings would pay for itself over time vs a 10 year old random desktop.
For Linux: Anything Intel 4xxx is fine, later is better obviously. 4GB RAM is OK for one family, 8GB gives enough headroom to host NextCloud for a small office. SSD for operating system makes it snappy as fuck at the terminal but aren’t mandatory, slow drives for storage are fine.
Go wuth what you have. Old laptop? Works! Old desktop? Also works! Old android phone? Might work! (VM/terminal)
If you have a device that can run Linux, start with that. Once you get some usage you can understand if you need an upgrade, and what kind. Maybe you will findout that this old laptop that you had works perfectly and you can sace money on buying a server.
Depends on what you want the server to do. A Minecraft server and a Pihole server have vastly different requirements. As a general rule, any old laptop or desktop will do, think on requirements for your grandma and that should cover most (except gaming servers) needs.
As long as it’s capable of booting into Linux, then you can start building a homelab…
Initially I had a 2-bay Synology NAS, and a Raspberry Pi 3B… It was very modest, but enough to stream media to my TV and run a bunch of different stuff in docker containers.
In my house, computer hardware is handed down. I buy something to upgrade my desktop, and whatever falls off that machine is handed down to my wife or my daughter’s machines, then finally it’s handed down to the server.
At some point my old Core i7-920 ended up in the server. This was plenty to upgrade the server to running Kubernetes with even more stuff, and even software transcoding some media for streaming. Running BTRFS gave me the flexibility to add various used disks over time.
At some point the CPU went bad, so I bought an upgrade for my desktop, and handed my old CPU donown the can, which released an Intel Core i5-2400F for the server. At this point storage and memory started to become the main limiting factor, so I added a PCI SAS card in IT mode to add more disks.
As this point my wife needed a faster CPU, so I bought a newer used CPU for her, and her old Intel Core i7-3770 was handed down to the server. That gave quite a boost in raw CPU power.
I ended up with a spare Intel Core i5-7600 because the first motherboard I bought for my wife was dead, so I looked up and found that for very cheap I could buy a motherboard to match, so I upgraded the server which opened up proper hardware transcoding.
I have since added 2 Intel NUCs to have a highly available control plane for my cluster.
This is where my server is at right now, and it’s way beyond sufficient for the media streaming, photo library, various game servers, a lot of self-hosted smart home stuff, and all sorts of other random bits and pieces I want to run.
My suggestion would be to start out by finding the cheapest possible option, and then learn what your needs are.
What do you want your server to do? What software do you want to run? What hardware do you want to connect to it? All of this will evolve as you start using your server more and more, and you will learn what you need to buy to achieve what you want to.
How complex is migrating the whole thing for a the new setup when upgrading? The best I can get with my current budget probably resembles the “quality” of your second server(first upgrade).
While on your firstly upgraded server, were there limitations to any of your self-hosting desires? Things that were only possible on your following upgrade? That’s my main concern. I’m probably over thinking things, it will be my first home server, I’ll probably stick the simple stuff at first.
Right now I want to host movies, photos, automatic backups, files in general. Also use it for the smart home that I’m slowly putting together, basic stuff… for starters.
The only true “roadblock” I have experienced was when running on the raspberry pi, where the CPU was too slow to do any transcoding at all, and the memory was too small and unupgradable to be able to run much at the same time.
As soon as I had migrated to a proper desktop (the i7-920) I could run basically everything I would regularly want. And from then on it was a piece of cake upgrading. Shut the machine down, unplug, swap the parts, plug in, turn on. Linux has happily booted up with no trouble with the new hardware.
Since my first server was a classic bios, and the later machines was UEFI, then that step required a reinstall… But after the reinstall, I actually just copied all the contents of the root partition over, and it just worked.
The main limiting factors for me has been the amount of memory, the amount of SATA connectors for disks, and whether the hardware supported hardware transcoding.
For memory, ensure the motherboard has 4 sockets for memory, that makes it easy to start out with a bit of memory and upgrade later. For example you could start out with 2x 4GB sticks for a total of 8GB, and then later when you feel like you need more, you buy 2x 8GB sticks. Now you have a total of 24 GB.
For SATA ports, ensure the motherboard has enough ports for your needs, and I would also strongly recommend looking for a motherboard with at least 2 PCIe 16x slots, as that will allow you too add many more SATA or SAS ports via a SAS card.
Hardware encoding is far from a must. It’s only really necessary if you have a lot of media in unsupported formats by the client devices. 95% of my library is h.264 in 1080p, which is supported on pretty much everything, so it will play directly and not require any transcoding. Most 1080p media is encoded in h.264, so it’s usually a non-issue. 4k media however often come in HEVC (h.265), which many devices do not support. These files will require transcoding to be playable on devices that do not support it, but a CPU can still transcode it using “software transcoding”, it’s just much slower and less responsive. So I would consider it a nice convenience, but definitely not a must, and it depends entirely on the encoding of the media library.
EDIT: Oh, I just remembered… Beware of non-standard hardware. For example motherboards from Dell and IBM/Lenovo. These often come with non-standard fan mounts and headers, which means you can’t replace the fans. They also often have non-standard power supplies, in non-standard form factors, which means that if the power supply dies, it’s nearly impossibly to replace, and when you upgrade your motherboard you are likely forced to replace the power supply as well, and since the size of the power supply isn’t standard, the new power supply will not fix in the case… Many of their motherboards also have non-standard mounts for the motherboards, which means that you are forced to replace the case when upgrading the motherboard… You can often find companies selling their old workstations for dirt-cheap, which can be a great way to get started, but often these workstations are so non-standard that you practically can’t upgrade them… Often the only standard components in these are harddrives, SSDs, optical disc drives, memory, and any installed PCIe cards.
Thanks for the response, it pretty much answers all questions I had in mind (I think…😅).
If you have an old android phone, then you can repurpose it into a Linux server.
Or an old computer. But you probably don’t need to buy anything to get started.
If the size and low power consumption of the Pi are what appeal to you, you can try a getting a used thin client. Lots of suggestions and specs here: http://parkytowers.me.uk/
Basically none. Grab whatever device you have on hand and install Docker on it.