← all posts

October 1, 2026 · Ubuntu · DevOps

I was stubborn for years. Here’s how I finally stopped paying the cloud tax.

How I ditched expensive cloud hosting and turned an old 2017 MacBook Pro into an Ubuntu home server with no monthly bill.


I think a lot of us are stubborn in one way or another. I was stubborn for years when it came to software development.

Not when it came to code, but when it came to deploying that code. I always took the path of least resistance there because I genuinely wasn’t interested in networking or setting up servers and everything that comes with it. I just wanted to take my code and get it out on the World Wide Web, even if no one was going to see it but me.

The college setup

In college, I had to build something that showcased my skills in a field of computer science, and I naturally chose a web application. It was a simple Angular + .NET CRUD app (back when the two came bundled together in a single .NET 5 template), but I wanted to put it on the web as soon as possible all the same.

We were learning a lot about cloud computing at the time, so I went that route and deployed it to Azure App Service. That meant two things: setting up the app service for the application and setting up a database.

The application side was free. Azure’s free tier gave me up to 60 minutes of compute per day, which was plenty for a project like that. The database was another story. I had to pay for it even at the lowest tier. (Azure has since added a free serverless SQL database offer, but that came later.)

Over the years I kept using that model. I deployed to Azure, and along with that I kept paying. That was cost number one. The second cost was more damaging: it kept me from learning anything new. Stubbornness was holding me back.

The Windows Server phase

Then I decided to try something different: ditch Azure App Service and Azure SQL Database and get a Windows Server virtual machine at the lowest tier. For one reason or another I thought that would save me money, since I wouldn’t need three separate database instances for development, staging, and production.

I learned a few new things along the way, but it didn’t really help because the costs kept piling up. Eventually I gave up on it. I didn’t want to keep paying for something that wasn’t generating revenue, especially when I had no interest in learning networking or server management.

And that’s where I stayed for a while, because I was stubborn and didn’t want to change my ways. Until recently, about two months ago.

Giving Ubuntu a shot

I’ve always felt the urge to start a software company, because I believe software should be accessible to everyone. But that’s a topic for another post. The point is that you can’t really start a software company, or any kind of business, without putting yourself out there. The first step for me was creating a website and hosting it, which brought me right back to my original problem: high costs and no revenue.

So what now? Honestly, the best thing that could have happened to my career: I decided to try another method, and that’s how I started using Ubuntu Server.

Hosting on Ubuntu Server was so much cheaper than Azure or a Windows Server VM could ever be. I gotta admit I wasn’t happy about having to learn networking and server management on yet another OS, but I did it anyway.

I deployed to a DigitalOcean server for about $5 USD a month, which was enough to run my Angular client-side and pre-rendered apps. That was enough for a while. Then I wanted to deploy my Agricultura demo, and that needed more resources: SQL Server on Linux wants at least 2 GB of RAM.

The jump in price wasn’t huge: about $20 USD a month for the bare minimum of resources. But I knew it would eventually need more, and I’d also had a bad experience with a previous provider: same advertised price, but I ended up billed about $32 USD. I’m still not sure how they calculated that, but that’s beside the point. I didn’t want to fall into that trap again.

The 2017 MacBook Pro revival

So what was my other option? Luckily for me, I had a 2017 MacBook Pro just sitting there. I hadn’t touched it in over two years and wasn’t even sure it would power on, but it did. I figured I could do something with it, and as it turns out, I could. Intel-based Macs can run Ubuntu Server just fine. Mine is old enough to predate Apple’s T2 security chip, which makes Macs from 2018 onward a bit trickier. So I booted Ubuntu Server on it.

Here’s the next problem: how do I make it reachable from the outside? I thought I needed to call my ISP and get a static public IP address. I didn’t. All I had to do was set up a Cloudflare Tunnel that connects directly to my machine.

What about accessing the server myself? For that, I started using Tailscale. With Tailscale SSH I could connect straight to my machine even when I was off my home network. Then I locked the server down to reject every incoming connection except SSH, since the Cloudflare Tunnel handles all incoming requests to my sites.

It was so simple that, looking back, I’m a little annoyed at myself for not letting myself do this sooner. I now have an Ubuntu Server running on my desk, serving every application I need, including the site you’re reading this on, with no monthly bill (apart from a little electricity). The other thing worth mentioning: Cloudflare Tunnel costs nothing, and Tailscale has a free personal plan. I wish I had done this years ago.

The takeaway

I guess the point I’m trying to make is: don’t be stubborn. If you have pain points with your current setup, take some time out of your day to look at other solutions, and if they fit your system, they’re worth considering. Worst case, you learn something new you can use in the future.


Contact Me