Creation

November 24, 2025


I've hosted cloud servers before. But they suck! Imagine having to pay entire dollars per month to host your own web server. If you had that same equipment on hand, you could serve the same content, with more control, for less money...

looks at closet

Oh shit, it's right there. A 2012 Dell laptop with an i3 Intel CPU.

This might seem old, but in reality it's more than enough to run a basic web server with static HTML, even with bots hammering it with malicious HTTP requests every single minute.

If it wasn't already obvious from the homepage's rant, the entire purpose of "zurvur" has been to demonstrate that even old ass hardware from the previous decade, older than pre-teens of the modern day, can still serve web pages normally and with imperceptible delay.

To prove how straightforward and easy (?) it can be to do this yourself, here is a step-by-step guide of how I set up the Zurvur.


1. Locate old hardware

This might seem like it's the hardest part. Locating a piece of technology capable of hosting a web page in real time. But it's really not! Again, Zurvur runs on an i3 Intel chip, complete with malware mitigations (which severely impact performance), and still runs at a cool 42 degrees Celcius on idle. You really don't need too modern a computer to run something like the Zurvur.

Specifically, Zurvur runs on a laptop from 2012. Very old, in today's terms! As of 2025, almost 14 years old. But it still serves these static HTML pages just fine, even with a minimal PHP interface that interacts with an internal feedback database. All operating without the use of the fans.

2. Install Linux

For Zurvur, I used Linux Ubuntu Server 24.04.3 LTS. You need to get a USB flash drive of at least 16GB and use software like Rufus or balenaEtcher to reformat the USB drive to install Noble Numbat onto your target device.

Once your USB installation drive is setup, the install process is as simple as plugging it into your target device, spamming F2 or F12 (depending on the device) to enter the boot menu, and choosing your USB drive from the bootable devices.

Once you've booted into Linux Ubuntu Server, the setup is as simple as following the install instructions, choosing the "use entire disk" or "Erase disk and install Ubuntu Server" options, and waiting for it to complete. After this step, you've successfully installed Ubuntu Server onto the target device, and can start to set up nginx to serve a web server.

3. Set up nginx

Zurvur uses nginx, open-source software for hosting web servers, to serve pages like you're currently viewing. To install this software, simply run:

sudo apt install nginx

This will install nginx, automatically start the service, and setup all the required files to run the server on your system.

If you then visit http://localhost on the same system (or http://[your server's local IP] on the same network), you will be greeted with the /var/www/html/index.nginx-debian.html file, which is the default nginx index.html file served when accessing your page.

Common practice is to remove this file and replace it with a more simply-named file, index.html, which is the file that all visitors to your direct link will see upon loading the page.

4. Port forwarding

This, unfortunately, is the most technically involved part of the process. Your server is currently only serving locally to your network. The goal is to have a domain which you can type into an address bar of any web browser anywhere on the planet and access your server. You're currently two steps away from this being reality.

You need to access your router's local interface. You can find it via the command ip route | grep default, or it will be listed as the gateway in ip addr.

You then visit this page on your web browser on another device, which should give you the interface for configuring your router's WiFi network (i.e. http://192.168.0.1).

Look for a section mentioning "port forwarding". This is what you need to make your device accept requests from outside your local network (what your router sends over WiFi/Ethernet).

It also benefits you if you can set a static IP lease for this device. Usually consumer routers (like Comcast) don't allow this, but custom open-source routers running software like OpenWRT do. This just ensures your router doesn't re-asssign your server device's local IP, which then would require you re-configure port forwarding settings.

Port forwarding is simple: make the internal IP your server device's local IP, and both internal/external ports 80. This configures your router to send all traffic from port 80 directly to port 80 on your server device, meaning any HTTP requests that ask for your nginx hosted index.html server will be served whenever visiting your router's public IP address from a web browser.

5. Domain

This is the part where you actually have to spend money upfront. Domain name servers (DNS's) are basically translation services which turn your innocuous router IP into something recognizable (e.g. zurvur.org). To buy a domain (the recognizable string you type into an address bar to visit a website) is a yearly subscription in most cases. Don't worry about cost, though; zurvur.org, for example, cost about $7 upfront and renews for $9 yearly. Just choose a non-.com domain, or anything that's short and costs less than $10 per year, and you'll be fine.

Configuring your domain name to point to your IP varies depending on the service, but at some point it will ask you for a public IP address for your domain to point to. This is easy to obtain from your server device; just run curl ifconfig.me to get it. Then, given DNS server propagation times (should kick in within a few minutes but can take up to 48 hours), theoretically, you should be able to type your domain into an address bar and have your IP's index.html be served from any browser on any device in the world!


This is obviously a concise tutorial. But it covers most of the basics of setting up an outward-facing web server from just an old computer. I highly recommend making use of an LLM such as Claude or ChatGPT in this process, as they can address unique problems related to your particular software/hardware architecture.

Hopefully this guide has been helpful for you!