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.
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.
I’m honestly more scared of portainer than actually running compose from CLI 🤣
Learn how to use Docker. That’s gonna be a big help.
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.
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:
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
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.
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!
As a homelabber and systems admin, I would start with learning how to use Linux on the command line.
It’s all well and good looking at docker, but if you don’t know how to move about or edit on the command line. Your going to get stuck real quick.
Once your happy doing simple tasks on the command line, I would actually look at running something like wordpress on a pi or VPS. That will help you understand how to connect services together, and cement your basic command line knowledge.
I am not unfamiliar with Linux.
Kind of lucky/unlucky as a broke student I did not have money to buy a new Windows machine.
Now I am kind of glad about it.
Docker on the other hand I have had barely any contact with it so far. So I definitely check that out.
No one has said it but trash guides is a pretty decent resource.
Trash guides did not show me anything when I tried to look them up. What exactly is that?
It’s how to use radarr and sonarr https://trash-guides.info/
I assumed you were self hosting media downloaders
Perhaps you aren’t
If you want an easy way to host, yunohost can be a good place to start.
Start small. The hard part isn’t installing a lot of software and getting it running. The hard part is keeping everything updated over time. So install one interesting service, and then figure out how the update process goes before installing another. Hopefully the worst thing that happens is you install services and use them only to have the computer fail in a few years after you depend on them and you can’t figure out how to get the data into the new version. There is also the very real possibility that your service is compromised by an attacker.
The hardest thing I face is the definition of small.
I struggled with the main definition of small. Thankfully there are kind people here to guide me in the right direction.
Starting with a service I do not just yet want to rely on is my main goal to build it up from there.
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.
What hardware do you have already? Is pihole running on a rpi? Look into setting up wire guard or tail scale. Then you can have pihole on your phone while your not at home.
Go old school and setup some basic website with apache2.
Yes the piHole is running on a rpi.
Never actually thought about having it on the go. Cool idea!
Pivpn is the package to get. Makes wire guard dead simple to setup. Just have to do a port forward on your router
You can set up Bookstack and then use it to document everything you’re going to set up later!
Hosting Bookstack seems a bit much for someone who’s just getting started.
Do you think so? I thought it’s comparedly straightforward
Watch some YouTube channels like Jeff Geerling or Hardware Haven. They along with others, made the daunting task or self hosting manageable for me. Great tips with helpful pointers, and they lay things out fairly well, on their videos and their websites.
Thank you! I will definitely give them a read/watch.
My adventure into self-hosting started with a Synology NAS maybe 5 years (?) ago.
With just the built-in software, I was able to replace Google Photos, Evernote, Dropbox, Google Calendar, Google contacts, and Google Play Music and Movies.
Then as I learned how to use docker, I was able to replace more services.
There may be “better” options out there beyond what Synology offers, but it’s been such a “set and forget” experience, that it’s easy for me to recommend them as an option.
The biggest barrier, IMO, isn’t the learning curve, but the initial investment for the NAS + HDDs and the upgrade path as your storage needs grow.
This is where I’m at: a Synology running a few services like Plex for my family and friends. I’m hoping to learn more and help us all move from walled gardens even further. Some of Synology’s software can feel a little clunky to use but generally I’ve found it to work great despite my limited knowledge.
Some of Synology’s software can feel a little clunky to use but generally I’ve found it to work great despite my limited knowledge.
Yeah, I make regular use of some of their built-in apps (Note Station, Drive, Photos).
But they aren’t perfect.
For example, Note Station has no good way to export the data for use outside of Note Station (poor data portability) and Synology Audio just feels so outdated. Photos is their best software, IMO.
The beauty of self-hosting this stuff is that you can use any third-party software that reads the files, and you’re good to go. Your music, videos, photos, and documents are available as you see fit.
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.
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.