Build a dedicated webserver.

Build a dedicated webserver.

Here’s what you’d need for a proper home-based web server setup.


🖥️ Hosting Your Own Web Server at Home (on a Dedicated Machine)

If you’re reading this, you’re probably curious — why would anyone want to run a web server from home on a separate computer?

Let me share the reason…

Sometimes, it’s not just about putting a website online. It’s about learning how the internet really works. It’s about having full control — no restrictions, no third-party interference. You get to test things, break things, fix them, and understand them in a way most website owners never do.

Running your own server at home means you’re not just a user anymore — you’re stepping into the world of real hosting. It could be for:

  • Building and testing client sites locally
  • Running your own internal tools or dashboards
  • Learning how web servers, ports, security, and domains actually work
  • Hosting a small blog or service that you really own

Sure, it’s more effort than using a hosting company — but that effort makes you sharper. And if you ever want to work in tech or understand what’s under the hood, it’s a fantastic place to start.

So let’s break it down — here’s what you’d need, how it works, and what to watch out for.

Before we dive into the big detail let me mention that there is a simple way. To host your own personal development environment you simply need a PC, and an application like WAMPSERVER, MAMP for Windows, LightSpeed or MS Visual Studio. Then you have a simple development environment. In addition you may also wish to learn HTML, CSS, JavaScript and PHP basics. Once you have a webserver you can play to your hearts content in your own time. For WordPress you will need to download and install into the WWW directory of the server application. For example ‘/wamp64/www/sitename’ This is where all site directories are stored. To access a webserver from the web you need to read on. You can also read 🖥️ Install Your Own Web Server – A Beginner’s Roadmap for simplified version of this.


✅ 1. The Hardware (Your Server Machine)

  • A dedicated PC or mini server (not your daily-use machine)
  • Ideally with:
    • Reliable CPU (Intel i5+, AMD Ryzen). Worth considering using an old/redundant machine for this purpose. CPU performance maters.
    • 8GB+ RAM minimum. More is always better.
    • SSD storage for speed. Not any old SSD, you may need to look at some reviews to decided on which SSD is good for you.
    • Good cooling and 24/7 power supply. Consider a back-up power supply, a UPS like the Eaton 3S 550B UPS.

🔸 Popular choices: Old desktop PCs, Intel NUC, Raspberry Pi 4 (for light use), or used rack servers

✅ 2. The Software (Your Stack)

Install a web stack manually or with a pre-packaged environment, pre-packaged is preferable by a long way, little steps. You may have to search the web for a deeper explanation of the following but it something I will try and cover in more depth later.

  • Linux (Ubuntu Server recommended) or Windows Server. I host my sites on Windows PC’s for development and testing. Linux is based UNIX as is the Apple OS.
  • Apache or Nginx web server (I use Apache but do some research if you’re hosting for WordPress). Nginx is pronounced EngineX.
  • PHP and MySQL/MariaDB if using WordPress
  • OpenSSH for remote admin
    • 🔐 Key Features of OpenSSH
    • SSH (Secure Shell): Secure command-line access to remote systems
    • SCP (Secure Copy): Secure file transfers between computers
    • SFTP (SSH File Transfer Protocol): Secure, FTP-like file management
    • SSH Key Authentication: Stronger, passwordless login using public/private key pairs
    • Port Forwarding / Tunnelling: Securely tunnel network connections (e.g., encrypt web traffic)
  • Note: If you install a webserver it will provide everything you need to build and host a website. The only issue you could have is on PORT numbering, PORT 80 can be used by other applications.

📦 Optional tools:

  • Certbot for Let’s Encrypt SSL. All websites have to use SSL, it’s the S in HTTPS.
  • Fail2ban for brute-force protection.
    • Fail2Ban is a security tool that helps protect your server from brute-force attacks by automatically blocking suspicious IP addresses.
    • Fail2Ban is often paired with UFW (Uncomplicated Firewall) or iptables for strong protection.
  • Firewall (UFW, iptables)

🌐 3. What About Your Internet Address?

Here’s the thing: if you want people to reach your server from outside your home, it needs a reliable address — just like sending someone to your house. That’s where your IP address comes in. An IP address is in the form 255.255.0.0. Again this is another subject that could be covered in depth but is part of Network Management, as is using a fixed IP which you may have to discus with your internet provider who may charge you more for the service. You may also be able to do so via your home router.

Most home internet connections use something called a dynamic IP. It changes every so often — which useful when you’re trying to run a website. It’s like your house number randomly changing! A Domain name is part of DNS, where an IP is registered to a Domain name.

So, what are your options?

✅ Option 1: Get a Static IP

Ask your internet provider (ISP) if they can give you a static IP address — one that never changes. Some charge a small fee, others won’t do it at all.

✅ Option 2: Use Dynamic DNS (The Easy Fix)

If you can’t get a static IP, don’t worry. You can use a free or low-cost service like:

  • No-IP
  • DuckDNS
  • DynDNS

These services give you a web-friendly name (like yourname.ddns.net) that automatically points to your changing IP — so people can still find your server, even if your IP changes.

It’s a clever little workaround that makes home hosting much more practical!

✅ 4. Domain Name + SSL

  • Register a domain (Hostinger, Namecheap, Cloudflare, etc.) See my page Hosing Services for more information.
  • Point it to your public IP or dynamic DNS address
  • Use Let’s Encrypt with Certbot to install HTTPS SSL

✅ 5. Router Port Forwarding

Accessing your site will be affected by your access port settings, you may also find that your newly installed website doesn’t work locally due to the use of port 80 if you’re using your home PC.

  • Forward:
    • Port 80 → HTTP
    • Port 443 → HTTPS
  • Some hosts also need:
    • Port 22 for SSH
    • Port 3306 for external MySQL (discouraged)+

Understanding Port 80 on a Home Computer

🏠 Local Access (within your home network)

Port 80 is the default port for HTTP. If you’re running a local web server (like Apache or Nginx), it listens on port 80 so you can access your site at:

  • http://localhost/
  • http://192.168.x.x/ (your local network IP)

❗ Possible Local Issues:

IssueExplanation
🔒 Permission errorOn Linux/macOS, ports below 1024 need root privileges
🛑 Blocked by firewallYour system firewall may block port 80
❌ Port already in useAnother app (like Skype or IIS) might be using port 80

🌍 Public Access (from outside your network)

If you want people on the internet to access your local server via port 80, you may face:

IssueExplanation
📦 ISP blocks port 80Many ISPs block it to prevent home web hosting
🔄 Dynamic IPYour home IP changes unless you have a static IP
🔁 Router needs port forwardingPort 80 must be forwarded to your machine’s local IP
🧱 Firewall rulesFirewall must allow external traffic on port 80
🚨 Security riskExposing port 80 can open you to attacks if not secured

✅ Workarounds & Tips

OptionDescription
⚙️ Use a different portUse port 8080 (e.g., http://localhost:8080)
📶 Use port forwardingForward port 80 or another port to your local machine via your router
🔐 Use HTTPS (port 443)Install a certificate for secure public access
🌐 Use a tunneling serviceUse tools like Ngrok to expose your server securely

Tip: Let me know your setup if you’d like tailored help!

OK. You have a webserver running on a dedicated machine.

  • You have setup the machine.
  • Download the developer stack.
  • You now have a server running. A server directory possibly called WAMP64 or Xamp for example.
  • Inside of that you have a directory called WWW.
  • Now you can add your own directory, the directory for your website with a relevant name.
  • Now you’ll need an Editor such as Notepad++ for creating the HTML and CSS content.
  • You can code your own CSS for mobile use but the simplest way is to use a pre existing framework for a fully flexible universal website for desktop and mobile. The words most popular is Bootstrap
  • You will also need .JS, a JavaScript library for creating your own scripts.
  • You may also want to download and install WordPress into the home directory you created. WordPress.
  • Are you ready to develop a WordPress site or even build your own theme? Then visit the WordPress link or search Google.

Are you done! No!

Then drop me a line and I shall be happy to help.

Phillip Donnelly.

phil.donnelly avatar

Leave a Reply

Your email address will not be published. Required fields are marked *

No comments to show.

Keep up to date with my latest news, offers and really useful content. And don’t forget, travel logs and photos.

    By signing up, you agree to the our terms and our Privacy Policy agreement.