PROJECT: PDGEORGE.COM.AU

pdgeorge.com.au

Self-hosted. Minimal. Running on a Raspberry Pi in my office.

This website is not running on AWS, Vercel, Netlify or any other cloud managed platform. It is running on a Raspberry Pi 5 sitting in my office (Though I might pick it up and move it if the cat finds where I placed it again)

I work with AWS professionally, but I made this choice anyway.

The stack

The backend is FastAPI, everything else is intentionally minimal, because minimalism is my philosophy. This project may appear to be more complicated than hosting it on the cloud, but by hosting my website on my Raspberry Pi I can see how simple it truly is.

Caddy handles the reverse proxy. Cloudflare’s free tier sits in front of everything, which means I do not need to pay for a static IP. It acts as a buffer between the public internet and my home IP (even if I choose to move). It also provides a reasonable first line of defence without having to build and maintain one for myself.

Everything runs in Docker containers, orchestrated with Docker Compose. Dabi lives here too, on the same machine. The website and AI Agent running on the same infrastructure.

Why self-host?

Three reasons, cost, minimalism, and certainty.

Cost is an obvious one. A Raspberry Pi is a one-time purchase. Electricity is cheap. A compute instance that can house an AI agent is not a small monthly bill, that alone would easily speed past the price of a Raspberry Pi.

Minimalism being one of my largest ideals, naturally comes next. You are incentivised to keep things lean. Even with the 16GB model you still have an ‘upper limit’ at all times. You can’t simply load up a 200B LLM model, pay a little more for a few hours to do an experiment before returning to normal. You have a constraints, and you have to budget for them.

Finally, certainty. This one is hard to articulate but probably the most important. I know exactly what is running on this machine. I know its specifications, its failure modes, its security strengths and weaknesses. I know that the only person who will be selling the data on the raspberry pi for profit is me. (Now all I need is a buyer…)

Gotchas

Honestly, the setup is pretty straightforward. Docker, Docker Compose, Caddy, Cloudflare. Nothing too exotic, most of it just ‘works’ after setting it up correctly.

If you have services live across separate Docker Compose files that require communication? (In my case: Dabi’s braincell and the website itself) make sure they share an external Docker network.

The one thing that will catch you: Keep track of what you do. Create documentation because it isn’t for “someone else”. It is for “yourself, 6 months from now when you need to fix something or add something” (And I’m telling you now. You THINK you will remember everything, but you won’t).

Worth it?

Is it worth it? Yes. Every software engineer should do it at least once, there is no better way to understand how everything fits together than to be responsible for all of it yourself. Front end, back end, server, hosting, database.

What you build might not be ‘perfect’, it might not be ‘pretty’, but it was an incredible learning experience. I expanded my skills immensely and I have something I am proud to have made that is very “me”. And I challenge anyone reading this to build something yourself. Build, fail, learn, repeat.