this post was submitted on 04 Jan 2024
3 points (100.0% liked)

Selfhosted

40173 readers
1100 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.

Resources:

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

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

I've been slowly working my way though a list of skills to learn, both to put on my resume and as personal growth. Networking is the next thing on this list. I am not sure what I am looking for, but I want to start another project. I have built many a personal computer, but the world of networking is a pretty foreign concept to me.

I have experience with building computers and a minor glance at the network-side of things. I've set up a Pi-Hole or two and set a basic CUPS server up on a RPi0w, but beyond that, I have no idea what I'm doing, or even what the possibilities are. I just see posts like this and think that it's a pretty cool hardware project.

Is there any resources you recommend to start learning, maybe what the hardware does? From my outsider's perspective, I see a lot of people's racks have at least a router, switch, and firewall, along with various other machines.

E: thank you all for the suggestions! I'll have to take some time to figure out what to do first

top 7 comments
sorted by: hot top controversial new old
[–] [email protected] 1 points 10 months ago

Check out Linux Upskill Challenge there's a community on programming.dev [relative link]

It's a bit askew from what you're asking about but very related and a nice onramp to certification options that have some value in the job market.

As a more direct answer, a bit more of a formal approach to learning networking can be persued by following the networking recommendations at Teach Yourself CS

[–] [email protected] 1 points 10 months ago* (last edited 10 months ago)

I would suggest more learn by doing approach. Learning OSI model etc is nice, but it is quite jargon :)

Use some old PC as a server, and get some network cards into it, and use it as firewall/router. Route your home network/NAT/DNS/DCHP through it. Raspberry Pi's are nice, but their hw is still bit limited.

OPNSense is quite nice and easy free and open source firewall/router solution.

If you want to add bit of flexibility, you can use some virtualization platform like VMware in to the machine, so that you can run OPNSense in it, with some other virtual servers.

Then when you get things working, you can start looking in to VLAN's, because they are quite important part of enterprise networking. Most cheap switches nowadays support VLAN's out of the box.

[–] [email protected] 1 points 10 months ago

I started learning networking with OpenBSD's tutorial on building a router.

Building a router forces one to learn networking.

https://www.openbsd.org/faq/pf/example1.html

[–] [email protected] 0 points 10 months ago* (last edited 10 months ago)

Not necessarily in this order:


  1. Learn the OSI and TCP/IP layer models.

  2. Learn the fundamentals of IPv4 and IPv6. (Absolutely learn to count bits for IPv4)

  3. Learn and understand the use-cases for routers, switches, and firewalls.

  4. Learn about DNS. (Domain Name System)

  5. Learn about DHCP. (Dynamic Host Configuration Protocol)

  6. Learn important Port Numbers for important Services. (SSH is Port 22, for example. The range of port numbers from 1024 to 49151 are "registered ports" that are generally always the same)

  7. Learn about address classes. (A, B, C are the main ones)

  8. Learn about hardware addresses (MAC address) and how to use ARP to find them.


And more! This is just off the top of my head. Until you've studied a lot more, please, for your own sake, don't open your selfhosted ervices to the wider internet and just keep them local.


And just for fun, a poem:

The inventor of the spanning tree protocol, Radia Perlman, wrote a poem to describe how it works. When reading the poem it helps to know that in math terms, a network can be represented as a type of graph called a mesh, and that the goal of the spanning tree protocol is to turn any given network mesh into a tree structure with no loops that spans the entire set of network segments.

I think that I shall never see

A graph more lovely than a tree.

A tree whose crucial property

Is loop-free connectivity.

A tree that must be sure to span

So packets can reach every LAN.

First, the root must be selected.

By ID, it is elected.

Least cost paths from root are traced.

In the tree, these paths are placed.

A mesh is made by folks like me,

Then bridges find a spanning tree.

— Radia Perlman Algorhyme

[–] [email protected] -1 points 10 months ago (1 children)

I recommend an Orange pi 5 with Armbian installed. Raspberry pi is under powered and it’s a pain getting compatible software for the arch.

[–] [email protected] 1 points 10 months ago

I am not sure I understand what you refer too? I have a small rpi server running at home and so far no issues installing various things on it.

Very "specialized" software, yeah ok, maybe thats what you mean.

[–] [email protected] -1 points 10 months ago

New Lemmy Post: I'm new to networking and self-hosting and have no idea where to start. (https://lemmy.world/post/10294927)
Tagging: #SelfHosted

(Replying in the OP of this thread (NOT THIS BOT!) will appear as a comment in the lemmy discussion.)

I am a FOSS bot. Check my README: https://github.com/db0/lemmy-tagginator/blob/main/README.md