UPDATE: To everyone who suggested YUNO, thank you so much. This seems like it is about to make my journey much easier. It is basically almost exactly what I was looking for, but I was unaware that it existed.
Thank you ALL for your suggestions, actually. It’s a bit overwhelming for an almost complete noobie but I an going to look into all of the suggestions in time. I just saw that there were several mentions of YUNO so I decided to make that one of the first things I investigated.
So, about two months ago, I had a very eye opening experience. As the result of a single misconfigured security setting on my Android, I was locked out of my Google Account on my phone AND all of my PCs. I had no access whatsoever to Google, or any of the literally hundreds of services that I get through Google.
This is when I realized that I relied entirely on Google/Android because those two days were actually very difficult, being cut off from media, services, passwords, everything, from the past almost twenty years of my life, could be taken away from me in an instant. The decades of my life that were locked away in my Google Account included hundreds of thousands of pictures, almost a hundred thousand audio tracks, several hundred books, several hundred apps, thousands of videos, etc. ad infinitum. Unfortunately, very little of this material was backed up at that point. That is my fault. Also, the misconfigured security setting was my fault as well.
The amount of data, media, memories, services, etc. that would have been lost is actually endless and it would have affected my life in several ridiculously negative ways.
Luckily, in the end, I was able to get my access back and then basically immediately grabbed all of the several terabytes of information and media of mine that they had, and that I was almost locked out of. I have it all in my house now on a drive in my computer, with a backup made on another disconnected disk.
I then decided that no corporation was ever going to have such an insanely high level of influence on and control over my entire life and my media ever again. That experience was actually very scary.
I’ve been trying to get into SelfHosting, but am finding it quite daunting and difficult.
There is a LOT of stuff that I have to learn, and I am mostly unsure of where to even begin. I know basically nothing about networking.
I need to learn the very basic stuff and work my way up from there, but everything that I’ve seen on the Internet assumes that the reader already has a basic to intermediate understanding of networking and the subjects that surround it. I do not, but I am going to learn.
I just need someone to show me where to start.
Thanks in advance for any assistance!
This post inspired me to audit my firewall rules, had put it off for too long
As the result of a single misconfigured security setting on my Android, I was locked out of my Google Account on my phone AND all of my PCs.
Just a heads up on what you are getting yourself into, if you fuck up your self hosted setup badly enough there is no recovery.
That isn’t necessarily intended to scare you off from self hosting, just that the first and most important lesson to learn is to have a good system of backups that are backed up automatically, are easy to recover from, and are separated enough from other copies of the data that if something goes terribly wrong one copy will survive.
Thanks for the advice. Currently, I have a backup of all of my important data on a high capacity HDD that is completely disconnected from any devices. There is no real way to automate backups with that setup, but it’s what I am working with at the moment.
I’d recommend setting your sights on the 3-2-1 rule. 3 copies of your data, 2 different mediums, 1 off-site. Hetzner Storage Box is a good cheap offsite option.
To piggy back off of Arcayne’s comment
I’d recommend setting your sights on the 3-2-1 rule. 3 copies of your data, 2 different mediums, 1 off-site. Hetzner Storage Box is a good cheap offsite option.
I don’t backup everything to a 3-2-1. I at least have everything on a 2-1 backup scheme. Two copies, one offline. My personal photos and videos are on a proper 3-2-1. I can redownload my movies and music. I can’t retake pictures from my childhood. It saves a lot of money doing it that way. My personal media is less than 1 TB, whereas my whole collection is many TB and would be prohibitively expensive to 3-2-1.
While YUNO is a great way to get started, I strongly encourage you to understand basic concepts, like docker, and maybe try to run something outside of it for fun. While not even remotely the same thing since YUNO is just the OS and “app store”, you would be very similarly tied to that ecosystem the same way you are to Google now. Not to mean that YUNO would have any control over your stuff, but you would be dependent on them for what you can self host.
Yes, I’m definitely trying to understand the “why” of what it is that I am doing. I’m just going to be using YUNO as a starting point.
Yunohost should be the software you’re looking for. Install stuff by clicking. Much less terminal stuff
Oh my god, you were right. Yuno is AMAZINGLY useful for exactly what it is that I am attempting to do!
Glad you like it! If it’s useful to you, don’t forget to donate or at least say thanks to the contributors once everything is up and running and stable.
Don’t forget backups! Restic is in yunohost and should be useful for that. Yunohost has a guide.
I have a big super micro server i was given a while back but have yet to set it up. I was going to put proxmox on it. Would you recommend yuno over that?
Depends on what you want to do. For a small server, if you want to host multiple things, hosting them straight on the metal without putting a VM in between would be more performant. If your server doesn’t have much RAM and CPU to give, then getting rid of the emulation layer makes sense.
Can you tell me why you want to use proxmox and what for?
It has 256gb of ram. I don’t remember to CPU power but it has 2.
I want to do self hosted storage, currently have 12-16tb (I’ve forgotten which). I’ll also want to have other services running. Like game servers or things like immich and jellyfin. I’ll also want to have something for git and probably Jenkins (or similar), then also a place to host anything I create that needs hosting.
When i asked where to begin with such a server, pretty much all of the responses were to go with proxmox. I’m not a fan that it’s nagware though so I’m open to other suggestions.
+1 for YunoHost from the POV of a total self-hosting newbie (I’m now self-hosting my own GoToSocial, Pixelfed, PeerTube and NextCloud thanks to it… upgrades and backups are super easy, too)
Sevral people have mentioned Yuno and I’m going to look into it shortly. Thanks for the input!
There’s Yuno, CasaOS is ridiculously easy to setup, manage and maintain as well. There’s UnRaid (not free, but very good), Proxmox is extremely versatile.
I am currently running light services (caldav, carddav, PW manager, and some other lighter stuff) on an N150 mini PC, and have a hefty server for heavier services running on Proxmox.
Of course, I follow the 3-2-1 backup rule, but only for data I could never get again. Movies, Series, music, I never back up.
I’m 100% self taught & was in exactly the same place. I’d never used Linux before I got my first Pi. I spent a bit of time trying to familiarise myself with & made some notes regarding command line (notes I still rely on).
There’a so many ways to achieve the goal, you’ll eventually find a way that works for you. My personal preference was Docker/Docker Compose deployed via Portainer.
Even that was confusing. Until I found this excellent video on how to read Docker requirements & apply them step by step into Portainer. He explains slowly & methodically exactly what he is doing & why.
Portainer is a method of handling Docker stacks/containers via a web UI. Both Docker & Portainer are simple to install.
It’s easier to use Docker Compose files and/or .env (environment variable) files (both are even simpler to deploy through Portainer) but this video taught me what was going on & gave me confidence to have a go. What attracted me to Docker is you can easily remove stacks/containers if/when you make a mess rather than wiping the drive & start again, which is how I went about things initially.
This gave me the tools to set up Nginx Proxy Manager & I never looked back.
As you’ve realised, a robust backup solution is essential (plus off site backup for particularly important stuff) as things will inevitably go wrong along the way (I see Borg, Restic mentioned often, I went for Kopia).
I can’t recommend highly enough making detailed notes along the way, I rely on Joplin.
If you start using Docker, dont fall into the trap of using the “latest” tag. If you know the version number you’re running its far easier to re-deploy if an update is bad.
Enjoy your new time consuming, teeth gnashingly frustrating …and yet rewarding hobby 👍
As someone who went through this after trumps 2nd term and power grabs i can give you my process:
- angrily unsubscribe all big tech subscriptions
- make a protonmail and tutamail account, realize I like proton suote more and decide to subscribe
- transfer all passwords to proton suite
- download all photos and other from cloud to an external drive. TURNS OUT THIS TAKES SEVERAL DAYS WTF
- angrily order a rasp-pi and an external SSD
- use step by step tutorials from pimylifeup to install docker and immich. Fall in love
- gradually (via help of google and GPTs) become confident enough with command line to start managing the server headless over SSH
Fast forward 6 months: My router is now running OpenWRT. With a few necessary exceptions my network access is always through ProtonVPN. My external devices are connected via wireguard to the router when not on home wifi and only after that reach the www. I have 24/7 access to my services from everywhere. My main server is now an old office mini pc running about 10 services. Im using borg for nightly snapshots(its a bit like apple time machine) and after that everything is backed up to another server at a friends house via rsync and ssh. I have a third mini computer whose purpose is to be my tv’s UI with access to services like the national broadcasts web ui and my own jellyfin and invidious (adless youtube client) The tv does not have an internet connection anymore. I even made a custom land page that automatically opens full screen in a browser when open my tv.
The point is: this builds gradually and you have fun doing it. …until it breaks :D The most painful parts involved networking so you can settle for LAN only at first to keep things simple
Re-investing in a new platform full of tools (Proton suite) isn’t in my opinion a rational answer. My answer is self host vaultwarden, self host your file storage, and choose between Proton and Tuta for mail, and use your own domain name so you can take your email address with you should you move.
In my opinion No-one should ever store any form of personal data implicitly on someone else’s computer.
Oh i have vaultwarden as well nowadays
how well does invidious work on the TV? how easy are the controls?
I use a small wireless logitech keyboard-mousepad so it works very well. I had to make exceptions in the router for googles video severs to bypass the vpn though.
yeah not all invidiouses allow proxying the video, and at some it used to be off by default
Im running my own instance. But yeah, videos from google servers won’t load behind a proxy. Or they might work for a while but then wont and then you have to switch vpn servers which is very annoying.
When you’re connecting to your local network, say from outside your home, you connect through proton vpn? I’m wanting to self host, but I thought I would have to switch between proton and whatever VPN the local machine is using? Say immich for instance
My phone is on a wireguard tunnel into my router which puts my wireguard vpn in the same forewall zone as my home LAN. Internet access is routed through the tunnel and then through another tunnel to protonvpn and from there to the www. It was a bit elaborate to set up but it works. Wouldnt really recommend the setup for everyone, it was a bit of a pain in the ass to get working. I used Openwrt and policy based routimg plus wireguard for the tunnels into and put of the router.
The FUTO guide is meant for total beginners.
Thank you! I will begin to look over it tomorrow!
I am a sysadmin with over 30 years of experience managing servers and networks for businesses of all sizes as well as for myself, friends, and family.
The FUTO guide is extremely detailed, accurate, and accessible. It does not always follow best practices, and it’s not a comprehensive guide to all of the possibilities for self-hosting. It’s not trying to be. It is a guide for someone with no technical expertise (but with basic technical ability) to degoogle/deapple themselves at a reasonable level of cost and effort.
You do not have to do everything in the list, you can pick and choose the parts you’re interested in. That said, I would recommend reading through the whole article as you have time, because it does a very good job of explaining the concepts involved in building a self-hosted setup, and understanding how everything works is the biggest step toward being able to effectively troubleshoot problems when they inevitably crop up.
If you have specific questions about things that aren’t answered in the guide or via a quick web search, post them here.
Thanks for the detailed explanation! I will definitely begin studying the document tomorrow!
Love the explanation. I’ve had a homelab for 20 years now and have never heard of FUTO. You’re explainer has made me bookmark the site now for future skimming.
This, so much. I remember when Louis told everyone about it, people (mostly Reddit) were so nitpicky over every minor detail.
I’d be curious seeing the discussion. Its healthy to have respectful competing opinions and see what rises to the top
It was a while ago, I don’t remember much of it unfortunately. Only the idiots.
They use OpenVPN for some reason. Wireguard is superior in every way. In case you set up a VPN.
I didn’t know I needed this. Thanks!
deleted by creator
If you have systems or services you’re dependant so strongly, always have an backup / emergency access. 3rd party or self hosted.
My 5c but I think you agree.
Point being as a decades old it professional I see design more important as the detail implementation.
Goddamned inflation. It used to be just 2 cents worth!
Ah crap that’s what I get for not being native English. But still, correct somehow.
I don’t believe inflation is a serious problem. But that is just my 9 cents.
Indeed, I do agree but I’ve never done anything close to this magnitude so it is kind of intimidating for me. It is a learning process though!
I’d recommend not to go containerized but that can start a flame war. I would think it easier. But best to stick to the recommended beginner tutorial that someone else posted and go along from there.
Then ask questions on the way.
I hard agree with this. I would NEVER have wanted to start with containerized setups. I know how I am, I would have given up before I made it past the second LXC. Starting as a generalized 1 server does everything and then learning as you go is so much better for beginnings. Worst case scenario is they can run docker as the later on containerized setup and migrate to it. Or they can do what I did, start with a single server setup, moved everything onto a few drives a few years later once I was comfortable with how it is, nuked the main server and installed proxmox, and hate life learning how it works for 2 or 3 weeks.
Do i regret that change? No way in hell, but theres also no way I would recommend a fully compartmentalized or containerized setup to someone just starting out. It adds so many layers of complexity.
Thanks, you put it better than I can.
Native vs containerized really depends on what it is going to be doing tbh. If it’s just downloading and/or moving files around, containerized is fine. And having your docker-compose.yml files saved somewhere external will make future hardware upgrades/recovery much easier.
There is certainly some learning curve to figure out the quirks of a compose file, but the nice part is that most services will post an example compose file for you to edit as needed. And that means learning it is basically just a matter of reading the example files and figuring out what the different fields mean; yaml is extremely easy to read, even for someone who has never looked at it before. You may have some fringe cases that need a deeper dive, but the vast majority of setups are basically just a matter of “copy the example compose, edit the volumes as needed, and fuckin send it.”
Yes indeed. However as a beginner I think it’s far easier just to install and run a daemon. But maybe that’s just me. And of course if the intended way of running it is only container by default.
You seem to imply you also want to selfhost some email service. But that’s sadly one of the few things that will always be better at a trusted third party email provider.
Besides that it seems the most important thing you want is pure data storage, and that kind of selfhosting is not hard. In many cases one would not even consider it as part of “selfhosting” as it can be as simple as a local NAS or external HDD.
So my question is what do you actually want to accomplish? Because I think for a lot of your concerns you don’t even need to go and host something.
I don’t want to replace email, per se. More so, the services that come along with it. Stuff like photo storage and sync, notes and reminder sync, calendar sync, and a lot of the hundreds of other small things that I have just been leaving up to Google that would cause a huge problem for me if I lost access.
I have the password situation handled with KeePassXC on my PCs and KeePassDX on my phone, but that’s about as far as I have come as of yet.
Keepass is a great way of password management, I use keepass as well. I also use syncthing to sync my password database across all devices and then I have the server acting as the “always on” device so I have access to all passwords at all times. Works amazing because syncthing can also be setup so when a file is modified by another device, it makes a backup of the original file and moves it to a dedicated folder (with retention settings so you can have them cleaned every so often). Life is so much easier.
For photo access you can look into immich, its a little more of an advanced setup but, I have immich looking at my photos folder in syncthing on the server, and using that location as the source. This allows me to use one directory for both photo hosting and backup/sync
Note taking? Joplin. It’s been amazing for me and replaced Evernote after they started with their BS.
Photo storage. Been using Photo prism but I’m open to a better one.
If you want to start cheap, I can recommend you to use an old notebook. In my opinion it’s the perfect home server for beginners.
- It’s cheap (most people have an unused laying around anyway)
- If it’s old enough to still have a dvd drive, you can replace it with a second sata ssd. There are cheap frames for this available.
- it has a battery, so it can shutdown if there is a power outage
- It’s slim. You can just throw it on your closet and forget about it
Most services don’t need much. So it’s just fine if your “server” is like 10 years old. My first notebook server had 2 cores and 4 GB ram and it run Proxmox with like 10 lxc containers just fine.
Awesome suggestion! Thank you.
The only thing to watch out for using a laptop that is plugged in 24x7 is the battery. Battery management systems are generally pretty good, but Li-ion batteries can fail catastrophically. As long as you make a point to check on it periodically it’s probably fine.
I’m using an old laptop as a local interface for my network setup, since its in my basement, and I actually pulled the battery out entirely since I have a beefy UPS powering everything. Paranoid, maybe, but a Li-ion battery sitting on top of my equipment rack could do a ton of damage if it were to fail someday.
since you’re so new to self hosting, don’t open anything up to the internet. You’re in for a world of pain if you do.
A single misconfigured thing can suck real bad as you’ve seen.
Selfhosting involves lots of things that can be misconfigured or go bad.That’s not to scare you out of it out anything, merely to congratulate you in seeking knowledge first.
Disclaimer: I’m biased towards networks because I’m a network engineer, opinions may differ.
I would say… having at least a vague grasp of layers 1-4 of the traditional network model is a decent start.
You don’t need to understand everything, but knowing a minimum will help a lot imho.It’s hard to point you in the right direction without knowing what you already know or not.
Plus, if you end up accidentally locking yourself out of your own system: boot access means root access (Secure your IPMI/iDRAC, folks!)
Yeah. I guess that is true. The part about not being able to point me in the right direction. I have a shaky grasp of several network protocols and things of that nature. Nothing deeper than surface level at this point.
Honestly? Don’t do the whole switch, or even a big switch from a few services to another.
Start small. Very small. Try doing just one service you rely on, like your images or music. Immich just announced their first stable release. I use navidrome for my music. Make sure to test these on a copy of your data, not your actual data.
Once you’ve got one service working as you want it to do, then you can try your hand at another service. This way, you don’t get stuck trying to do everything all at once.
It may be worth considering how much (if any) you want to spend at the start, too. That’ll inform your next immediate task; setting up basic backups for your data. A spare drive is a good start, but it may be worth keeping another one at your parents house, or similar.
That is exactly my plan, to have this set as a long term goal with several incremental micro-goals, as opposed to attempting to do it all in a weekend. I figure making it a long term thing gives me much more of a chance to actually learn what it is that I am doing. Plus, at my level (no real networking knowledge to speak of) trying to do this in a weekend sounds like a nightmare, lol.
An “I Wish I Had …” addition to this: maybe start something like Wiki.js or Joplin that you will then use to document what you do as you go. Keep a record of your process so that you can work your way back if you need.
Great suggestion! I will definitely implement something like that.
Write things down
You will break something - and that’s good, it’s the best way to learn - but you’ll want to make a note of what you did / went wrong / how you fixed it.
Future you will still break things and be grateful that you wrote that thing down
You’ll buy something and find next year it was the wrong thing (too small, too large, too old, too new), so just get second hand stuff until you know what you need.
Cabled networks are so much better than wireless, but then you’ll need switches and cables and shelves and stuff… so using today’s wifi is fine, but know where you’re heading.
You need to store you stuff - that’ll be in a NAS
You need something to run services on - that’ll be your server
These might be the same physical metal lump (your 2nd laptop?), they might be separate… play around, break something and work out what feels right for you… and then put your data on there
… and that’ll break too.
Just be aware… if sync files between devices. That’s not a backup. (Consider you’ve deleted / corrupted something - it’s now replicated everywhere)
Having a NAS with 10 drives in a RAID6 array, is not a backup. It’s just really robust against a drive failure, but a deleted file is still a deleted file.
Take a full copy of your data off your system - then restore it somewhere else.
Did it work? If so, that’s a backup.
I’ve always struggles with practicing restoring backups. Do you have to buy an identical 2nd machine to see if everything still works w/o messing up the first one?
Not really.
I keep my data backups (docs, photos, etc) separate from the OS backups.
So, depending on what you’re using to do the backup, often they can just simulate a restore and just check the backup’s not corrupted. Not really a restore, but at least you know it’s not trash.
If you’ve backed up your data with a simple copy / sync (ie not a “backup” program), then you can restore your data somewhere else (maybe even jist a part of it) and do a compare.
But, yeah, if you’re restoring the OS, then it might be ok restoring it in a VM to check it…
I’m slowly moving towards no OS backups and using Ansible to be able to recreate the system(s) from scratch… of course I need to backup the ansible files too 😉
I would like to backup and test restore app configs not sure how to do that yet :p
Maybe OS backup is the way somehow. Maybe I need an atomic distro …
Well, it depends on the app & how it’s installed.
Most bare-metal installed apps are in
/etc/
or~/.config/
… maybe under/opt/
or/usr/
- just copying those files out on a regular basis is usually good enough.Might be a little more tricky if you’re trying to backup a database / live files, but those apps usually have some documentation about backups.
If it’s a container or flatpak, etc. then it’s probably somewhere obscure.
Use DietPi, it’s a great OS