this post was submitted on 24 Nov 2025
130 points (97.1% liked)

Selfhosted

53286 readers
1222 users here now

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.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

I've been dabbling with selfhosting for a bit now (home assistant and nextcloud), but it's clear that I lack a fundamental understanding of networking. For example:

  • I've got OpenWRT on my router, but no idea what I'm doing when it comes to firewall settings, DNS, DHCP, etc.
  • I've got a domain thru Porkbun, but no idea how to properly setup my DNS settings there to route to my local machine.
  • I've got NGINX running in a docker container in a VM and can get to the UI on my local network, but no idea what I'm doing wrong with my attempts at a reverse proxy.

Does anyone here have links to a good in-depth tutorial series for learning about securely selfhosting?

top 32 comments
sorted by: hot top controversial new old
[–] theit8514@lemmy.world 15 points 1 week ago (2 children)

I think NetworkChuck has a good set of tutorial videos about self hosting. For the most part you can search for what you want to find info on and he probably had a video on it. E.g. Nginx: https://m.youtube.com/@NetworkChuck/search?query=Nginx

[–] anticonnor@lemmy.world 3 points 1 week ago (1 children)

I’ll check him out, thanks!

[–] hoppolito@mander.xyz 6 points 1 week ago

When I was stumbling on some of his output it unfortunately felt very click-baity, always playing on your FOMO if you didn't set up/download/buy the next best thing until the other next best thing in the video after.

In other words, I think he's cool to check out to get to know of a thing, but to get a deeper level of understanding how a thing works I would recommend written materials. There are good caddy/nginx tutorials out there, but a linux networking book will get your understanding further yet.

If it has to be video, I would at least recommend a little more slowed down, long-form content like Learn Linux TV.

[–] abeorch@friendica.ginestes.es 1 points 1 week ago

@theit8514 @anticonnor I tried to watch one of his videos (it was 20 minutes ) after the first two minutes in before he actually provided any facts. I think it got a bit better. But in terms of starting out with selfhosting I'm not sure where I would start in his videos.

[–] phanto@lemmy.ca 11 points 1 week ago (1 children)

I'm a bit farther along, but it's all been trial and error (and error, and error..) So, commenting because I would also like some of this info. My DNS is a disaster! Still using IPs to access my VMs, mostly.

[–] shadshack@sh.itjust.works 1 points 1 week ago

I know there may be some which are better for various reasons, but look into nginx proxy manager to get those resources behind some URLs with SSL. I like it because it's got a pretty easy to use web interface, but I know similar things can be accomplished with traefik and like a 3 line per service yaml file. I use NPM and a pihole for DNS to point to the NPM server, and it's great for me, including automatic cert rotation with LetsEncrypt.

[–] irmadlad@lemmy.world 10 points 1 week ago* (last edited 1 week ago) (1 children)

In the past, I've found a lot of valuable resource at

One thing you really need to establish right from the start is the habit of taking detailed notes. It's tedious, bothersome at times, but the ability to backtrack something that may not have deployed quite like you wanted, is invaluable. It will also save your ass in a month when you've forgotten everything you did before.

Take notes!

[–] mic_check_one_two@lemmy.dbzer0.com 6 points 1 week ago (1 children)

Yup, good notes are really the difference between beginner and expert self-hosters. Write the notes as if they’re documentation to be read by someone who has never seen them before. Don’t tell yourself that you’ll remember things; that is the devil talking. You will forget in 6 months when you’re looking at it again.

[–] irmadlad@lemmy.world 2 points 1 week ago

that is the devil talking

It truly is. At my age and with other things combined, I can turn around twice in the lab and my brain will flat line.

[–] SomeDudeFromSpace@lemmy.ml 8 points 1 week ago

Check FUTO’s guide. It’s great for beginners:

[–] Nephalis@discuss.tchncs.de 7 points 1 week ago* (last edited 1 week ago) (1 children)

Well my first reply is: setting up yor own router is like to learn driving with a touring car. You just need to know a lot to set up/handle everything properly. Its just not easy and in m opinion the most wrong point to start.

DNS-wise I would like to recommend something like pihole. To me it was my first thing I installed and used until this day and also the handling of DNS is quite easy. Maybe you should consider lerning other things before setting up your own router.

[–] abeorch@friendica.ginestes.es 1 points 1 week ago (1 children)

@Nephalis @anticonnor I think there are two approaches. 1) Start with desktop linux, a vps or raspberrypi to start building linux and networking skills or;
2) start with something more packaged that provides more guidance on delivering services 'out of the box' like yunhost - which can provide some things off the rack services and with a templated approach - that then allows you to play around a bit while you learn the basics

[–] abeorch@friendica.ginestes.es 1 points 1 week ago

@Nephalis @anticonnor Yunohost has a starting point for setting up an instance - yunohost.org/#start @elena is also writing something up.

[–] Alphane_Moon@lemmy.world 4 points 1 week ago* (last edited 1 week ago) (1 children)

I am relatively sophisticated on LAN/local services (been running Raspberry Pi since 2018 or so), I was never able to setup a reverse proxy to get a true self-hosted system (i.e. remote access); got roadblocked by nginx and setting up letsencrypt with reverse proxy support.

In general, true remote access is IMO exponentially more difficult and demanding than getting things running on your local network.

For anyone starting out with self-hosting, I would strongly recommend LAN/local services where you can relatively easily deploy multiple very useful and powerful services (SMB/NAS, Jellyfin, Pi-hole, Qbittorrent-Nox).

I would suggest looking into DietPi, it's IMO the best RaspberryPi/SBC distribution there is if you want things to just work and not bug you. Very helpful developers and community too. Excellent, user friendly CLI management tools for headless operation.

[–] derpgon@programming.dev 3 points 1 week ago (2 children)

You basically never want to expose your local network to the internet. The most secure and simple way are either Tailscale or WireGuard combined with a VPS that is exposed to the internet and takes all the beating.

[–] Alphane_Moon@lemmy.world 2 points 1 week ago (1 children)

This what I was trying to setup when I first started (with Nginx, domain and free tier version of Google Cloud). I wasn't able to get it all running with Nginx and HTTPS.

[–] LycaKnight@infosec.pub 2 points 1 week ago* (last edited 1 week ago) (1 children)

I use Tailscale and Nginx Proxy Manager. Very easy to get it running. I use DNS Challenge with my Domain Provider. The Domain points to my Tailscale IP. So I don't need to open anything.

[–] derpgon@programming.dev 1 points 1 week ago

I use a similar setup with Traefik instead of Nginx PM, and Headscale instead of Tailscale. It is almost the same kind of setup.

[–] mic_check_one_two@lemmy.dbzer0.com 2 points 1 week ago* (last edited 1 week ago)

Yeah, the primary reason people end up exposing things to the internet is because of friends and family. I can call my tech-illiterate “anything more difficult than logging into Facebook has her throwing up her hands in defeat, saying it is too hard, and tech is just too complicated these days” mother-in-law and walk her through setting up Plex… But that only works because Plex is exposed to the internet. If I had to walk her through setting up Tailscale on her living room TV before she could connect, it would be a non-starter.

[–] Jakeroxs@sh.itjust.works 4 points 1 week ago
[–] sem@lemmy.blahaj.zone 3 points 1 week ago* (last edited 1 week ago)

I am saving this thread to try and find a good tutorial for myself. That said, I have had a great experience on #networking on libera.chat, which is IRC. They have been very patient with me and often willing to go into detail in a beginner-friendly way.

Unfortunately, they are not accessible via the web chat, so you have to use an IRC client and register and account, which is relatively painless, but might take 10 to 15 minutes to get started.

https://libera.chat/guides/connect

[–] dieTasse@feddit.org 3 points 1 week ago* (last edited 1 week ago)

Seems like you know what you need to study. I'd suggest searching for the topics and reading. Don't try to skim, there is a lot to read and learn but it will be worth it, it will open many doors for you. Tutorials in this domain have usually an issue that following a track to achieve something the author can't really explain everything on the path to the depth because, well, it would be lots of reading anyway and it would end up to be documentation rather than tutorial.

What I tend to do, it may or may not help you, depends on your individual way of learning, is I search for a topic to find some good article. Takes time, but then, usually, after the read I have more things from the article I need to understand more. This sort of branching leads to a good wholesome of a knowledge. In the past I used to skim a lot, which resulted in a lots of trial and error instances, eventually it lead to frustration from not knowing what the heck I was doing. When I realized reading and understanding should not really be skipped/skimmed, I started learning a lot.

[–] driftWood@infosec.pub 2 points 1 week ago

I find Wikipedia to be a great source for learning new topics. I know you asked for videos, but you can still give it a shot. Plus you can take detours while reading about a topic by clicking on links in the article. This gives a more well-rounded understanding IMO.

[–] foggy@lemmy.world 2 points 1 week ago* (last edited 1 week ago)

Idk of any good series but techno Tim has a great video on using cloudflare and traefik to get wildcard letsencrypt ssls for your docker services.

https://youtu.be/n1vOfdz5Nm8

[–] frongt@lemmy.zip 2 points 1 week ago

Sounds like you should just explore TCP, IP, subnetting, routing, and DNS on their own, not necessarily from the perspective of self-hosting.

[–] Grass@sh.itjust.works 2 points 1 week ago (1 children)

I have some script or maybe it was a program in a container that checks my isp IP and uses the domain provider api to keep the DNS set to the isp IP if it changes. I'm using opnsense but I'm sure openwrt has the same thing in some form.

[–] mic_check_one_two@lemmy.dbzer0.com 1 points 1 week ago* (last edited 1 week ago)

That’s just DDNS. There are different ways to do it, and some routers come with a DDNS service ready to go. DuckDNS is commonly recommended. There are even images like Cloudflare-DDNS, which allow you to run it in a container.

[–] UltraBlack@lemmy.world 2 points 1 week ago (1 children)

Firstly, use caddy. Fuck nginx and the rest. Pointless complexity

[–] phi@slrpnk.net 3 points 1 week ago

Just run nginx proxy manager, no need t manually touch the config if you don't need complex stuff

[–] phi@slrpnk.net 2 points 1 week ago* (last edited 1 week ago)

Maybe try to isolate the problems a bit and tackle one at a time. DDNS is only needed yo get to your router from the world wide web. Once you can resolve a name to your router's changing public ip address you can continue to think about port forwarding in openWRT. Once you can forward incoming traffic to a host behind your router, let's say port 80 to your nginx instance, then you can think about configuring nginx, let's say mapping to different running docker containers depending on the name in the url .... etc.

[–] PlexSheep@infosec.pub 1 points 1 week ago

Studying computer science / Cybersecurity certainly helped. Besides that, trial and error for me.

[–] monogram@feddit.nl -2 points 1 week ago

Use caddy server instead of nginx