Because it's a complicated topic, you're just feeling the actual responsibilities of doing it right that many are ignoring now.
Self-Hosted Main
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
For Example
- Service: Dropbox - Alternative: Nextcloud
- Service: Google Reader - Alternative: Tiny Tiny RSS
- Service: Blogger - Alternative: WordPress
We welcome posts that include suggestions for good self-hosted alternatives to popular online services, how they are better, or how they give back control of your data. Also include hints and tips for less technical readers.
Useful Lists
- Awesome-Selfhosted List of Software
- Awesome-Sysadmin List of Software
I got hooked by Youtube videos from TechnoTim Christian Lempa and others. Videos include screen capture what they are doing so it bridges some things that may be missing from text guide because it may be 'obvious' if you are doing it all the time.
I keep to principal that I have two 'sections' in my lab 'production' and 'testing' Testing I am mucking about testing stuff it works and production has some stuff that I rely on.
On a certain level, most of those things don't matter.
Yes, reverse proxying and being able to point a domain is nice
A VPN more secure
Cloudflare (either tunnels, DNS, or DDoS protection) is also good
You can always do better with more "best practices" but if you want to stream a movie to some friends? Throwing up a server, opening a port and providing an IP just works as well. The better you get the more fancy you will be.
Its very much a tinkering hobby. Find a reason you want to tinker, and if you enjoy the tinkering you will keep up with it. My current dashboard points to a direct IP. Most of my services are reverse proxied but for some reason I can't get CORS to work well with dashy. At some point I'll get around to fixing it, but it gets the job done now.
As a computer science student you should know: just break it down into small chunks.
- Get service to run locally (IP / port)
- port forwarding, access remotely
- Set up a free DuckDNS domain, Lets Encrypt, use for a bit
- Buy a cloudflare domain, set up dynamic dns, Lets Encrypt (again), swap away from DuckDNS
- Set up Nginx reverse proxy, port forward to that instead, proxy to service’s internal IP + port
- Run more things!
That’s generally what I did.. I’ve been self hosting for about a year now and I’ve got 6 services going now.. once you get going, it’s quite easy!
Senior DevOps Engineer here with 15+ years of experience in system engineering now, even with my skillset and experience I am improving my setup piece by piece.
When I look at my old docker-compose versions and general setup, I sometimes laugh how I could've been so dumb.
You don't have to and won't learn and set everything up at once, ever.
Well, I can somehow understand you, but I didn't have so many problems until now. Especially reverse proxy is in my opinion pretty well documented. I got everything running what I wanted, except LDAP. I can't seem to understand this shit and there aren't any good guides either :D.
For VPN home labbing you should check out wireguard, it's stupid simple and very powerful. Reverse proxy stuff I handle through nginx, mostly because I'm using it for web hosting anyways and I'm comfortable with the workflow. I don't bother with cloudflare much because I host a jellyfin instance and I believe that's against their TOS, but just take it one step at a time and you'll figure it out in no time.
Begging the question.
Also, "Reverse proxy, VPN, Cloudfare bullshit" - you don't need these things.
Skill issue.
It was pretty easy for me.