Hey guys, I’m new to self-hosting; I’m trying to set up cloud storage to store pics and other content. However, I’m unsure whether to use my old computer, Buy NAS or ResberryPie to set up a home server.
Also, what is the best privacy-friendly OS to use with the home server?
Lastly, do’s and don’ts.
Any help would be appreciated (:
Use docker compose . Like “everyone” uses it. If the service doesn’t have a compose file, request it, or write it yourself as son as you are knowledgable enough.
Use podman as soon as people and services switch to it (you’ll know when the latest tutorials talk about podman instead of docker).
Use ngingx proxy manager or another easy to use reverse proxy.
Don’t think it’s production ready after it was working 2 days. It may be, but it’s unlikely you have enough knowledge how to fix things.
Automatic updates.
Don’t install crap on the system.
This is a good way to get started.
Docker and Docker compose on whatever hardware you want to start on.
Don’t think it’s production ready after it was working 2 days. It may be, but it’s unlikely you have enough knowledge how to fix things.
Most important there. You aren’t building a production system for corporate clients, you’re doing this for fun. Focus on one thing, try to get that one thing running. Toy with it, make it work. Then start on your next thing. Slowly you’ll build up a large system, but it won’t be immediate.
I personally have been working on switching from compose to kubernetes, which is way more advanced than a starter needs - but I’ve been slowly migrating for about 4 weeks now, one service at a time. Just how homelabs are done
What’s the benefit of kubernetes over docker for a home server setup?
For home use? Barely any. You can use multiple computers to spread out your load, which is nice for me because I have about 20ish containers running with differing workloads.
But I’m also a developer who needs to keep up on devops, so it’s mostly a learning thing for me. But I gotta say it’s real nice having everything laid out in a few yaml files that I can tear down and rebuild on a whim
having everything laid out in a few yaml files that I can tear down and rebuild on a whim
Oh absolutely, but for me docker compose already does that. Kubernetes might be a good learning exercise but I don’t think I need load balancing for 1 user, me, on the home network 😅
Some additional benefits also are the management of secrets. In compose you will shove them inside a .ENV file if not directly inside the compose file, while in Kubernetes you can use the secrets resource or even plug in Vault relatively easily. Stateful storage is also better handled. Named volumes are nasty to keep track of, backup and it’s not possible to spread them across multiple devices (as in disks) while bind mounts are insecure in general. Kubernetes provides a storage abstraction which is easier to manage.
Obviously the big advantage comes when you want to run stuff on multiple devices to spread the load (or because the one box is saturated), since with compose you would need completely custom and independent setups.
Finally, I would say that running compose makes it much harder to have a monitoring stack supporting your services, since you will need to do all the plumbing for metrics endpoints yourself. And - very last - you can have admission controllers in Kubernetes that prevent certain configuration (e.g. Kyverno with a bunch of default policies), while with compose you need to manually vet every compose file and image (for example, to ensure it doesn’t run as root).
That said, compose is perfect to get started and to run stuff on one machine.
Start with hardware you have already, its high likely overkill anyway. If you have CPU that supports quicksync (intel 7th gen or newer iirc) you could remove GPU to reduce power consumption. QuickSync will make streaming easy.
Raspberry pi cant transcode so its not best for media server, but it can direct play so that might not be an issue at all. I upgraded from rpi to desktop PC because I had issues with power on rpi USB ports for storage. Its also impossible to upgrade RAM on rpi. Good thing about rpi is super low power consuption, but some small factor PCs can drain ~10W. My PC was at 22W with 3 SSD. You can get power meter like Shelly plug S to see power consuption yourself.
Any OS (I use debian) of your choice + docker and docker-compose. Then install portainer and manage all services from there.
- For pictures try Immich, its amazing.
- For cloud storage Nextcloud
- For media streaming consider Jellyfin (much better than Plex IMO)
- Check wiki.servarr.com if you are downloading content with torrents or usenet. It can automate everything and provide awesome UI for users. Next level torrenting
- If you have only 1-2 users consider Wireguard or tailscale to connect when not at home.
I was going this route and Im super happy with everything
Raspberry pi cant transcode so its not best for media server
To expand on that:
Kinda right and still wrong.
You actually can transcode. But the performance wont be great.I tried it with Jellyfin by transcoding anime episodes thanks to SSA subs (1080p ~1GB @ 20min episodes). Performance was about 0,7-0,9x
because I had issues with power on rpi USB ports for storage.
Corrupted my kernel by having 2 USB powered disks on it (hdd and ssd) and wondered why the write performance sucked so hard if I wrote to both at the same time.
Then I updated the kernel and corrupted it c:Check wiki.servarr.com
Don’t forget trash guides.
The 2 usb ports on RPI share the same usb controller and pcie lines, so you can’t expect max throughput on both ports simultaneously
Problem was less the throughput and more the power it could provide to supply both a 2.5" hdd and ssd.
If you connected the monitor your could see a bolt on the monitor probably warbing about undervoltage/power.
When I upgraded the kernel it went down during the upgrade.I had an issue with only 1 SSD powered from USB, couldnt even run SMART test. Found that after I got corrupted system. Getting external power supply makes it more bulky and have to be careful with compatibility
Whatever you do:
- keep notes
- consider the 1st build “wrong”
- “destroy” it (before it’s the only place your data is stored in)
- build it again
That means you’ll really understand it and how to maintain it.
And others have said: 3-2-1 backups
Still chugging along with my broken permissions ACL from my 2nd or 3rd attempt and knowledge from my Pi4.
ext with the Sticky Bit? Ah, yes, me too 🤭
Don’t use Raspberry pi.
- It is overpriced and slow.
- SD Card write speeds are low
- you will need external storage
- Arm architecture, so some programs might not work
- power issues
- slow USB
A cheap old laptop will work a lot better.
- it might not have AC wake up (if power goes out, you will need to manually turn it on)
- it might have always on cooler
- it supports SATA SSD without adapter
I think Raspberry pi is only good if you need gpio, otherwise save money and use an old laptop.
Don’t use Raspberry pi.
Oversimplified and in many cases is not good advice. Raspberry Pis are perfectly capable low cost home servers that absolutely sip power and take up little room.
Mini pc’s such as dell optiplex micro’s and intel nucs are also a good consideration.
Exactly. Just know the limitations and capabilities of your hardware and implement your system accordingly. My Rpi4 works well for adguard home, wireguard, NPM etc. While my media server and other resource heavy stuff are installed on a Mini PC.
How can you day"low cost home server"? they cost so much and when you need them they are out of stock
They look like they’re back, and at non-scalping prices
Of course I’m still waiting for my rpi5, pre-ordered in October for a No pvember delivery
Old think pads can be had for dirt cheap on eBay, you’ve essentially got a little server you can hide anywhere, you don’t have the keep the lid open (disable sleep on lid close, you can hide it wherever you want now) , ANDmost importantly it has it’s own little integrated UPS :)
Ya know what… That’s actually a really good idea 😅😎
Good one. And Lenovo battery management utility allows setting the state of charge level. Set it for 50% and the battery will last mostly forever.
Any cheap PC is going to be way better than raspberry Pi.
Also, may I suggest you to checkout Immich? I am in love with the project and have been using it as Google photos replacement.
Welcome to selfhosting!
Immich is great. Works so much better as a photo storage than Nextcloud does.
I switched from Google photos to immich just recently. I’m still looking for a good solution to replace Google’s editing features. I used, and miss, those features a LOT.
i found their site and in confused by this part of their intro page:
“That was how the idea started to grow in my head. After that, I began to find existing solutions in the self-hosting space with similar backup functionality and the performance level of the App-Which-Must-Not-Be-Named. I found that the current solutions mainly focus on the gallery-type application. However, I want a simple-to-use backup tool with a native mobile app that can view photos and videos efficiently.”
what is the main thing that separates immich from other “gallery-type applications”? wouldnt all comparable apps have some kind of gallery?
What are you comparing it with? Something like photoprism? If so, then photo prism does not allow you to have multiple users. (Atleast it wasn’t there when I used it last time)
If you compare it with Lychee, then Lychee does not have facial recognition.
I tried Photoprism a few days ago and it still doesn’t support multiple users. It also doesn’t have an app. The Immich app is really great and it’s stupidly simple to setup auto backup of your phone camera.
The Raspberry Pi can work if you don’t need a lot of space or high performance. You will need an external drive or two for it. The power consumption will be very low too.
You can use an old PC if you need more drives. Just don’t use an old gaming PC since the power consumption will be rather high.
You can always just undervolt the cpu and take out the gpu. Sure, a 1000w power supply is going to be inefficient at 20% draw, but if you already have old hardware it isn’t always cost effective to replace it just because of a higher power draw.
Also the pi is great for stuff like dns and network storage, but it’s going to struggle with transcoding as a media server. I can’t speak for the 5 from personal experience, but the 4 was completely incapable as a jellyfin/plex server. I just use an old stripped down computer for media and the pi is relegated to dns adblocking.
For real time transcoding, you will need a PC with a newer CPU that supports hardware H.265 encoding.
Do you mean 12-bit? Because previous versions have been supported since 2015-2016.
I would still consider an 8 year old CPU to be fairly recent considering performance has only increased a couple percent per generation.
12 bit video is uncommon, so support for it is not really needed. Intel Skylake or newer will work for 8 bit H.265.
If you have any video in 10 bit H.265, you will need a Kaby Lake or newer CPU in order to decode it in hardware. Software H.265 decoding will limit it to 1 or 2 streams depending on the CPU and video quality.
Always remember: RAID is not a backup.
Having only one backup and the server dying means you now have no backup, therefore the 3-2-1 scheme for backups is worth looking into.
I wouldnt never do raid with only 2 disks, it doesnt seeem safe tbh, 3 disks min (2 disks as backup)
Raid 5 with 3 drives survives one dying disk. Raid 1 (mirroring) with 2 disks survives one dying disk. if either setup loses two disks all the data is gone.
When you run 3 disks then the odds of two failing are higher than if you run 2 disks.
So 3 disks are not significantly safer and might even be worse.
That being said: both setups are fine for home use, because you’ve set up real backups anyway, right?
you can use raid 1 with 3 disks gg (or 4 or 5 or 6…)
yes
Raid 1 on two drives is perfectly reasonable.
its little money vs time you spent on it (backups are almost always missing something)
For a privacy friendly OS, surprised nobody has mentioned Freedombox
It’s designed explicitly for your use case, along with an easy path to other self hosted services. When you’re ready for more than it offers through the web interface, it’s a full Debian install under the hood - so you can install whatever you need to. Privacy friendly and super stable, with smooth upgrades to new releases and security updates for old versions several years after the new one is available.
As far as hardware, your old computer is probably more powerful than a Pi and can support more drives, but the Pi will be more power efficient. As others have mentioned, if you care about your data long term then backups are a must, so a separate NAS or a Pi with a large drive for backup storage is a good idea as well, whatever OS you choose.
Micro PC, install Linux. External nas. Or mini-pc with builtin nas.
Nextcloud is a good platform for hosting self cloud stuff. You might want a fixed ip, or other method to route if wanting to use out of home.
If you want something that works without you fretting with the base system too much, and gives you a decent GUI to handle the base: Proxmox. Run VMs, run containers on said VMs, and experiment as much as you would like.
I will personally not be doing this (I plan to run Alpine as my base instead of Debian, even though I hold the latter in very high regard), automate provisioning with Ansible, and exclusively use Podman instead of Docker. I’m willing to go through the pains of not using Docker directly, but at least I’m not learning how to run everything on k8s (which is not a bad idea at all, but for most homelabs without HA, it’s overkill).
Learn networking, learn container orchestration, learn GNU/Linux (or in my case, non-GNU/Linux - yes you plebs, musl is good) security, auth basics, UNIX permissions, general automation, and give yourself time.
Also, do not become the family system-admin without having a fair bit of experience doing this already. You don’t want the homelab becoming a job, which means getting to fix it at your own schedule, not when Jellyfin is broken and Wifey is bearing down on you because you cancelled Netflix in favour of your Linux ISO-powered library.
Personally I prefer older PCs in standard formfactors. I avoid HP, Dell, Lenovo pre-builts because they use proprietary power supplies and motherboards, making them difficult to upgrade. Laptops aren’t really upgradable, they don’t have enough SATA ports, and USB isn’t reliable enough for storage. Raspberry Pies, while power efficient, are too underpowered. Old server hardware is also an option, but they are generally too noisy.
Go for a used small form factor PC. They usually have a decent amount of house power and can house many drives
I personally think a NAS would probably be the easiest option and on top of that they are optimized for low electricity consumption, which a PC, especially when it’s older is not. It makes a huge difference because it’s running 24/7 for 356 days a year.
I used a PC once and didn’t realize that it took always about 300 W so at the end of the year surprisingly the electricity bill was much higher than normally.
I used a PC once and didn’t realize that it took always about 300 W
Were you mining bitcoin or something?
It was running https://zoneminder.com/ but idling it used almost the same amount. It was a old PC my dad saved from being thrown out at his company. It must have been from around 2002 or something.
Yeah - that has changed since then. Power usage in the 30 to 40W range is easily attainable of you take some care selecting the components.
I bought a NUC which took 5 W idling that was quite amazing.
Yeah, those are awesome - but even with an ATX mainboard, a CPU and a few spinning disks it’s become easier to stay on this side of 40W.
For a small pocket and low power consumption but incredible performance I would recommend the Odroid M1. Add a cheap nvme drive for the os (I prefer debian) and a 2,5" hdd. On top of debian you can install OMV for a webui based linux home server control. DietPi is nice for beginners too. And like other ppl already said, you can use docker/podman for running your software.
Oh and don’t forget the 3-2-1 backup rule. 3 Backups, 2 different media types (ssd, hdd, usb stick, cloud, …) and 1 offsite backup (cloud or hdd at your friend’s house).
Thank you for the info. I wasn’t aware of the 3-2-1 backup rule until now.