Back to Blog

How I Turned My Old Laptop into a Home Server

Home LabSelf-HostingDevOps

How I Turned My Old Laptop into a Home Server

Not long ago, I upgraded to a new laptop and had to decide what to do with my old HP EliteBook. Rather than let it collect dust on a shelf, I decided to give it a new life as a home server.

Getting Started

After backing up all my data to the new laptop, I installed Ubuntu Server on the EliteBook. I went with Ubuntu Server because it's lightweight and headless, making it well suited for a machine that would run quietly in the background without a monitor or keyboard attached.

I also spent some time in the BIOS tuning a few settings:

  • Optimized power configuration for better battery health
  • Enabled automatic power-on, so the server boots back up on its own after a power outage, without needing me to physically press the power button

For networking, the server connects directly to my home router via a LAN cable, giving it a stable, low-latency connection.

Secure Remote Access with Tailscale

To manage the server remotely, I installed Tailscale and added the machine to my personal Tailscale network. This gives me a few key benefits:

  • Easy SSH access from any of my devices, wherever I am
  • No need to open or expose any server ports directly to the internet
  • Only devices already on my Tailscale network can reach the server via SSH, which keeps things secure by default

As a bonus, this setup also simplified my CI/CD workflow. GitHub Actions runners can now SSH into the home server and handle deployments directly, without any public-facing infrastructure in between.

Self-Hosting with Docker and Cloudflare Tunnel

All of this was driven by a desire to run a few self-hosted projects that don't require enterprise-grade high availability — things like my own personal spending tracker. For these, I run Docker containers on the server and expose select ones to the internet.

To do that safely, I use Cloudflare Tunnel to expose the relevant containers via a public URL. This approach comes with the added benefit of Cloudflare's Web Application Firewall (WAF), DDoS protection, and CDN, all without opening a single port on my router.

What's Running on the Server

Here's a quick rundown of the projects currently living on my home server in Docker containers:

ProjectPurpose
Pi-holeNetwork-wide ad and tracker blocking
Spending TrackerThree containers powering both the Android app and the web interface
MySQLSeparate Prod and UAT instances for running Spring Boot test cases
WindowsA VM for running native Windows applications
DockgeA UI for managing and monitoring the other containers

Final Thoughts

What started as an attempt to avoid throwing away a perfectly good laptop turned into a genuinely useful piece of home infrastructure. Between Tailscale for secure access and Cloudflare Tunnel for safely exposing services, I've been able to build a setup that's both convenient and reasonably secure, all without spending a cent on new hardware.