You’ve got a server running. Now you need to talk to it. That means understanding how your home network works.
I’m not going to lie, networking is the part of homelabbing that frustrates people the most. But you only need to know a few things to get by. The rest you can look up when you hit a specific problem.
How Home Networking Works
Your router connects your house to the internet. Everything plugs into it: your phone, laptop, TV, and now your server. The router gives each device a local IP address so they can talk to each other.
It’s that simple for day-to-day stuff. The complexity comes when you want devices to always have the same address, or when you want to reach your server from outside your house.
Understanding Your Network
IP Addresses
Every device on your network has an IP. Yours are probably in one of these ranges:
192.168.x.x- Most common. This is what most home routers use.10.x.x.x- Sometimes used by fancy routers or mesh systems.172.16.x.x – 172.31.x.x- Rare in homes, common in offices.
Your server got one when you connected it to the network. Run this on the server to find it:
ip addr show | grep 'inet '
Look for the line that doesn’t start with 127.. That’s your server’s IP.
DHCP
DHCP is how your router assigns IPs automatically. When you plug a device in, the router says “here’s your address, here’s the DNS server, here’s the gateway.” All automatic.
Problem: DHCP addresses can change. Your server might be 192.168.1.10 today and 192.168.1.15 tomorrow after a reboot. That breaks SSH and any services you run. You fix this with a static IP (covered in the next section).
Ports
Ports let multiple services run on one IP. Think of it like apartment numbers in a building. The IP is the building address, the port is the specific unit.
Common ones you’ll use:
| Port | Service |
|---|---|
| 22 | SSH - logging into your server |
| 80 | HTTP - basic web traffic |
| 443 | HTTPS - encrypted web traffic |
| 3000 | A lot of dev tools and dashboards |
| 8080 | Alternative HTTP, common for testing |
When you set up Docker or Nginx, you’ll be dealing with ports constantly.
DNS
DNS turns names like google.com into IP addresses. Your router runs a local DNS resolver that handles this for your whole network. You don’t need to mess with it unless you’re setting up custom domain names for your services.
Test Your Connection
From your server:
# Can you reach the internet?
ping 8.8.8.8
# Can you resolve domain names?
ping google.com
# What's your server's IP?
ip addr show
If ping 8.8.8.8 works but ping google.com doesn’t, you have a DNS problem. Check that /etc/resolv.conf has a nameserver like 8.8.8.8 in it.
Static IPs and Port Forwarding
Setting a Static IP
You need your server’s IP to stay the same. Two ways to do this:
Option A: Router reservation (better)
Log into your router (usually 192.168.1.1 or 192.168.0.1 - check the sticker on the router). Find “DHCP Reservation” or “Static DHCP” and add your server’s MAC address with a fixed IP.
Your server’s MAC address:
ip link show | grep ether
This is better because your router handles everything. If you ever change your network setup, the reservation stays.
Option B: Static config on the server
Edit the Netplan config:
sudo nano /etc/netplan/00-installer-config.yaml
Make it look like this:
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
Then apply:
sudo netplan apply
Use an IP outside your router’s DHCP range so there’s no conflict. Most routers let you set the DHCP range. Pick something above 192.168.1.50 or below 192.168.1.200 depending on your router’s defaults.
Port Forwarding
This is how you access your services from outside your house. Say you’re hosting a website on your server at port 80. Port forwarding makes it so hitting your home’s public IP on port 80 sends traffic to your server.
- Log into your router.
- Find “Port Forwarding” or “NAT” or “Virtual Server.”
- Add a rule:
- External port: 80
- Internal IP: your server’s IP (192.168.1.100)
- Internal port: 80
- Protocol: TCP
Now http://your-public-ip:80 reaches your server from anywhere.
Your public IP is what the world sees. Find it:
curl ifconfig.me
Warning: Only forward ports you need. Every open port is a potential entry point. If you’re forwarding SSH (port 22), use a strong password or set up SSH keys. Better yet, forward a non-standard port like 2222 instead.
A Note on Dynamic DNS
Most home internet connections have a dynamic public IP. It changes periodically. That means your port forwarding rules stop working when the IP changes. Solution: set up a Dynamic DNS (DDNS) client on your server that updates a domain name (like myhouse.duckdns.org) whenever your IP changes.
DuckDNS is free and takes two minutes to set up:
docker run -d \
--name duckdns \
-e SUBDOMAIN=myhouse \
-e TOKEN=your-token-from-duckdns \
duckdns/duckdns
Replace myhouse and the token with what DuckDNS gives you.
Next Steps
You can reach your server and it stays at the same address. That’s the foundation. Next up: Choosing Server Hardware if you want to upgrade, or jump straight into Docker to start running services.