Run a blog for 5$ a month

So in my research for a blogging platform to expand my reach, by the way, it is zero right now. I had few considerations in mind, which are as follows

  • Least possible hassle i.e. setting up, or maintaining
  • Should have a feature rich editor for me to drag and drop images with ease
  • Should be fast, mature, and secure [A hard triad to achieve however not completely unachievable]

I looked around for a lot of options which ranged from managed WordPress hosting, too costly for my taste and all I heard were bad reviews about performance or some type of problem or the other, Ghost (managed), too costly and neither was the product too mature, so I let it go. I tried to work with for a day or so, I was impressed with the editor and how WordPress looked and felt however, there were just too many restrictions in the free version. So finally I landed on the setup that I am currently using i.e. Digital Ocean 5$ Droplet, Full (Strict) SSL certificate from CloudFlare (User) and Let’s Encrypt (Server), and a WordPress semi-automatic stack using WordOps.

The setup checked all my boxes as mentioned previously, and was easy to setup, except some hiccups I faced in the initial setup periods.

Steps to setup a blog

Pre-requisites – You need to have a registered domain name ready before you being with the process. You can use Namecheap to register one. Cloudflare requires a registered domain name to issue SSL certificates.

  1. Launch a $5 Digital ocean droplet here (referral link. On signing up you get $100). You can refer to the official guide here and create a $5 droplet in the location nearest to you for better speeds and ping. I chose Debian 10 (Buster) as my operating system (OS), however, you can choose any Linux OS you feel comfortable with.
  2. Go to CloudFlare and register your domain name (One website is free) and follow the steps as suggested by CloudFlare website post registration. Once website is registered setup the DNS records correctly, so that the domain name point to the Digital Ocean droplet you just created. Nothing may load up but you can try by spinning up a python SimpleHTTPServer and checking for yourself.
$ python3 -m http.server 8888 ## Navigate to http://domain-name.tld:8888 in your browser and you should see the listing of the current directory
Code language: Bash (bash)
  1. Now it is time to setup the WordOps in the droplet. SSH into your droplet and run the following commands.
## Download and setup WordOps (wo) $ wget -qO wo && sudo bash wo ## Enable Uncomplicated Firewall (UFW) using WordOps wo stack install --ufw ## Deny the 22222 port from the outside world as this port is used by WordOps portal ## which we do not need. ufw deny 22222 ## Setting up Let's encrypt certificate for the server export CF_Key="CLOUFLARE_GLOABL_API_KEY_GOES_HERE" export CF_Email="CLOUDFLARE_REGISTERED_EMAIL_ADDRESS_GOES_HERE" wo site create domain-name.tld --wp --letsencrypt=wildcard --dns=dns_cf
Code language: Bash (bash)

Once you’ve run these commands and the wordops has completed all the operations you will have to navigate to

CloudFlare Portal > SSL/TLS > Change the mode to Full (Strict)

Once done, you can navigate to your blog and you should have a blog up and running with a relatively secure WordPress installation and a simple firewall in place on the server side and have a Full SSL communication. All of this for just $5.

If you have questions or need help setting things up, reach out to me @jtnydv