I Stopped Paying for Web Hosting — Here's My Home Server Setup

I Stopped Paying for Web Hosting — Here's My Home Server Setup
For years, I did what most people do when starting a website: I paid for web hosting.
I've used Bluehost, Hostinger and a few other providers over the years. They all seemed reasonably priced at first, but then the renewal emails arrived. Suddenly, what looked like a bargain was costing two or three times as much as I expected.
At one point, I was paying for multiple hosting services at the same time because different projects were running in different places.
Eventually, I added everything up and realised I was spending a frankly silly amount of money every year just to keep a few websites online.
So I decided to do something different. I cancelled my hosting subscriptions and moved everything I could to a small refurbished PC sitting in a corner of my house.
Today, that little machine runs my website, a couple of other projects and a Jellyfin server for the TV.
The entire setup was built with a lot of help from Claude. Since I already pay for that subscription, I could use it to help develop and troubleshoot the system without hiring a developer for the initial build.
Here's how it all works.
The Hardware: A Refurbished Lenovo ThinkCentre
The heart of the setup is a refurbished Lenovo ThinkCentre Tiny M910q that I picked up on eBay.
It's roughly the size of a hardback book, doesn't take up much space and is more than powerful enough for what I need.
The specifications are fairly modest:
- Processor: Intel Core i5, 7th generation
- Memory: 16GB RAM
- System drive: 256GB SSD running Debian
- Storage: 2TB external drive for backups, photos, videos and other files
- Operating system: Debian 13, running headless
Running headless simply means there's no monitor or keyboard permanently connected. Once everything is configured, I can manage the machine remotely.
Despite its age, the ThinkCentre handles the workload comfortably. It hosts this website, a couple of smaller projects and my Jellyfin media server.
For my current needs, there's no reason to invest in an expensive dedicated server.
Why I Chose a Static Website
One of the things I've learned is that not every website needs a database or a full content management system such as WordPress.
The public-facing part of this website is static. It serves HTML, CSS, images and other supporting files through nginx, without requiring a database for visitors to browse the content.
That has several advantages:
- Fewer components to maintain.
- No WordPress plugins or database to manage for the public website.
- A lightweight setup that runs comfortably on modest hardware.
- Straightforward deployment and version control.
- A smaller attack surface than a more complicated installation, provided the rest of the system is secured properly.
Static websites aren't suitable for every project, but they work well for blogs and many smaller websites.
There's also an important distinction in my setup: although the public website is static, I've built a small custom admin application to make publishing easier. More on that below.
Getting the Website Online with Cloudflare Tunnel
Running a website at home is one thing. Making it accessible to everyone on the internet without unnecessarily exposing my home network is another.
Initially, the idea of exposing a server in my house to the public internet made me a little nervous.
Instead of opening ports on my router, I decided to use Cloudflare Tunnel.
The tunnel allows my server to establish an outbound connection to Cloudflare. Visitors can then access the website through my domain without requiring me to expose an inbound web port on my home router.
This means I don't need traditional port forwarding for the website, and I can keep my home IP address out of the website's public DNS records when everything is configured correctly.
It's a practical solution for home hosting, particularly when you don't want to manage incoming connections directly.
Of course, Cloudflare Tunnel isn't a magic security shield. The server, admin application and any other exposed services still need secure configuration, regular updates and proper authentication.
Getting everything working wasn't completely smooth, either. There was plenty of reading documentation, changing configurations, troubleshooting errors and wondering why something worked perfectly one minute and not at all the next.
That's probably the real cost of self-hosting.
You save money, but you're now the IT department.
Building a Simple CMS with AI
Originally, I was editing website files directly on the server whenever I wanted to publish something.
That became annoying very quickly.
I wanted a simpler way to write articles, upload images and publish content without manually editing files every time.
So I used Claude to help me build a simple custom content management system.
It's deliberately basic. The admin page uses passwordless authentication, sending me a login code by email. Once authenticated, I can write a post, upload images, preview the content and publish it without working directly on the server.
The public-facing website remains static, while the admin application handles the publishing workflow.
It's nowhere near as feature-rich as WordPress, but that's exactly the point. I don't need hundreds of features or plugins that I'll never use.
I need something that does a handful of things reliably.
AI made it possible for me to develop something tailored to my requirements without having to build everything from scratch or hire a developer for the initial implementation.
That doesn't mean the application is automatically secure or maintenance-free. Authentication, input validation, software updates and backups still matter. But it's been an interesting way to build a tool that fits the way I work.
Backups, Power Cuts and Reliability
Self-hosting means I can't blame a hosting provider's infrastructure every time something goes wrong. The responsibility for keeping things running sits with me.
That's why backups and recovery are important.
The website files and scripts are version controlled and synchronised elsewhere, while larger media files are stored on the external drive.
The important distinction is that version control and synchronisation aren't substitutes for a complete backup strategy. Important data needs independent copies, and those copies should be recoverable if the server or its storage fails.
Power outages are another consideration.
The ThinkCentre is configured to start automatically when power returns. Debian boots, the Cloudflare Tunnel service reconnects and the website becomes available again, assuming the internet connection and other required services are working.
That makes recovery from a straightforward power cut relatively painless.
It doesn't protect against every possible failure, of course. Hardware faults, internet outages and software problems can still take the website offline.
For a personal website, I'm comfortable with that trade-off. If the site disappears for a short period occasionally, it isn't the end of the world.
A business that depends on continuous availability might reasonably make a different choice.
What Does It Actually Cost?
One of the biggest reasons for making the switch was reducing recurring expenses. After paying for multiple hosting subscriptions over the years, I wanted something simpler and cheaper to maintain.
My current costs are surprisingly low.
| Expense | Annual cost |
|---|---|
| Domain renewal | £12.00 |
| Server electricity | Approximately £18.56 |
| Total recurring cost | Approximately £30.56 |
The electricity figure is based on an average power draw of 6.9 watts, measured through Home Assistant while my server is running.
At that rate, the server consumes approximately 60.4 kWh of electricity per year.
I'm on Intelligent Octopus, with a day rate of 34.96p/kWh and an off-peak rate of 6.6p/kWh. Assuming six hours of off-peak electricity each night and 18 hours at the day rate, the estimated electricity cost works out at around £18.56 per year.
Adding my £12 annual domain renewal brings the combined cost to approximately £30.56 per year, or £2.55 per month.
These figures cover the domain and server electricity, not the initial hardware purchase, backup storage or the time spent maintaining everything. My home internet connection is also essential, but I already pay for it regardless of whether I host a website.
I also use Claude, which costs me £18 per month. It helped me build the custom CMS and troubleshoot the setup. However, I already subscribe to it for other work, so I treat it as an existing expense rather than an additional website hosting cost.
If I included the entire Claude subscription in the cost of running this website, the total would be higher. But the subscription isn't exclusively for hosting or maintaining the site, so I prefer to keep the two costs separate.
The real saving comes from no longer paying for multiple hosting subscriptions. I can run my website and other small projects on hardware I already own, without adding another monthly hosting bill every time I experiment with something new.
For my needs, that's a trade-off I'm happy with.
Is Self-Hosting Better Than Traditional Hosting?
Not necessarily. It depends on what you're building and how much responsibility you're willing to take on.
Traditional hosting gives you a service managed by someone else, although the level of support and maintenance depends on the plan you choose.
With self-hosting, you have much greater control over the hardware and software, but you also take responsibility for updates, security, backups, power and connectivity.
For a personal blog, a development project or a small website where occasional downtime is acceptable, a home server can be a sensible option.
For an online shop, a business-critical website or a service that must remain available around the clock, professional hosting may be worth the additional cost.
The savings only make sense if the setup meets your reliability and security requirements.
Was It Worth It?
Absolutely.
I wouldn't recommend self-hosting for everyone, and I don't think traditional hosting is a bad option. Managed hosting exists for good reasons, and not everyone wants to spend their evenings troubleshooting server configurations.
But for my requirements, moving to a home server has been worthwhile.
I've reduced my recurring hosting costs, learned a lot about Linux, nginx and networking, and ended up with a setup I understand because I've built and configured it myself.
The other benefit is flexibility. I can experiment with new projects, try different software and host additional services without having to rethink my hosting arrangements every time.
The next steps are to expand the photo gallery, upload some archived content and see how the custom CMS performs over the long term.
What started as an attempt to escape rising hosting fees has turned into a useful little home server that does much more than I originally planned.
And for now, I'm happy to let that refurbished ThinkCentre quietly get on with the job.
Comments
No comments yet.