I had an old HP laptop collecting dust. Instead of recycling it, I turned it into a home server. It's now the backbone of nearly everything I run — game servers, dashboards, notification services, file sharing, and more.
Why a laptop?
A laptop as a server sounds odd, but it has advantages:
- Built-in UPS: The battery handles power outages gracefully. No need for a dedicated UPS.
- All-in-one: Keyboard, screen, and network in one package. If something breaks, I can plug in a monitor and debug directly.
- Low power draw: An old laptop idles at 10–15W. A dedicated desktop server would pull 4x that.
- Silent: No server fans. The laptop fan kicks on occasionally but it's quiet.
The downside: limited expansion (one USB port for storage), and the hardware is old enough that CPU-bound tasks (like media transcoding) struggle.
The OS: Linux Mint
I went with Linux Mint for a few reasons:
- Familiar to anyone coming from Windows — the Cinnamon desktop feels natural
- Solid and stable — based on Ubuntu LTS, well-tested packages
- Good hardware support — the HP laptop's Wi-Fi, trackpad, and sleep states all worked out of the box
Mint isn't the lightest distro, but for a laptop with 8GB RAM and an SSD, it's fine. I use it headless mostly — SSH in from my main machine and forget it has a desktop environment at all.
$ uptime
14:23:41 up 32 days, 4:12, 0 users, load average: 0.08, 0.12, 0.15
32 days of uptime without a hiccup. Set it and forget it.
CasaOS for container management
CasaOS is a lightweight home server platform that wraps Docker in a clean web UI. Think of it as a simpler, more focused alternative to TrueNAS or Unraid.
I run it because:
- One-click app store — Install services (Syncthing, NTFY, file browsers) from a catalog
- Docker underneath — Full Docker Compose support when the app store doesn't have what I need
- File management — Built-in file browser for uploading and organizing files
- Low overhead — Uses ~200MB RAM at idle
The UI is accessible from any device on the network, which is handy when I'm on my phone and need to restart a container.
The hardships
The setup wasn't all smooth sailing:
1. Wi-Fi vs Ethernet
The laptop's Wi-Fi card is old (802.11n). For a server, Wi-Fi is unreliable — interference, latency spikes, dropped packets. I wired it via Ethernet, but the laptop's Ethernet port is only 100Mbps. For file transfers over the LAN, that's a bottleneck. A USB 3.0 to Gigabit adapter solved this.
2. Heat
Laptops aren't designed to run 24/7 under load. The CPU sits at 50–55°C idle, but under load (game server, Docker builds) it hits 80°C quickly. I elevated the laptop on a stand for airflow and set a CPU governor to "ondemand" instead of "performance."
3. CGNAT
My ISP uses Carrier-Grade NAT, which means no public IP and no port forwarding. This forced me into using Cloudflare Tunnel (cloudflared) for remote access. It works, but adds ~10ms latency. More on tunnels in my previous post.
4. Storage
The laptop has a 256GB SSD. That's fine for Docker images and configs, but insufficient for media or backups. I mounted an external USB drive for bulk storage. The trick was setting it to auto-mount via /etc/fstab so it reconnects after a power outage.
What it runs now
| Service | Purpose |
|---|---|
| CasaOS | Container UI, file management |
| Docker | Container runtime |
| cloudflared | Cloudflare Tunnel for remote access |
| Syncthing | File sync between devices |
| Various | Game server, dashboards, tools |
Would I do it again?
Absolutely. The total cost was $0 (I already had the laptop). The learning curve was a weekend of tinkering. In return, I get a 24/7 server running at the cost of a desk lamp.
If you have an old laptop lying around, throw Linux on it and see what happens. You might be surprised how useful it becomes.