Where to find guide on self hosting for a complete beginner?

jonathanvmv8f@lemm.ee to Selfhosted@lemmy.world – 81 points –

I am completely new to the realm of self hosting. I don't know a single thing about how I can self host stuff. Regardless, I have the curiousity to learn it by myself but I don't know where to start. I cannot find any sort of wiki or FAQ articles, nor do I have the ability to ask the forum for every single problem or doubt I encounter during the setup. Can someone direct me to a beginner friendly site that teaches all there is about self hosting and all the questions and misconceptions that come with it?

Additionally, is a self hosted server only accessible inside my home? What about accessing the services outside, like Bitwarden or Nextcloud apps that require syncing and availability of data wherever I am? If it is useless outside, there would be no point for me personally to self host in the first place since I am perfectly fine with using cloud services for now and the convenience that comes with it. Plus, no one else in my family cares about self hosting and I don't wish to spend the effort to convince them to in vain, so setting up a server for convenience of everyone at home is also out of the question.

33

I started out by setting up a Pi-Hole for my house and learning and failing small to get my head around how Linux worked and how to actually use a command line / SSH / the works.

From there I went to the website https://www.smarthomebeginner.com/ (specifically this guide) which was extremely helpful in understanding the basics of services, networking, DNS, etc. I’d say that if you’re able to get a full setup going with Traefik on Docker, that’s a really good setup for success for self hosting just about anything that can be Dockerized (which is basically anything).

Now I’m able to just read the documentation for a service at hub.docker.com, figure out how I want to customize it for my specific setup (e.g. putting gluetun in front of specific containers, setting up cron jobs to automate some container tasks, and creating a suitable backup) all with my knowledge of how this stuff works which I gained through lots of trial and error with the above guide.

That’s really all there is to it: just diving in, making mistakes, and learning from them until you start to build your knowledge of how stuff works and are comfortable going above and beyond copy and paste.

Others have already supplied a bunch of very handy guides and sources, as well as the disclaimer that the possibilities for selfhosting pretty much anything are endless.

That being said, I want to supply my own source, a guide I've started writing up to bridge exactly this gap: https://how2host.it. It's still in development, and I'm working on more and more detailed guides. It's also most definitely opinionated (the use of Linux as the host, docker as the containerization and nginx as the reverse proxy, as well as a bunch of other things) but it'll provide you with a solid foundation of knowledge which you should be able to expand from yourself.

I hope it can be of use to you!

Simple, yet better UX than most server-related content. Thanks for sharing

Asking broadly like this is akin to asking for a guide on how to cook, it’s generally too broad for there to be a single guide. You first need to figure out what your goals are (you state one already, you’d like it to be externally accessible), determine what services you want to host, and then start looking at how to do so.

The advice I’d give is to start with a solid base, you’ll need something to self host on and it really shouldn’t be the PC you use for other things. Get it setup to run a virtualization OS such as proxmox and use that as your starting point. Then do a lot of reading. I spend probably three to four times as much time reading about the service I’m planning to deploy compared to actually doing the work to deploy it. Lastly, plan. You should have a solid plan in the beginning of how you want your service to work (what will be external vice internal only, how will you setup the networking stack to do that, are you going to have a domain, and will you use subdomains or folders to divide services, what does your IP space look like, will you host your own firewall to make the networking more controlled or fight with your ISPs router, do you want to use docker, kubernetes, or maybe full VMs for each service, do you want/need a UI to manage things from or are you comfortable with CLI, etc). These answers will lead you to guides for various services as well as service specific forums where help is more focused.

That is a great analogy of explaining the broadness of the concept of self hosting that I wasnt able to understand from the other comments.

As a beginner, I would like to start out with a storage provider like Google Drive (& Google Photos). I currently don't have any hardware for a home server but I can get one as per my requirements.

The biggest issue for me would be the OS running in the home server. I would preferably want something compatible with Windows since I have worked with Windows for my whole life. I am also fine with working with Linux, however I don't want to spend weeks banging my head on setting up and using Linux before I even start configuring it for my home server. I will be able to handle learning about networkings of the server on the go and troubleshoot problems as long as the OS does not bother me. As with self hosting, I am a beginner in the field of Linux so I don't know what 'distro' would be best for me for this purpose, but nonetheless I will research more about it thanks to your headstart.

I still feel like a noob, but I spent a lot of time to get to this point where I am now. I can install fresh OS and run Nextcloud in less than 1 hour probably. When I started it took few months, I was burning all my free time but I loved it. It takes only few steps, but its probably a pain if everything is new. My steps would be:

  1. Install Debian OS

  2. Install docker and docker-compose

  3. Install portainer (also docker container, has simple web GUI to manage all other containers)

  4. Load docker-compose (with nextcloud and db config) in portainer stacks and start nextcloud container

Googling steps above for your OS or hardware should point you in the right direction, but there are many other ways of course. You can use any OS, but Linux is the way to go, especially if you are looking for help on lemmy.

Im accessing server using wireguard, it behaves like Im home and it needs to be set on each client (scanning QR code or loading config). Wireguard requires opening port 51820 on your router, but that should be safe enough. Alternative is tailscale that doesnt require opening port at all. Other options are probably too complex (read unsafe) for begginers afaik.

If you are going to selfhost cloud service then also look into backup solutions. Losing data is not fun at all.

My post might not answer your questions, just wanted to share my thoughts. If you decide to dive into selfhosting, Id say arm yourself with time and patience and get some cheap or free hardware to start with (old laptop with dead screen and battery should be more than enough) and enjoy your linux advantures.

Good luck

Wait, is an old laptop also good enough for setting up a home server? I thought you would require a completely separated and dedicated PC box like the ones you can see in studios or offices. That's new to me!

You can use any computer as a server, you just have to realise that low powered computers will be able to do less than something more powerful.

As you get into it more, you might find that you need better hardware, or more network ports etc., but most of us would probably be ok with a decent PC.

Definitely look into laptop servers. They have the benefit of having a built-in screen, keyboard and battery in case power goes down. IMO, as a fellow newbie, it's an easy way to dip your toes into hosting using existing/cheap resources

Even small SBC like raspberry pi can be a home server. SBC, laptop, SFF PC, office/gaming PC, server rack, ...they are all options with different pros and cons. What hardare you need depends on your use case. Free or cheap hardware is best to start with IMO. You might find you dont even need an upgrade, and if you do, you will probably know what you need

Anything with a CPU, RAM, a SSD/HDD and a network port can host something.
Even an old smartphone could do it.
Could it do it well? No. Can you do it? Certainly

It's like with tools: You can use a drill to make holes or use it as a hammer. Is it a good hammer?

At the same time, despite what others have said, ho slow. Don’t fall for the all too easy trap of wanting to get the latest and biggest. I ended up with a 2U quad sock server with 256GB RAM… why? Uncalled for and totally not necessary! Start slow and when you find the services you’re hosting no longer performing the speed you’d like, then gradually scale up.

I see you want to store photos/files and you mentioned bitwarden.

Remember: Backup, backup and backup.
And if possible: Test it.

Agreed.
I spent so much time wrapping my brain around traefik and reverse proxy until some helped me and I setup traefik in a whole week (8-12h each day).
But most of it was research and trying out. And failing hard for the first few times.

I think everything I ever learned was one piece of software, one problem at a time.

Choose a platform: proxmox, bare Linux server, Unraid

(Look up comparisons)

Then start looking up install tutorials for different pieces of software.

And just take it like that, one piece at a time.

LearnLinux.TV is a pretty nice resource. Redhat offers some guides, too. I think I started on youtube and that led me to written resources, eventually.

A lot of software actually offers its own guide with it. You could also go the IT Cert route and learn CompTIA stuff. It's more rote and less hands-on, though, but it might point you towards concepts you want to learn.

Additionally, is a self hosted server only accessible inside my home? What about accessing the services outside, like Bitwarden or Nextcloud apps that require syncing and availability of data wherever I am? If it is useless outside, there would be no point for me personally to self host in the first place since I am perfectly fine with using cloud services for now and the convenience that comes with it. Plus, no one else in my family cares about self hosting and I don't wish to spend the effort to convince them to in vain, so setting up a server for convenience of everyone at home is also out of the question.

It is only accessible from your local network (if it is there in the first place, you can always selfhost on rented virtual private server), until you make it accessible. There a different ways to achieve that:

  • Wireguard tunnel
  • cloudflare tunnel
  • (reverse) ssh tunnel
  • dynDNS
  • opening ports on your router

Which is the way for you depends on the circumstances, how your ISP connects you to the internet mainly

Tailscale might also decent be an option for remote access, right?

You forgot reverse proxy

A reverse proxy solves another problrm, doesn't it? In any case it requires one of the solutions I mentioned to make your stuff accessible from outside.

It is a 50% alternative to port forwarding as you still need it. But instead you can host many things on one port and route it instead of 1:1

If you want to host miltiple things with only one ip I woild always recommend a reverse proxy, so it is good that you mention that but since it isn't strictly necessary, it is no alternative imo.

Take a service you enjoy (say movie watching) and researvh something that interests you.
For example jellyfin or plex. Now you get to the question of how to implement that.
No you research that. 10-40 browser tabs later you got most of the neccessary information and implement it.

Repeat that cycle.

Now you want to pull it all together (say make it reachable from outside). You research security practices and find, that maybe you want a reverse proxy + 2FA + Fail2Ban.
Now you do it again but with the intention of not one single application but many.
When you get your stack together, you begin the next project like securing your stack, improving it etc.

Theres no FAQ on how to start it because everyone begins differently.
Some do media hosting, some want a backup solution centrally managed, some need a document management system, accounting/budgeting, security, development etc.

My personal journey was
Raspberry Pi
Linux
OpenMediaVault
Network shares for Windows
Plex
Ditch plex for Jellyfin
Find out docker exists
Dive into torrenting so *arr stack + Jellyfin automation
Get help from a discord on how to get started with traefik
Introducing Authelia
Trying random projects

If you want a hand holding (no offense. Everyone may need it at some point) guide, take a look at Ibracorp. Both the community as well as this, reddits and other communities have awesome guides on how to configure something.
But at the core of everything is one: What bothers you and how do you intend to change it?

There's no guide thats covers everything, because the possibilities are nearly endless.

The first step is to get a server and choose an OS. You can build your own server at home or you can rent a VPS.

If you rent a VPS your services will be accessible from everywhere. If you decide to get a homeserver everything will be only accessible at your local network. You can acces your services from outside through VPN or port forwading.

When your server is ready, you can start to host your services. Just look at the documentation of the project e.g. on github.

Like the other commenter mentioned, ChatGPT can be really helpful for these kind of questions. I’m not sure if there’s any “starter guide” since everyone starts with different wants and needs.

I will say, you should look into Tailscale once you’ve got your services up and running on your home network. Tailscale makes it simple and secure to access those services from outside your home network without any port forwarding.

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

Fewer Letters More Letters
DNS Domain Name Service/System
HTTP Hypertext Transfer Protocol, the Web
IP Internet Protocol
Plex Brand of media server package
SBC Single-Board Computer
SSD Solid State Drive mass storage
SSH Secure Shell for remote terminal access
SSL Secure Sockets Layer, for transparent encryption
VPN Virtual Private Network
VPS Virtual Private Server (opposed to shared hosting)
nginx Popular HTTP server

[Thread #131 for this sub, first seen 11th Sep 2023, 11:55] [FAQ] [Full list] [Contact] [Source code]

I‘ve recently started using Tailscale for my home setup and I really can‘t recommend it enough. In my opinion it takes a lot of the dangers regarding IT security out of self hosting. Depending on who you ask it is not true self hosting, but I couldn’t care less :)

With Tailscale you can create a VPN for your devices including your phone and even expose services to the outside world with SSL already setup (havent tried that out, yet)

They have guides/tutorials for a lot of stuff (web server, Minecraft).