A couple of weeks ago I spat the dummy with windows and shifted to Linux. I think I am now ready to drink the coolaid.
What I have available currently is an ISP router and a decade-old gaming PC with a failing hdd that used to host games. I also have some budget to spare so that I can set things up nicely or in a way that I can add on it in the future.
Here are my goals are in order:
- Proper onsite and maybe offsite backups - my migration to Linux illustrated gaps and I expect in the future I will run VMs that should be backed up
- Home security cameras (Which I don’t own yet)
- Replacing something like onedrive. I expect this will be NextCloud
- Yarr. Sonarr/radarr/jellyfin
- Hosting game servers
- Block adverts and maintaining privacy
- Improve the latency of my steam link to my TV via chromecast
- Hosting webscraping and analysis of data off some local websites
- Maybe set up some some smart home automation things
- I’d like to get solar power and monitor how the whole setup is doing.
- Self host my bit warden
- I dunno, backup Wikipedia or something. Give me ideas
So where would you recommend I start off with hardware? Simply replace the old pc hdd or look to having a NAS? A better router to handle VLAN? Go all in with Ubiquiti products which I have heard mixed things about? About the only thing I know is that a UPS would be a waste for an aspiring enthusiast like myself.
Any advice or pointing me at wikis or other resources would be greatly appreciated.
Be prepared to change your mind…
That first install of proxmox / nextcloud / whatever, will be removed and you will setup something else - this is a good thing.
So, you’ll probably want to get onsite backups sorted early… even if that’s just cloning to an external drive first.
IMHO don’t consider a NAS as your server - keep them separate. A cheap ebay PC with a couple of drives is fine.
And, if you’re considering home automation you will want a UPS
Don’t buy anything yet! Except the HDD maybe. Use what you already have to tinker with things and try different setups.
A common OS people use is Proxmox, it’s free and you can easily create VMs. You’ll come across Docker/Containers sooner or later and you can easily test them in a VM.
Play around, figure out what you need and how you want to set it up, and only then get the necessary hardware.
Check out Proxmox helper scripts
Plus one for ProxMox, I love that software so much. I am a container person though, and put my containers in containers. Containers all the way down until I am put in a container.
It sounds like you’re having trouble containing yourself.
If you can overcome the first kinda large step of setting up a basic install of Proxmox + ZFS pool, you’ll love it. You can try shit out and nuke it if you don’t like it. Helper Scripts from here are also a great way to try stuff without breaking anything you already have. each container gets its own IP so you don’t have to juggle stuff with a reverse proxy (which is a PITA to set up properly) and with TailScale on the host, you can pretty much access everything from anywhere, without exposing it to the wider internet.
Creating a ZFS pool is also rather nice, because you can keep adding new disks to the pool when you’re running short. Ideally you’d use some mirroring for security. Backups are also nice with proxmox, as long as you don’t give every LXC a giant size quota.
Last thing, DO get an UPS, even if it’s a small consumer grade one that lasts 5 minutes. Make sure it has some sort of conectivity (network or USB) and it’s linux compatible. I’ve lost a lot of time rebuilding a 2yo NextCloud install that went all wonky after a blackout.
So in a detailed summary from your points:
- Proxmox makes it easy to make, test and restore backups, even if it’s for a spare drive or across the network. Setting up a /mnt/usb mountpoint for an external USB drive by UUID is one way of having it available when needed, and kept offline for safekeeping
- Frigate NVR. Lightweight, can integrate with HomeAssistant for automations and alerts. Try getting “dumb” IP cameras, most of the smart IoT stuff will try to upsell you on crap and might end up bricked by the company down the line.
- Nextcloud for your PC backups and Immich for your phone photos. NC also has an android and iOS app that can sync folders you tell it to.
- Look up “YAMS”. I’d recommend running the whole YAMS stack + portainer on a separate Proxmox LXC so you can easily put the whole thing on a separate VPN instead of relying on the provided gluetun package
- For quick One-offs, portainer is more than enough. There’s Pterodactyl and Pelican for more in-depth server hosting but I found it too cumbersome
- PiHole LXC on a fixed IP and set your devices (or better yet, your router/AP if you can) pointing to it’s IP as the primary DNS server
- not really sure what you mean here, wired connections tend to be the best, maybe get a Pi or a small android box that supports ethernet.
- HomeAssistant (use the VM helper script for full HAOS!)
- HomeAssistant again, try getting a smart meter that doesn’t rely on shitty APIs like Tuya, unless you’re willing to dive into hacking with tasmota.
- ProxmoxLXC, there’s already a helper script for it.
- Kiwix-server has a docker image, easily hostable and it takes Wikipedia’s offline archive files.
Good Luck and Have Fun!
You will be surprised at how much you can do with very little and very old hardware.
I started my descent into the depths of self hosting with an old phenom II black PC, I bought a bunch of HDDs and put them in a RAID 10 via mdadm and eventually learned my lesson about not using LVM on my Linux for my storage management. Having volume flexibility has helped immensely there.
I can echo some people’s recommendation of portainer though be careful as if you want to get into multi device docker management portainer has some limits on what you can do for free. I upgraded to their pro tier using their free promo for 3 instances, but then had 2 mini pcs dumped on me by my brother in law, which took me to 4 managed nodes which exceeded their latest limit.
I have since switched to dokploy managing my docker swarm, so considering this platform decision early can save some growing pains, dokploy also has built in management for traefik so it is pretty slick though I have been maintaining my own nginx proxy by hand(not even npm, just nginx and a bunch of service config files).
I definitely recommend pi.hole, something like AMP or crafty controller or some such if you want to host game servers on it still, duplicati is a nice web interface for creating timely backups of things, and supports a variety of cloud storage(I currently offsite to a backblaze B2 storage bucket which is AWS S3 compatible).
Blue iris I think is something I saw passed around recently for security cams, all the Arrs are pretty easy to setup once you get one of them setup. My one drive replacement ended up being own cloud, as I fought with nextcloud getting it setup the way I liked so had to pivot.
Link warden is a tool I have used for archiving websites and creating a shareable bookmark collection. Audiobookshelf and Calibre(plus calibre-web) make a decent way to manage audio and ebooks.
If you are sharing this server and its services with others I highly recommend getting some kind of SSO setup, I ultimately picked Authentik for this, it has great integration documentation for most popular services, now my family can access all my services without having 22 different passwords.
Outside of those recommendations I can recommend checking out some sites like selfh.st for some inspiration on the kinds of services you can run and figure out what your needs/desires are and do some A/B testing on some that operate in the same space to see which ones fit your needs better.
I can also say looking at the greeting pinned post in this community is pretty good as well to get some ideas. I posted my most recent list of services in there(though it is now 2-3 services behind since I am addicted and growing).
If your old gaming pc rig has a decent GPU in it you could also consider running Ollama and open-webui and host your own personal agentic AI. I really feel the sky is the limit when it comes to self-hosting.
Edit:added much needed paragraphing to my monolithic post so that they are better services with looser coupling.
Got one word for ya mate: Paragraphs.
They’re a goddam modern marvel and heaven-sent if you ask me.
Good day sir.
That’s fair, I was half asleep when I wrote it so probably the half that controls word rate was in that half that was still offline.
For basic hosting of stuff+storage management, TrueNAS has a highly polished product that lets you install docker containers with ease.
They have a curated collection that includes every piece of software you mentioned, plus the ability to install dockerhub images as ‘custom’ images.
Originally I started with a single Pentium 4 with 4x1.5TB disks, and it’s grown over time. Now at home I have 2 TrueNAS machines giving me 80TB of storage, and 3 HP elitedesk Minis running proxmox for general VMs.
I also have a managed switch, which lets me pipe the raw Internet into it, and deliver it to the proxmox hosts so I can run a virtual router with high-availability.OpenZFS, which TrueNAS uses as its primary storage filesystem, has recently gained the ability to increase existing disk arrays by adding additional disks (as opposed to replacing all disks with larger ones) and this makes it even more flexible for future growth.
I will say though, that if the machine is dated and you load up ‘all the things’ in it, you might not be impressed by performance, so be sure to manage your expectations.
I also suggest that you consider making yourself a roadmap, so that you can plan out what hardware you’ll need to implement the ‘next big thing’
Also - the steamlink you mentioned - I’m not sure what you’re chasing there exactly, but if your steam rig is already in your home, the only thing you can do to improve latency is provide Ethernet to both the streaming sender and receiver.
Good luck!
Do you research of raspberry pis, they are really great. You do need to be careful though, sdcards die comparatively fast, and you don’t want anything important to be on it when it does. Or at least backed up (Borg is cool).
Well done for installing Linux! Thats a big list you have there and without knowing what your hardware specs are or your budget, I’d suggest getting a hard-drive to replace the one thats failing. Maybe another one to back it up. If you don’t have a lot to back up then perhaps a usb stick will do that job for you.
Your list can be very expensive what with Ubiquiti and a NAS. Your router, whatever it is, will probably do for now and you can use up your motherboards spare SATA points for storage or even pop a harddrive into a usb hard drive enclose. Those are cheap. Life is easier if you have more than one computer to hand.
Definitely learn docker, find the code for Pi-hole and learn to set it up, thats no.6 done. Do the same for vaultwarden no.11 For convenience: All the basic stuff exists on DietPi so look that up, its a bit odd. Most of it will run on a Raspberry Pi 3.0 and up, possibly less. DietPi also runs as an operating system on PC architecture.
Debian (and most Linux Distros) will run as a server but you might find its a bit harder work to configure. You can run a VM within it.
If you intend to access your stuff from outside your router, you can run a proxy like Nginx or Caddy or Traefic, but you’ll need to register a domain. Just check with your ISP that they allow that. Alternatives are available.
Its easy’ish to just setup a VPN server using Wireguard and connect to that via a wireguard client from the outside. You could use Tailscale, Zerotier or Netbird (et al) which will give you more flexibility and security, ie for connection to your cameras, Game server, Nextcloud and Immich, and Home Assistant. This would also allow connections to vaultwarden. If you wanted you could build it yourself.
Anyway start small. Satisfy your immediate needs, make it work. Re-evaluate, can it be done better?, Next steps, implications of changes on performance, cost and future needs. Knowledge gaps?
You don’t have to decide now as there is loads of things to read and view, suck up the knowledge and enjoy.
Edit: Obv. you could just install proxmox and spin up all the bits and bobs you want as you want them.
This was too long, sorry
You can start with used but modern x86 - the n100 line - has very low power usage and will long term be a better investment. A pi is about the same cost once you get the accessories needed and uses as much power to get work done, but can do less work. (If the computers are idel the pi wins)
I would get some cheap maybe even used X86 hardware to start with. Depending on your backup needs, you might need more than one M2 or SATA port. If you plan to use it as an always on device, I would keep the power consumption in mind. A celeron N could be the way. The cpu processing power is, in my experience, not the limiting factor for a self-hosted environment. Give it lots of RAM, every virtual machine and every running service needs space.
Using arm, like a Raspberry Pi, is not bad if you can find all your Docker images and binaries, compiled for this platform. I went away from it.
There are many possible distributions and software you could use, it really depends on personal preference.
secondhand used mini pc + some refurbished harddrives
host something that you really need and will use
A few things you have to learn in general are Virtualization docker and some network management. You can do this on very old stuff. And when you know the basics you can make a better guess to what hardware you need for the things you want.
I love and hate unifi at the same time. Their single web management for all devices is super convenient but some advanced things are a nono. It is expensive for what it is.
I think my suggestion would be to use the PC as a dedicated firewall, but you will need at least two ethernet ports for that (one to connect to the ISP router, and the second for internal network). This lets you learn network security and control the traffic that can actually get to your other computers. You could also set up KVM to start running virtual machines here. The idea with a VM is to keep services separate and isolated, so like one VM to manage security cameras, another VM to host a game server, another one to host sonarr/radarr/jellyfin… etc.
When you are able to expand, your second physical machine should be your NAS. Get your storage space started, share it over NFS or samba, and move your backup/security camera/sonarr VMs over to this machine for direct access to the larger storage space. Pay attention to system usage and move your VMs to balance the cpu/memory resources. Eventually you may want to get a third machine dedicated more for hosting the game servers, maybe a web server to view the security camera feeds, or whatever.
You mentioned backing up Wikipedia… Have a look at the Kiwix project, you can already get access to regular backups for a lot of information sites.