I have several years of Linux experience and I know how to fix my own problems, and I have experience self-hosting using Docker and Docker Compose, but I really feel that I don’t know how to self-host and that I just copy and paste commands without understanding it, I would really like to learn how to self-host by myself but I don’t know how I can start or with what resources for newbies I can start with.
I am interested in self-hosting several services, but the one I am currently most interested in is changedetection.io, as there are multiple such services but they all require a membership fee, and I prefer to self-host on my own.
May not be ideal for everyone but most of the time I want to learn something, I just start doing it.
Last year, I basically had no idea about self hosting and I started off with immich. Problems started to arise, but is solvable by searching online.
I also read Lemmy a lot and sometimes from this very community I get tips (such as fail2ban)
This is how I learn and half the reason my home lab exists. I need projects to get/stay motivated.
Day 0 - Get Your Own Server - https://linuxupskillchallenge.org/00/
Learn about zero trust, least privilege, reliability, and basic security for each service you want to expose to the Internet, then just try it out.
Even better, don’t expose it at all. Netbird will work fine.
+1 for NetBird
https://github.com/awesome-selfhosted/awesome-selfhosted - just pick one or more services from the list and start looking into their documentation.
YouTube and the web are full of information and guides how you can do it. Me personally I would suggest you to use Docker container and Docker compose if possible. You can see how you can install Docker or Podman to run the containers.
Get to grips with Docker. OCI containers are the standard method of self hosting basically everything now, so once you’re comfortable with Docker and compose files, literally anything you could want to host is available as a drop in component for your system.
An excellent way of playing around with Docker is to install Dockge. It’s a web UI with some really helpful features. First, it can convert Docker Run commands into compose files for you (once you start to play around with this it’ll be clear why that matters), and second, its very good at pointing out where and how you’ve made errors in your compose files. But most importantly, unlike Portainer (the most popular Docker UI) it works with the Docker command line rather than trying to replace it. With Dockge you know exactly where all of your files are and if any part of your setup breaks you can repair it very easily. It also doesn’t have Portainer’s problem of flashing error messages on the screen for 0.3 seconds then whisking them away. It exposes the entire Docker terminal output so your debugging process is much, much easier.
You’ll also want to learn about reverse proxies (I reccomend Caddy for its unbelievably simple config file; an entire site is three lines). These are really important for serving multiple different services from one source.
For anything that you can’t run in Docker, VMs are an acceptable solution, and LXC containers are a better solution, but one that requires a little more work to get to grips with (fun fact, LXC has its own web UI, which is fantastic, but almost nobody seems to even know it exists). Since you’re already familiar with Linux, you may want to ignore the suggestion to use Proxmox and just set up a server with your preferred flavour and go from there. All of this can be done with any modern Linux distro, so you might as well work in an environment you’re comfortable in.
Just jump in tbh. Choose one service you want to try, get it up and running, and play with it
Few bits of advice I have is to plan that you will tear it down a few times. Couple of reasons. One, that way you don’t have to plan to have it perfect the first time. Play with spinning up a VM/container, installing stuff, getting something working, without the stress of needing it to be perfect. Second, because it’s good to know how you did something and know you can repeat it.
Write everything down as you go. For me, I made a huge readme to keep track of things I did, again this helps with if you fuck up you can always redo it. Trust me, this will save you. Readme in git, Google docs, something you can reference when everything is down.
Finally, DO NOT choose something your first time that is open to the public. Start small. Something private like Plex/jellyfin, or tandoor, something just for you. Public services are a can of worms. Maybe you want to start with Lemmy, but work up to it. For more obvious reasons like you have an expectation of uptime and you need monitoring, which will require knowledge of all of that, but also more nuanced reasons, like, we’ll do you know how to register csam? Because I didn’t know the process until I started hosting services for the public. Just don’t for now. Hold off until later.
Anyway, hope that helps! Have fun, and don’t be afraid to fail. Remember, we can’t ever plan not to fail, but if we must fail, fail fast
Install proxmox, and play around with Linux containers, if it goes wrong just delete it and start over. Also installing change detection is quite easy using helper scripts: https://helper-scripts.com/scripts?id=Change+Detection
+1 for starting out with Proxmox! I’m about to switch my main server over to it, and I wish I started out using it. I’ve played around with it for a while on a second server, and being able to use snapshots and Proxmox backups from the start would’ve saved me so much time.
I’ve heard a lot about Proxmox and I always thought it was some kind of VPS, so I can selfhost it for myself?
And another problem that I had with my previous selfhosting attempts is that I didn’t really know how to solve my problems, I could run the script and set up my domain, but when it comes to solving some problem I really couldn’t because or there was little specific documentation of my specific problem.
For example, I remember having selfhosted Nextcloud and when I wanted to enable ffmpeg so that my videos had a miniature I found instructions on how to do it but with different selfhosting methods.
Proxmox is a hypervisor, which is an OS that is built to run Virtual Machines (proxmox also runs containers). It is open source and can be installed for free, just like any other linux distribution, the same way Windows is installed. There are tons of tutorials out there on how to use it.
From there, you could setup some popular containers, including nextcloud, or even install full OS’s in virtual machines to install software manually on them. It is a great first step, especially if you have limited access to hardware.
Holy shit, that sound super useful, thank you so much and everyone who has answered.
I went Proxmox when I was in your shoes a few months ago.
It installs like a Linux OS so you already know how to do that.
You get a webui to work from.
From there, YouTube is a massive help. Watch videos on “how to install WHATEVER on Proxmox” and just replace WHATEVER with whatever you want to prod until it works.
My first service was Home Assistant, which I already ran on a Pi. I had that fully migrated in a day giving me a spare Pi.
Next it was Portainer, and used that for Adguard and Uptime Kuma, and then I got fancy and threw secondary servers of those services on my pi and put that on the network as a fail over.
So yeah, just install it and try to do shit, YouTube is your friend.
Over the last few months I’ve made a whole bunch of different combinations of VMs, LXC and Docker until now, where I have Home Assistant, a NAS and a Debian server which I deploy docker stacks into.
At one point I had about 15 different machines I could spin up, but now it’s just the 3. The great thing about Proxmox is you can just create and destroy to your hearts content
Yes, Proxmox, on basically any device, expand as heart desires from there (assuming some areas/services are more within your interest or liking - an ez way to speed up the knowledge assimilation).
I would instead use VMs as on most hardware there is almost no overhead except for ram usage.
Start with a simple, basic service. Think of something like a web server or ntp. Understand how these services affect your environment with respect to security, performance, availability, maintenance, backups, other services, firewalls, routing, DNS, monitoring and notification, documentation, change control, etc. Those are the hard parts of hosting and if you find ways to be effective with a simple service the others will be less daunting.
This is a recent version of a guide I used to get started with home servers. I learned a lot following it and I can now manage my own home server with a lot of apps.
https://www.smarthomebeginner.com/traefik-v3-docker-compose-guide-2024/
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 Git Popular version control system, primarily for code LXC Linux Containers NAS Network-Attached Storage Plex Brand of media server package VPS Virtual Private Server (opposed to shared hosting)
6 acronyms in this thread; the most compressed thread commented on today has 7 acronyms.
[Thread #779 for this sub, first seen 3rd Jun 2024, 05:05] [FAQ] [Full list] [Contact] [Source code]
Depends, if you want something that just works, install TrueNAS scale or CasaOS. Or if you wanna have more flexibility, try out proxmox…