How I created this site
You probably think it's cumbersome to make a blog site like this with your own domain and everything designed the way you like, but I disagree.
Ways to create a site like this?
If you wanted to create a blog like this, the premium options for you could be to go to a site like WordPress or Ghost and pay monthly for the privilege of having your own domain and page like this. Different tiers come with different constraints.
Your other option is to build a blog site like this manually, which includes building a web front end with something like NextJS or Angular with a server to process web requests from the UI, like inserting posts and deleting users. You'd also need a DB to save all this information, like Postgres with redis to make your read requests faster and make your server stateless by holding onto session tokens or JWTS.
The alternative to the above is to use a self-hosted version of WordPress or Ghost, where you can run the underlying service on any machine you like, wherever you want, without any constraints. No size limits, no ads, no nothing. You build your blog site the way you like to, and you have all the control.
Anyway, I decided I'd just run the site myself as I'm a software engineer, and this should be a straightforward task.
Get started
To get started, there are a couple of prerequisites
- A machine to run the app
- A domain for the site
- Stable power and internet to said machine
Machine
Your first concern is your machine or where you'll run your application. You'll need something to actually run your website, like how your phone runs apps. My current setup is using a simple Raspberry Pi.

A Raspberry Pi is just a little computer; it can play games and play back video just like any other computer, but the reason many people have it is due to its size and efficiency.
A desktop can definitely work too for this use case, but also not ideal. If you want your website running 24/7, so will your desktop, which could be annoying if it's loud while also being more of an energy hog than the Raspberry Pi.
However, buying a second old used PC is a good, cost-effective way of hosting a blog site locally. The initial upfront cost wouldn't be much, and it would be powerful enough to run a solid website.
A laptop wouldn't work for this use case, as leaving your screen open 24/7 is inconvenient, and laptops weren't exactly designed for prolonged screen-on time and such a light task. They would also have severe battery degradation being plugged in 24/7, and they will have thermal issues too.
Domain
Domain is a straightforward step: go to one of the following sites ( or any domain registrar ) and look for a domain that you like :
Depending on the content of your website, you can tailor your TLD. However, a .com will always be king of TLDs, but .co.uk (respective of your country), .cloud and .net are all respectable too. Once you start looking for domains, you'll quickly notice that most domains are either already bought up or are being sold for extremely high prices. I still recommend trying to get a .com over anything else, but they will also be the hardest to get.
Self-hosted CMS apps
As previously mentioned, you'll need to choose a CMS (content management service) that you want to use to run the app. I went with Ghost for its simplicity and light weight, making it perfect to run on my Raspberry Pi. It was also Dockerised, which took the pain out of setting up the correct environment to run the app.
Tunneling
Once you have your machine of choice running and the CMS app of your choice installed on that device, you'll need a way to make that app that's available on your local network and on the internet.
One way to do this is to expose your app to the internet, which usually involves opening the specific port on your machine's firewall and your modem's firewall to the internet. This is called port forwarding, and you can look it up for your respective router. On top of that, you'll need a static IP; otherwise, it would be like your house moves addresses once in a while.
Your alternative is to use a tunnelling service, which can expose your apps running on your internal network to the wider internet without the requirement of exposing your port to the internet. Services include:
I used a domain registrar and then configured Cloudflare as the authoritative DNS provider for this domain. This seamlessly allows me to use Cloudflare tunnels, leveraging their generous free tier.
Emailing service
Finally, the last step is to set up an email of some sort since you'd need your website to actually send verification codes and other emails; otherwise, it just wouldn't function. There are a couple of services out there to run email forwarding without paying for an inbox, which include:
Once you've finished the emailing service, you'll have built yourself an identical website to this very page for very little cost. You'll have full control of the hardware and software. You will have to maintain updates on your selected hardware to keep it secure and implement a backup strategy so you don't lose everything. I suggest backing up to AWS S3
Comments ()