← ← Back to all posts

From your PC to the Web: Port Forwarding, Domains, and Security for Your Services

2025-11-05 · Benja

IP, deep security measures, port forwarding, VLAN, DNS, everything you need to get your service up and running and make your public network as secure as possible

From your PC to the Web: Port Forwarding, Domains, and Security for Your Services
Expose a Home Server to the Internet Safely — Step-by-Step Guide

How to Expose a Home Server to the Internet Safely

This guide explains how to publish a service from your home network to the Internet (web, game or file server) without ignoring security. You will see:

  • What you can do with a self-hosted home server.
  • The core concepts: public IP, private IP, ports and DNS.
  • A practical step-by-step: port forwarding, domains and basic service setup.
  • Deep security measures so your server does not become an easy target.

1. Why would you expose a server from home?

Typical use cases:

  • Web server: host WordPress, a portfolio, a small app or API from home.
  • Game server: Minecraft, Counter-Strike, ARK, and similar dedicated servers.
  • File server: Nextcloud or similar tools to sync and share files.
  • Home lab: testing environments, CI runners, small internal tools.
Security warning: exposing a server to the Internet opens doors to everyone. Security is not optional, it is mandatory. If you do not plan to maintain the server and apply updates, do not expose it.

2. Key concepts you must understand

2.1 Public IP vs private IP

Private IP: addresses inside your home network. Examples: 192.168.0.10, 192.168.1.50, 10.0.0.5. They are only reachable from within your LAN.

Public IP: address that your ISP assigns to your router. The rest of the Internet only sees this IP. Your internal devices “hide” behind it using NAT.

When you expose a service, you map a port on your public IP to a device with a private IP inside your network.

2.2 Ports

A port is a logical “door” where a service listens. Examples:

  • 80: HTTP (web without TLS).
  • 443: HTTPS (web with TLS).
  • 25565: default Minecraft server port.
  • 22: SSH.

Port forwarding tells the router: “when traffic arrives at port X of my public IP, send it to port Y of this device in my LAN”.

2.3 DNS

DNS translates a name like my-server.example.com into your public IP. Humans remember names; machines route using IP addresses.

You will either:

  • Use a dynamic DNS name (e.g. myhome.duckdns.org).
  • Use your own domain with an A record pointing to your public IP.

3. Step-by-step: from your LAN to the Internet

Step 1 — Configure port forwarding in the router

Goal: open a controlled door on your router so that external traffic reaches your internal server.

1. Access the router interface
  • From a PC on your LAN, open a browser.
  • Go to http://192.168.0.1 or http://192.168.1.1 (typical defaults).
  • Log in with the router credentials (change defaults if still in use).
2. Find the port forwarding section
  • Look for menus like “Port Forwarding”, “Virtual Servers”, “NAT”.
  • You will see a table of rules: internal IP, internal port, external port, protocol.
3. Create a rule for your server

Example: simple web server running on a PC with IP 192.168.1.50.

  • Internal IP: 192.168.1.50
  • Internal port: 80
  • External port: 80 (you can choose another, but 80 is standard)
  • Protocol: TCP
Important: the server’s local IP must be fixed. Reserve it in the router’s DHCP (“Address Reservation”, “Static DHCP”) or configure a static IP on the server. If the IP changes, the port forwarding rule will point to the wrong device.

Step 2 — Assign a domain to your public IP

Problem: your ISP usually gives you a dynamic public IP. It can change at any time. Sharing a raw IP also looks unprofessional and is hard to remember.

Option A — Free dynamic DNS

  • Register at a service like DuckDNS or No-IP.
  • Choose a name such as myserver.duckdns.org.
  • Install their client on your server or router so it updates the DNS record when your IP changes.

Result: people can reach your home server via https://myserver.duckdns.org instead of memorizing the numeric IP.

Option B — Your own domain

  • Buy a cheap domain from a registrar (Namecheap, Cloudflare, etc.).
  • In the DNS panel, create an A record:
    host: home → type: A → value: <your public IP>
  • You can combine this with a dynamic DNS script so the record updates when your IP changes.

Example: you create home.mydomain.com pointing to your home IP. Friends connect to your Minecraft server at minecraft.mydomain.com:25565, for example.

Step 3 — Basic service configuration

From here the steps depend on the service. At a high level:

  • Web (Apache/Nginx): install the web server, place your site or app, check that it responds correctly on the LAN at http://192.168.1.50:80.
  • Game server: install the official server software, set the port (for Minecraft usually 25565), and verify that other devices in your LAN can join.
  • File server (Nextcloud, etc.): install, run initial setup, create users and test from inside the LAN.

Only expose the service to the Internet when it works correctly inside your network.

4. Deep security: the core of this guide

At this point your server might already be visible from the outside. Now you must assume: “someone will try to attack it”.

4.1 Harden the server

  • Keep everything updated: operating system, web server, game server software and any plugins. Security patches close known vulnerabilities.
  • Firewall: allow only the needed ports and deny the rest. On Linux with UFW:
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow 80/tcp     # HTTP
    sudo ufw allow 443/tcp    # HTTPS
    sudo ufw allow 25565/tcp  # Example: Minecraft
    sudo ufw enable
  • Accounts and passwords:
    • Disable direct root login over SSH.
    • Use SSH keys instead of passwords when possible.
    • Create regular users with limited permissions.
    • Use unique, long passwords for every account.

4.2 Protect services

  • Fail2Ban (highly recommended): it monitors logs and automatically bans IPs that generate too many failed login attempts.
    # Example (Debian/Ubuntu)
    sudo apt install fail2ban
    # then tune /etc/fail2ban/jail.local for sshd, nginx, etc.
    This stops most automated brute-force attacks.
  • Change default ports:
    • Move SSH from 22 to something like 2222 or another unused port.
    • This does not “secure” SSH alone, but reduces automated noise in your logs.
  • Use HTTPS:
    • For websites and panels, use TLS certificates from Let’s Encrypt.
    • With tools like Certbot you can automate both issuance and renewal.

4.3 Protect the network (advanced)

  • Network segmentation:
    • Place the exposed server in a DMZ or an isolated VLAN, if your router supports it.
    • If the server is compromised, this limits lateral movement to your other devices (PCs, phones, TV, IoT).
  • Limit who can access the service: for some use cases you can restrict access to specific IP ranges or countries at the firewall or reverse-proxy level.

5. Conclusion and next steps

Exposing a home server safely is based on three pillars:

  1. Port forwarding: open only what is needed, to the correct internal IP.
  2. Domain / DNS: use a memorable name that follows your IP changes.
  3. Deep security: updates, firewall, hardening, Fail2Ban, HTTPS and segmentation.
Security checklist
  • I reserved a static local IP for my server.
  • I created only the port forwarding rules I actually need.
  • I use a dynamic DNS name or my own domain pointing to my public IP.
  • The server OS and all services are up to date.
  • I have a firewall configured to deny everything except required ports.
  • SSH root login is disabled and I use strong passwords or SSH keys.
  • Fail2Ban (or similar) is installed and active.
  • Web services use HTTPS with a valid TLS certificate.
  • If possible, the server is in a separate network/segment from my personal devices.

From here you can follow specialized tutorials:

  • How to deploy and secure a public Minecraft server.
  • How to host a WordPress site on your home server.
  • How to run a secure file server (Nextcloud, etc.).

Decide which service you want to expose first and apply the same framework: forwarding → DNS → hardening.

Create Your Own VPN: A Complete Guide to Privacy, Security, and Total Control

Learn how to set up your own VPN with WireGuard, protect public networks, prevent throttling, and secure access and sensitive data

2025-11-09

Read more

Advanced API Security: OAuth2, GraphQL, and DDoS Protection

Technical article on advanced API security: OAuth2 with PKCE, hardened GraphQL, DDoS mitigation, WAF, and monitoring.

2025-11-06

Read more

What is an API and how do you use it?

You will learn how to use APIs correctly and securely.

2025-11-06

Read more