Please bear with me as I don’t know where else to ask.
I want to start to self host but do not know where to start. I would like to start small. Just something that might not be beneficial but to get my feet wet. It does not even have to be practical.
I am not tech illiterate and have my fair share of technology around me hut self hosting has always been a daunting task.
I am scared to start.
I am already using a PiHole at home but that was kind of plug and play and just worked.
I would be incredibly grateful if someone could guide me to some resource or tell me what an easy first step would be.
An FAQ or self hosting for dummies.
Most resources I found assumed some previous knowledge.
Louis Rossman, a strong advocate for the right to self-repair, has an extensive, bottom to top guide on self hosting your own services. It starts from introducing what a modem is and what role it plays, and it ends with an entirely self hosted cloud. It comes in article as well as 13 hour video form. I would highly recommend this to anyone looking to get started self hosting - it doesn’t just introduce software you should learn, but it also shows you how to configure it.
I will go even ONE step further than others - if you are scared to start a software like Truenas scale that has a GUI has helped me. A lot of the options offered by others are great but can require a lot of command line stuff. There are a few OS’s out there that are more point and click that I had a lot of success with. Truenas scale runs the docker containers that others are recommending.
First of all: take a breath!
Pihole is a great start, and an awesome piece of software. As self-hosting is quite broad, there are quite a few options, so I have two suggestions that should still be relatively simple to continue with, and that I thoroughly enjoyed when getting started.
- Webservers: Something like Caddy, NGINX or Apache (Caddy being likely the simplest choice here), will allow you host your own website! If you open a port on your router, this website can also be accessed remotely (be careful! Without SSL, you should not expose any forms, to avoid those being leaked). A bit outside the realm of “self-hosting” — but Cloudflare allows you to setup SSL with relative ease and also allows you to link a domain your website.
- Game Servers: Many options in this space, so take a pick for a game you like! I am an avid minecraft enjoyer, and regularly setup modded servers to play with my friends. You can find some more info here on how to get started with a Minecraft server implementation called “Fabric”
Have fun! And if there is something more specific you’re curious about, feel free to ask 😀
A lot of people recommend Docker, but I will go further and say to specifically use Docker compose.
That way all the configuration is in a file that you can backup/restore. Updating is really easy, and you will never forget one of the random flags you need to set.
- PiHole - you can use the custom DNS to route domain names to you npm
- npm (Nginx proxy manager) - allows easy access to all your services hosted on one box
I agree, but want to add Portainer. Compose in Portainer takes away the scary SLI/Terminal part.
At least for me, hosting stuff went from «I have no idea what I’m doing» to «This sort of makes sense».
Yes, another great solution.
Get a old workstation and install Linux Mint. From there look into learning how Linux containers work.
I’m curious where you are from and what hardware for self hosting you have. I also want to know what you are interested in self-hosting or learning.
For me, my home lab started with networking. Yours doesn’t have to. For me, I had already achieved System Administration and was working to become a network engineer. Where are you on your path? In truth, starting with the network is not the best, mine required dedicated equipment: a firewall(UDM), switching(ubiquiti), and access points. This is expensive, so perhaps not the best place to stay.
I would say that a good place to stay is with virtualization and a hypervisor. A hypervisor is intended to run virtual machines. I think starting with a hypervisor is a good idea because once you have a hypervisor, you can experiment with just about anything you want. Windows, Linux, docker, wherever your exploration takes you.
Now, I would say the cheapest way to do this kinda depends on you. Do you have a .edu email address? If so, you should be able to receive free licensing for Windows Server through Microsoft imagine (previously called dreamspark). If not, do you have Windows 10/11 pro edition? I would say that Windows server may require dedicated hardware, but if you are already running Windows pro, then your daily driver pc will be capable of running hyper-v.
If you have an old spare computer, you can make it a dedicated hypervisor with either the Windows Server option, or in my opinion the preferable Proxmox. Proxmox may take a little time to get acclimated to since it is Linux command line, but you already have experience with that on the pihole.
Those are my recommended next steps to take. Though, there is plenty more that you can do. As others have said docker is a cool way to make some of this happen. I personally hate docker on Windows(it’s weird and I just want the command line not a UI). But you should easily be able to spin up Windows Subsystem for Linux, install docker and docker compose and get started there without needing any additional hardware. You could also do the same using hyper-v if you prefer and have a pro license.
Regardless of what direction you choose to go, you can go far, you can succeed, and you can thrive. And if you run into any issues, post them here. Selfhosted has your back, and we are all rooting for you.
Side Note: Hyper-v used to only be available on Windows Pro, but if someone knows for sure that it is available on home please let me know and I will update my post.
If you want to give Home Assistant a try like others are suggesting, save yourself some time and hassle and install Home Assistant OS in a virtual machine. While you absolutely can run it in Docker you lose out on some neat quality of life improvements like add ons (which, funnily enough, are Docker containers pre-configured to hook in HA).
What add-ons are you talking about? I run HA via Docker and I have full access to HACS.
HACS installs community integrations whereas addons are like external programs that hook in HA. You can do the same thing with HA in Docker by installing the addon containers separately and then hooking them in manually but HA OS makes it much simpler.
For example I’m running the Mosquitto broker, Z2M, a Visual Studio Code server, diyhue, and Music Assistant as addons.
Docco page about it is here: https://www.home-assistant.io/addons/
The easiest way to get started is using Docker. You can self-host most software using Docker straight from their Github with one command or copy-paste config.
Do NOT expose (Port forward/NAT) your services to the internet if you don’t know what you’re doing. Use it locally using IP:port. If you want to use your services remotely, use a VPN tunnel like Wireguard (Available on Android and iOS too). Modern routers already support it out of the box. Tailscale is also an option.
Later down the road when you start exposing services, I can recommend NPM as your proxy for easy host and certificate management. Expose as little as possible! For added security when exposing applications to the internet, expose your port using a VPS or Cloudflare and tunnel to your home using Tailscale or Wireguard.
To not get overwhelmed you should start small and improve as you go. You don’t need to start with a datacenter in your garage right away. The most important thing is that you have fun along the way :)
Great projects to get started:
Docker seems the way to go for me now! Thank you for the nice write up.
I definitely do not now what I am doing so the word of caution is greatly appreciated!
The whole thing about remotely accessing is probably something I put on my ToDo list as soon as I get a service up and running. Nevertheless reading it and just knowing about Wireguard and Tailscale is a huge benefit to me.
Is there a personal recommendation which of your listed projects to get started with?
Here are a few of my favorites, some of which are exposed, some are not:
- Mealie - Recipe management. Import recipes by URL is my favorite feature, then I tweak and try it out (I have to be gluten free, so this makes it easy to track what worked for us).
- Homepage - a homepage to put quick links to all of my stuff, neat and clean.
- Grafana - for visualization of current data of my systems, paired with Prometheus.
- Technitium DNS - for all of my DNS needs.
- Jellyfin - for all my media, let’s me pick out what my kids can see/watch without me having to look over their shoulder, along with being a great looking solution for me.
- Immich - photo and video management
All of these (and more, this is just a dsmple of favorites) run on Proxmox. I mostly use LXC over docker, personal preference.
Home Assistant is probably the single most useful for me, already mentioned, just about everything at home is automated/controlled through there.
KitchenOwl and Pastes are probably the easiest to setup. Paperless is the most useful for me. Nextcloud can be a bitch to setup once you want to include Office functionality. I recommend the Nextcloud All-In-One to make it a bit easier.
In addition to the ones listed above, I can also recommend Home Assistant if you don’t know it yet. If you like home automation you’re in for a treat.
To add to that, to effectively use docker and basically anything important for self-hosting is to learn the basics of Linux.
A good resource for that is https://learnlinux.tv
This is really helpful. I’ve been wanting to get started, like OP, but knowing how to do it feels overwhelming.
Thanks!
No worries. Enjoy!
Learn how to use Docker. That’s gonna be a big help.
I feel like a lot of the answers in this thread are throwing a lot of things with a lot of moving parts: Unraid, Docker, YunoHost, all that stuff. Those all still require generally knowing what the hell a Docker container is, how to use them and such.
I wouldn’t worry about any of that and start much simpler than that: just grab any old computer you want to be your home server or rent a VPS and start messing with it. Just pick something you think would be cool to run at home. Anything you run on your personal computer you wish was up 24/7? Start with that.
Ultimately there’s no right or wrong way to do things. It’s all about that learning experience and building up that experience over time. You get good by trying out things, failing and learning. Don’t want to learn Linux? Put Windows on it. You’ll get a lot of flack for it maybe, but at the very least over time you’ll probably learn why people don’t use Windows for server stuff generally. Or maybe you’ll like it, that happens too.
Just pick a project and see it to completion. Although if you start with NextCloud and expose it publicly, maybe wait to be more comfortable with the security aspect before you start putting copies of your taxes and personal documents on it just in case.
What would you like to self host to get started?
That takes away a lot of stress. Knowing to just get started and ignore the best approach instead of just a getting started approach and learn as you go.
For the longest time I wanted to get rid if my google drive or google calendar and host one myself.
Email as I have read is something more advanced but I would like to self host my email as well.
Photos eventually too.
As a lot of people have recommended nextcloud that seems like where my interest might be heading.
As a starting point. Are there any hardware recommendations for a toy home server?
Email is often impossible. you can run your own server but you won’t be able to send email to many people because gmail and other larre providers will ignore everything from any ip address you can get. you endeup with email for only people on you server and the what is the point.
just a warning there. Some do self host email but it is the most difficult to host. My life is much better now that I pay fastmail to handle my email.
As a starting point. Are there any hardware recommendations for a toy home server?
Whatever you already have. Old desktop, even old laptop (those come with a built-in battery backup!). Failing what, Raspberry Pis are pretty popular and cheap and low power consumption, which makes it great if you’re not sure how much you want to spend.
Otherwise, ideally enough to run everything you need based on rough napkin math. Literally the only requirement is that the stuff you intend to run fits on it. For reference, my primary server which hosts my Lemmy instance (and emails and NextCloud and IRC and Matrix and Minecraft) is an old Xeon processor close to a third gen Intel i7 with 32GB of DDR3 memory, there’s 5 virtual machines on it (one of which is the Lemmy one), and it feels perfectly sufficient for my needs. I could make it work with half of that no problem. My home lab machine is my wife’s old Dell OptiPlex.
Speaking of virtual machines, you can test the waters on your regular PC by just loading whatever OS you choose in a virtual machine (libvirt if you’re on Linux, VirtualBox or VMware otherwise). Then play with it. When it works makes a snapshot. Continue playing with it, break it, revert to the last good snapshot. A real home server will basically be the same but as a real machine that’s on 24/7. It’s also useful to test things out as a practice run before putting them on your real server machine. It’s also give you a rough idea how much resources it uses, and you can always grow your VM until it fits and then know how much you need for the real thing.
Don’t worry too much about getting it right (except the backups, get those right, verify and test those regularly). You will get it wrong and eventually tear it down and rebuild it better what what you learn (or want to learn). Once you gain more experience it’ll start looking more and more like a real server setup, out of your own desire and needs.
Get Unraid for your server OS. Its nuts how good it is at being beginner friendly, while being robust when needed. It has a docker app “store”, as well as plugins, and a virtual machine manager as well. It also has a very, very nice Web GUI: you manage the server from another PC you use in your house.
I can not overstate how much I learned by starting with Unraid.
Jim’s Garage just did a video on this. He made a docker stack for beginners with directions to his actual videos containing the more in-depth about each service being deployed.
Thank you for sharing!
I will give it try it seems like a great starting point.
To start small setup a static website behind nginx. This requires you to create a basic website or copy a template, it goes somewhere in your filesystem, in linux /var/www is common. Once you have that, setup the nginx service and point it to that location. You can do this locally then expose it to the net or put on a VPS. Here is a dead simple guide presuming you have a remote server: https://dev.to/starcc/how-to-deploy-a-simple-website-with-nginx-a-comically-easy-guide-202g
Once you have that covered, ensure you know how to setup ssh keys and such, then install, configure, and run services. From there, most things are easy outside of overly complicated configurations.
You could try something like YunoHost to get started! It’s kind of a one-click deployment platform for self-hosting, ready to use with user management, reverse proxy with SSL, somewhat preconfigured services to choose from, etc.
Ideally you can also learn the tools needed like Docker, Ansible, etc, but with yunohost and a SBC (e.g. RaspberryPi), or a €5/month VPS (easier if you want to access your services publicly), you will have a ready-to-use boilerplate that you can start building on.
Learning all the individual technologies at the same time might be overwhelming at the beginning, but something like yunohost will allow you over time to learn all the stuff around the deployment itself, e.g. how domains and DNS records work, how the SSL certificates are generated, which services you would like to set up and use, the configuration needed for these services individually, etc. And at the same time you can start using a few useful services!
Then, as you start learning, you could start setting up services one-by-one manually with e.g. Docker, either at the same server or a new one.
Don’t forget to look for the admin documentation for each software you’re setting up (e.g. Nextcloud etc). And look at awesome-selfhosted, it’s a list of more resources and software to use and deploy!
Good luck and have fun!
(Edit: There are some yunohost alternatives you might want to look into, but most of what I found either had a very small selection of software, or had a subscription service etc that they want to sell you, while limiting what you can do on your own server)
I agree with this. I’m running CasaOS on a Pi4. Having the initial ease of one click installs gives you a great start, then you’ll start to find that you need to manage some port assignments, then you’ll start learning about Docker environment variables, then you’ll be managing custom installs.
Awesome-Selfhosted is a great resource. Just browse and try something interesting.
My own recent journey went like this:
Run AdGuard Add DokuWiki, Navidrome, Mealie Set up Cloudflare Tunnels Add FreshRSS, Homer, SearchXNG
I also have Nextcloud on a VPS, but the fun is on the Pi.
That seems like a sensible approach.
The whole area around selfhosting not just the deployment keeps me in somewhat of an analysis paralysis. Like what a reverse proxy is and why it is beneficial, how to set up and configure ssl and the whole area about not using a compromised service kind of keep me from starting.
Locally and not connected to the Internet might be the best way to get started and then I will hopefully someday be able to remotely use my services.
Get a decent router with capability to be Wireguard server, and you can always have access to your services from anywhere, without exposing them. It’s really easy to set up, too.
Start with a VM on your computer and see what you want to do/need from there.
Leaving a laptop on is (almost) free.