Yearly Archives: 2020

How To Start A Blog In 2021

Here’s my step-by-step guide on how to start a self-hosted blog in 2021. If you’re a complete beginner, you’re in the right place.

This blog post is a definitive guide to starting a personal or niche blog from scratch.

If you search for the “best blogging platform” on Google, the SERP may end up with these suggestions:

  1. Blogger
  2. WordPress
  3. Ghost
  4. Tumblr
  5. Squarespace
  6. Medium
  7. Joomla

We’ll use WordPress CMS because it’s intuitive, versatile and the learning curve is smooth. It’s the ideal content management system for beginners. Furthermore, WordPress powers 30% of websites worldwide.

Keep in mind that I’m not a famous blogger or influencer. False motivation isn’t my thing. I won’t promise you a bogus metrics, or an income figure you can make each month as a blogger. I’ll stick to the facts and help you set up a self-hosted website based on WordPress.

I’ve prepared this guide in a story format. I’ll also recommend the optimal settings and plugins for WordPress bloggers. Please bear with my backstories and crossovers nobody asked for.

How to Start A Blog: Step-By-Step Instructions

Let’s divide this definitive guide into two sections:

  1. Buy a domain, enable CDN and purchase a VPS.
  2. Install and configure WordPress.

Prerequisites, Notes & Recommended Apps

Putty (Windows) or Terminal (MacOS): We need an SSH client to log in to the server. PuTTY is an SSH and telnet client, developed originally by Simon Tatham for the Windows platform. macOS users, stick with the Terminal app.

WinSCP (Windows) or Cyberduck (MacOS): As a beginner, you won’t be flexible with Linux commands to move/copy and edit files. Use an SFTP/FTP client to view, edit and manage the data on the server. WinSCP is a free and open-source SFTP, FTP, WebDAV, Amazon S3 and SCP client for Microsoft Windows. I recommend Cyberduck for MacOS users.

VestaCP:  We’ll use VestaCP, a free and open-source control panel as the default control panel to host the WordPress website on your server.

CDN & Managed DNS: We will be using Cloudflare as the DNS manager + cloud network platform. They provide free SSL also. Having an SSL certificate is crucial because Google will be counting HTTPS as a ranking factor. It is recommended to create an account right away. I will use as the dummy domain. You’ve to replace it with your domain-name.tld. I will use as the dummy server IP. You’ve to replace it with your server’s public IP address.

Purchase Domain, Host & CDN.

These three are the crucial steps. A Content Delivery Network (CDN) service is optional, but it has its benefits. We’ll discuss it later. Let’s purchase a server (VPS) first.

Buy A Domain

You need a brand name. Maybe you already have one. Let’s translate that brand name to digital identity.

I prefer NameCheap because I’ve already made more than 40 domain name purchases via their site. They are reliable, and their support has been great.

However, I don’t recommend NameCheap’s hosting services.

Sign-up here, search for a domain name of your choice, add it to the cart and make the payment.

Now, visit this URL, locate the domain you recently purchased, and click “manage.”

Buy and Manage Domain NameCheap

Once you click “manage,” you’ll see something like this.

Manage NameCheap domain

Keep this browser window idle, open a new tab, and proceed to the next step.

Add Site to Cloudflare

Visit and log in to your account (assuming you’ve created an account). Click “+ Add Site” located in the upper right corner.

Cloudflare Add Site

Now fill in your domain name and click “Add Site.”

Cloudflare Add Domain

Click “Next,” select the free plan and click “Confirm Plan.”

Cloudflare Free Plan

Wait for Cloudflare to finish querying your DNS records.

Cloudflare DNS Query

Usually, Cloudflare will return your current DNS settings; this will be NameCheap’s default settings. Clear all the fields and Click “Next.”

But, sometimes it may display an error like “we are unable to find your DNS settings.” Just click “Next”.

Now, Cloudflare will ask you to change the nameservers in your NameCheap dashboard.

Cloudflare Nameservers

Visit the idle window I mentioned before. Select the “Custom DNS” from the dropdown in the NAMESERVERS section. Fill in the nameservers as suggested by Cloudflare and Click ✓ (save).

Cloudflare Custom DNS

Switch the active window to the Cloudflare setup once again and click “Continue.”

Cloudflare Nameservers

Give it a few minutes for the DNS propagation. The Cloudflare status will be “Active” after DNS propagation.

You’ll receive an email confirmation with the subject line: “ has been added to a Cloudflare Free Plan.”

Understand Self-Hosting vs. Shared Hosting

I’m against the idea of shared hosting. A lot of bloggers out there recommend shared-hosting (just because they want to promote their partners/affiliates).

Anyone could purchase, self-host and manage a Virtual Private Server (VPS) efficiently. It’s not as expensive as we think.

I’ve prepared WordPress installation scripts and other necessary resources to aid you.

Buy A Virtual Private Server (Host)

A Virtual Private Server (VPS) is a virtual machine sold as a service by an Internet hosting service.

We will host our WordPress site on a dedicated VPS. Shared hosting is okay, but not recommended since we’ve to share the resources with other people.

I prefer to host the site(s) on my server. Sites like Bluehost come with one-click WordPress installation.

But, I don’t recommend Bluehost or any of the companies that come under the EIG umbrella. They’re known to upsell the services.

I’ve seen some well-known bloggers recommending Bluehost. Don’t fall for the marketing gimmicks. Most of these websites have a partnership with Bluehost.

Moreover, you shouldn’t be hosting your site on a shared server if you plan to go big in the future. Stick with dedicated hosting (VPS), own a private server and scale it.

I always recommend a DIY approach when it comes to web hosting. It’s easy and cheap if you can register an account on sites like RamNode or DigitalOcean.

We’ll use DigitalOcean for this beginners’ guide. I’ve used their services to host multiple projects since it’s reliable, secure and budget-friendly. Their customer support has been great so far.

Here’s another reason why I’m recommending DigitalOcean. My referral link comes with a free $100, 60-day credit for new registrations.

DigitalOcean $100, 60-day credit

Sign-up here.

Nb: All new registrants should verify their account by binding a Credit / Debit Card or by topping up $5 via Paypal. The next step is to create a project and set goals. The company created the “Projects” section to keep users’ systems organized and focused, which save us time navigating the Control Panel.

You’d be able to finish the registration and verification process under five minutes.

Visit this link after verification and creating a new project.

Build Your First Droplet on DigitalOcean

Click on “Get Started with a Droplet

DigitalOcean Droplets: Explained

DigitalOcean Droplets are flexible Linux-based virtual machines (VMs) that run on top of virtualized hardware. Each Droplet you create is a new server you can use. The company offers Standard and CPU Optimized droplets. Standard Droplet is scalable and more than enough for bloggers.

Now the platform asks you to choose an image, size and datacenter region.

DigitalOcean Droplet: Recommended Settings

DigitalOcean Droplet: Recommended Settings

Adding backup and block storage is entirely optional. Don’t worry about backups. We’re going to use VestaCP as the control panel. It comes with backup  option.

Image: CentOS 7.5 x64.
Size: $10/mo. (2GB/1CPU, 50GB SSD Disk & 2TB Bandwidth).
Datacenter region: Select a region close to yor potential audience.


  1. You can upgrade and scale droplets anytime.
  2. I’ve selected CentOS 7.5 x64 because it is a stable Linux Distro.
  3. I highly recommend users to learn more about SSH keys and generate/set-up SSH keys while creating a droplet. SSH keys provide a more secure way of logging into a virtual private server with SSH than using a password alone. Read this official guide from DigitalOcean. You need PuTTYgen to create SSH Keys on Windows.

Finally, Click “create” if everything looks okay for you.

Patiently wait for DigitalOcean to create the droplet, generate a Public IP, one-time root password and send it over to your registered email address.

Managed Hosting Recommendation (Optional)

Only recommended if DigitalOcean sounds too much of a hassle.

Managed hosting is usually an extension of dedicated hosting, whereby the required hardware is owned by the hosting provider and is leased to a single client. —

Sign-up with Kinsta if you prefer a managed WordPress hosting solution. Web hosting with Kinsta can range from $30 per month to $900 per month. The platform exceptional, sleek, and intuitive.

Why Kinsta?

It is a platform officially recommended by Google Cloud as a fully-managed WordPress hosting solution.

Install VestaCP On CentOS

Login to your server as root

Use the credentials DigitalOcean sent you over email to log in.

  • MacOS: Open the Terminal.
  • Windows: Open up PuTTY. If you find it confusing, read this article.

Type the following and hit enter:

$ ssh [email protected]

Replace with your server’s public IP address.

During first login, DigitalOcean’s CentOS distro will force you to change the password.

Install Vesta CP (Control Panel)

Download installation script

$ curl -O

Run it to start the installation

$ bash --nginx yes --phpfpm yes --apache no --named yes --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota yes --exim yes --dovecot yes --spamassassin yes --clamav yes --softaculous no --mysql yes --postgresql no

We’re going with the NGINX + PHP-FPM configuration instead of Apache + PHP. This is one of the best configurations that promises better performance.

CentOS may ask you to force the installation sometimes. Run this command to do it:

$ bash --nginx yes --phpfpm yes --apache no --named yes --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota yes --exim yes --dovecot yes --spamassassin yes --clamav yes --softaculous no --mysql yes --postgresql no -f

The setup will ask you type in the hostname and email address.

It’s wise not to use as the hostname. Use instead.

VestaCP roughly needs 5 to 10 minutes to finish the installation. It will display the login URL and admin credentials upon completing the installation.

Configure DNS

Visit the DNS section of your website in

Set CNAME and A records as follows.

  • A Record – Name: @, ipv4 address:
  • A Record – Name: server, ipv4 address:
  • CNAME record – Name: www, Domain Name: @

Make sure it looks like this after editing.

Cloudflare DNS

Don’t forget to replace with your server’s IP.

Add New Website on VestaCP 

Visit the VestaCP login URL

Log in using the credentials you saved before (Login URL may look like Change the admin password after logging in. Feel free to tweak other settings according to your preference.

Add a website

Visit the WEB section in the VestaCP and click the “ADD WEB DOMAIN” button.

VestaCP Add New Domain

Fill in (e.g., and select the default IP address. Click the ADVANCED OPTIONS and edit the Alias to Click “Add” when you’re ready.

VestaCP New Domain

Wait for a few seconds and visit You’d see a dummy home page generated by VestaCP. example domain VestaCP example domain VestaCP.

Disable Cloudflare HTTP proxy to enable LetsEncrypt SSL.

It is not possible to create Let’s Encrypt SSL certificates in VestaCP while the CloudFlare CDN is active, so turn it off by clicking the Orange Cloud as shown in the image. The Grey Cloud means CloudFlare CDN is off.

Turn off Cloudflare CDN to generate CloudWays Let's Encrypt SSL Certificates

Enable Let’s Encrypt SSL for

Visit this URL: https://127.0.01:8083/edit/web/?

Locate the SSL Support section and check the Let’s Encrypt Support and click Save.

Enable Let's Encrypt SSL for

Install & Configure WordPress

We’ve to configure wordpress2 Web Template for before WordPress installation. It is a dedicated template for WordPress sites based on NGINX + PHP-FPM on VestaCP.

Visit this URL: https://127.0.01:8083/edit/web/? once more and look for the Web Template section. Select wordpress2 from the drop down and click Save.

Now revisit VestaCP web dashboard and make sure it looks like this:

Ideal set-up for an NGINX PHP-FPM WordPress site on VestaCP

Ideal set-up for an NGINX PHP-FPM WordPress site on VestaCP

Finally, Install WordPress

Login to your server as root

Type the following and hit enter:

$ ssh [email protected]

Use my bash script to install WordPress:

Copy and paste:

curl -O

and run:


The script will ask you to fill in few details like domain name, user and database details. USERNAME should be admin, and you must fill in other information according to your preferences.

  • USERNAME: admin
  • Database NAME:
  • Database USER:
  • Database PASSWORD:

Wait for the “All done! Enjoy Fresh WordPress Installation.” message.

Now, visit to configure WordPress.

Fill in Site Title, username, email, and password etc. Copy and paste your password and username somewhere safe. There are chances VestaCP mailer won’t send WordPress’ system emails.

You can use Sparkpost as the default mailer. Create an account on their website and configure TXT, CNAME records for the mailer domain ( Install their plugin and save the API details to activate the same.

Finish WordPress Installation

Install the Cloudflare Flexible SSL, Really Simple SSL Plugins & Turn on Cloudflare SSL

Cloudflare Flexible SSL plugin is essential for enabling Flexible SSL on Cloudflare and will prevent infinite redirect loops when loading your WordPress site under CloudFlare’s Flexible SSL system.

Flexible SSL for CloudFlare

Really Simple SSL plugin will make sure your site is loading over https:// all the time. It is essential to install this one as well.

Really Simple SSL

Install both plugins and head over to Cloudflare dashboard. Turn on Cloudflare CDN right away.

Enable Cloudflare CDN Cloudways

Install A WordPress Theme

Read This Before Installing A Theme

Twenty Nineteen will be the default theme of your blog. Stick with it, if you like it. WordPress 5.0 (Bebo) comes with Gutenberg block editor as default.

You may install and activate the “Classic Editor” plugin if you don’t like the Gutenberg editor.

Install And Activate Classic Editor WordPress

You can download Classic Editor plugin from the official GitHub repo, or install and activate it through your WordPress administration panel at Plugins → Add New.

How to Select The Default Editor on WordPress

You can set the default editor in the Writing Panel within the Settings → Writing.

How to Select The Default Editor on WordPress

How to Install A WordPress Theme

You can install themes via WordPress administration panel at Appearance → Themes → Add New. You could either search and install WordPress Themes or upload them and install.

How to Install A Theme in WordPress

Recommended WordPress Theme For Bloggers

I recommend GeneratePress; a Gutenberg-friendly WordPress theme ideal for both casual and serious bloggers. It is highly flexible, 100% A11Y-ready and lightweight. I’ve been using this theme for a few months. My GeneratePress review covers all the information you need to get started with this WordPress theme.

GeneratePress Review: Best Gutenberg-ready Theme in October 2021

You can download GeneratePress for free from their website, or install it through your WordPress administration panel at Appearance → Themes → Add New.

That’s it; you’re all set. Happy blogging!

Other recommendations

These recommendations are genuine and based on personal experience.

WordPress Caching Plugin

Make use of a caching plugin called Autoptimize developed by Frank Goossens (futtta). It can aggregate, minify and cache scripts and styles, injects CSS in the page head by default (but can also defer), moves and defers scripts to the footer and minifies HTML.


Hide WordPress Login URL With A Plugin

You should protect your website by changing the login URL and preventing access to the wp-login.php page and wp-admin directory while not logged-in. Use WPS Hide Login, a Free plugin.

WPS Hide Login


  • Sparkpost: For email delivery. The setup procedure is straightforward.
  • Zoho Mail: Ad-Free Business Email Hosting.

Need help from a pro?

Send a message now!

Combine Multiple Videos Using ffmpeg

As seen on I’m just documenting this in my own way for future reference. This method is only applicable to videos of the same dimensions and encoding. Tested on FFmpeg 4.3. I use this method to download and concatenate youtube-dl outputs.

Step 1: Create a text file and make a list of video files.

touch files.txt
vi files.txt

Example content to save:

file 'p1.mp4'
file 'p2.mp4'
file 'p3.mp4'
file 'p4.mp4'

Step 2: Run the command below

ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4

New Laptop & Linux Mint

Update: Sold the HP laptop and purchased an Acer Swift 3 Intel variant. Running macOS and Windows 10 at the moment.

My Lenovo ThinkPad X230 is no more. Lost it to a motherboard issue caused by electrical surge. I’ve been using that laptop connected to direct AC.

Got hold of an HP 14q-cs0029tu i3 8th gen variant. The laptop comes with i3 8130u CPU, Samsung 8GB DDR4 2666MHZ Memory & 256GB WD SN750 NVMe™ SSD. They shipped the laptop with Windows 10 Home.

But, meh…I don’t have a good internet connection at home, which means I can’t install Steam and play lightweight indie games. So ultimately, except for FL Studio, Windows 10 is useless to me at this point.

Installed Linux Mint 19.1 Xfce right away. I’ve installed LMMS as the backup DAW for the time being. I really don’t feel like going to back Windows just for FL Studio. I haven’t installed GIMP yet.

HP 14q-cs0029tu Linux WiFi Driver

And if you’re planning to install Linux on this HP laptop, keep in mind that WiFi won’t work OOB. You’ve to install the Realtek RTL8723DE module for Linux and restart the Machine.


  • I took that cover photo while unboxing. Sorry about the distortion.
  • I use Mc-OS CTLina XFCE theme & OS Catalina icon pack.

API-alpha for Bug Guide

Status: Deprecated

Explore the data-set of 35447 insects!

Based on’s multiple .txt sets, I created an API to deliver insects’ data in JSON format. At present, the API only delivers the common name, genus, species, family, order, bug_guide_id, and URL information.

API Endpoint


Data can be parsed as JSON. Access to the doesn’t require a token-based authentication. Kindly avoid sending too many requests. Consider donating if you plan to actively use the API.


Query a common name


Query a genus


Query species


Query a family


Query an order


Query a bug_guide_id


Query combination example


API Usage Example (Python)

Alpha disclaimer

The API is actually in the alpha stage, which implies that “bugs” and issues may still remain undiscovered until this phase of testing is complete.

The alpha stage also means that the data may be corrupted, is not 100% validated or complete, and is subject to change.

Finally, services may have downtime and the API schemas and calls are subject to change

An Example Bot for Twitter & Facebook

Here’s a small Python script to run your own Every Word Bot variant on Facebook and Twitter. The basic guide is available at the bottom of the article. Unfortunately, the guide is not applicable to beginners. Here’s the GitHub repo.

Step 1 — You need a VPS or an account on to host and run this script. I highly recommend a DigitalOcean droplet if you can afford a VPS. I think you’ll get a 50USD or 100USD credit on DigitalOcean when you sign-up with the link I shared. You could check Amazon AWS or Google Cloud Platform also. Select Debian, Ubuntu, or CentOS while you’re creating a droplet or instance.

Step 2 — Install Python 3 followed by the modules facebook, tweepy, and schedule. Installing modules will become fairly easy once you get the hang of it. 

Step 3 — Create a Facebook page and generate an Access Token from Paste the token to the accesstoken field in the script.

Step 4 — Create a Twitter app and generate tokens & secret keys. It’s explained in the Access token/secret method section of this blog post

Step 5 — Download the English words data-set of your choice.  Replace the words.txt in my repo with the text set of yours. Fire up the script with the command sudo python3

You can use tmux to manage the sessions.

Also read:

Get Creative

Look at @loveeveryword and @bottubebot for example. You could use Pillow to post images or even GTTS + moviepy to post videos.

Credit: Cover Photo by Brett Jordan on Unsplash

Python for Automation

30 days of Python, and it’s changing my perspective.

I’m more of a “front-end” development guy. I routinely manage WordPress websites and optimize the servers for optimal performance. Python or Node isn’t something I need every day.

Here’s a source code to get started.

The Every Tom and Jerry Frame in Order Facebook page sparked my interest in the area of “social media automation for entertainment”. I grabbed that project’s source code and started tweaking.

Failed miserably at first. Then I wrote an email to the code maintainer. They were generous and wrote back. The emails went back and forth until I fixed my version of the script.

Learning and tweaking Python code has been a spiritually refreshing experience. I had a good time writing various other scripts.

The progress

I religiously use modules like OpenCV, moviepy, Wikipedia, Pillow, FFmpeg, schedule, requests, JSON, etc.

I’ve managed to learn more about JSON data as well.

I’ve also started using WordPress REST API with Python3.

Results (Facebook bots)

Deep Dreaming Harvard Art Museums Bot — A Facebook page that lets you explore Harvard Art Museums in DeepDream (neural network) mode. Objects are picked in no order. No logs stored on my server.

Met. Museum Bot — Another art museum based on The Metropolitan Museum of Art’s API. 474383 objects in total.

Fishbot 13229 — An ultimate wiki-bot that shares photos and information about fishes. I use’ data as the base to gather Wikipedia info and images.

Birdbot 11147 — Another wiki-bot destined to share photos and information about birds. It also shares the IUCN Red List status.

Insect Bot 35499 — A bot that appreciates hexapod invertebrates.

CryptidWiki Bot — A bot based on’ data. It shares stories about various cryptids in a timely manner.

Amphibians & Reptiles Bot — Another wiki-bot that shares photos and information about amphibians and reptiles.

Plant Bot — A bot that randomly posts an image of your favorite photosynthetic eukaryotes. The image search isn’t perfect yet.

Bots With Attitude — A bot based on GPT-2 captions and AI-generated (API) photos. Still a work-in-progress. — A script that generates CC0 1.0 abstract art every hour. Based on an open-source project.

Haunted Places Bot – US Edition — A bot that shares info about haunted places in the US. The script uses data from Shadowlands Haunted Places Index. Images are randomly captured from search engine results.

@1000000Bot — A script that randomly shares a website URL (from Alexa’s dataset) and its basic PageSpeed insights.


  • (Scrape)

iPhone SE, A13 Bionic FTW

I’ve loved everything about my iPhone SE (GEN1). One of the best form factors in my opinion. Now Apple decided to give us a budget iPhone in the iPhone 8 shell paired with the majestic A13 and classic design.

Highlights — Best Single-Camera System, A13 Bionic Chip & Dual SIM.

Lockdown Extension

So they’ve decided to extend the nationwide lockdown. It’s a good move in my opinion. But I disagree with the idea of bringing back the mass population of Indian ex-pats in UAE and other countries.

The best move would be financially and emotionally supporting them through the embassies. Give them proper quarantine awareness and move them to isolation centers under the Indian embassy’s supervision.

COVID-19 is mainly transmitted through droplets generated when an infected person coughs, sneezes, or speaks. Traveling puts everyone at risk. Or they should travel as mini-groups.

Old ThinkPads

I love everything about the old Lenovo ThinkPads (≤ 2013). These machines are highly customizable compared to the latest ultrabook laptops. I use a T530, X230, and an X230 Tablet. And all of these laptops are capable of running macOS Catalina also.

I highly recommend old Lenovo ThinkPads if you’re on a budget. Plus recycling can benefit your community and the environment. It’s a sustainable approach.

Young Sheldon

Wasn’t a big fan of Sheldon nor The Big Bang Theory. But I’m hooked to the quirkiness of Young Sheldon. Maybe because I’ve got a daughter now. I find this is the right time to start appreciating family TV shows. Life’s changing. My favorite character is Meemaw. Annie Potts is so charming as Constance “Connie” Tucker.


Worst days ever. I miss my wife, daughter, and Chengdu. The Kerala government is doing its best to contain and isolate COVID-19.

Gigabyte B150M-VP Skylake Hackintosh Guide

This was an easy one. I’ve recently installed macOS Catalina 10.15.2 on my desktop PC. The specs are Gigabyte GA-B150M-VP, i5-6600K CPU, Team Elite 8GB DDR4 2400Mhz Memory, and Radeon™ RX 580 GPU alongside a boot SSD for macOS and shared HDD storage for macOS and Windows. This is a test set-up and I won’t tweak this build for the latest versions of Clover or macOS.

Skylake Hackintosh Menu Bar

A word of warning; you should modify the EFI (a lot) if your system specs are different. Ethernet isn’t working for me for the time being. Downgrading Clover would fix that. But I use a nano-USB adapter for WiFi. I’m content with that. Everything else should work out of the box if you have the specs as mine.

Nota bene

  • Proceed with caution. Don’t blame me if you didn’t back up.
  • Delete VoodooHDA from Kexts/Other, if the AppleALC Kext is working.
  • The guide is not applicable to Opencore bootloader. Go ahead though, if you know what you’re doing.

Download The EFI Pack

My EFI folder is applicable for Vanilla approach and SSD hot-swap (just replace/paste EFI folder – not recommended though.) If things go south, use the clover settings from Hackintosher’s ASUS Z170 EFI Pack. But then you’ve to tweak settings a bit more.

Kexts for Gigabyte B150M Skylake Hackintosh Catalina

Kexts/Other folder.

What Doesn’t Work?

  • Sleep/wake
  • Ethernet (For the time being. Catalina broke the ethernet for me. I use a WiFi adapter anyway. So no plans to fix it real soon.)
  • FaceTime/iMessage (It will work after SMBIOS edits. You should do that.)


  • Guide to create a bootable macOS Catalina USB install drive (on macOS)
  • Guide to create a bootable macOS Catalina USB install drive (on Windows)

Post USB preparation

  • Install Clover to the USB flash drive.
  • Use Clover Configurator (macOS) or DiskGenius (Windows) to mount the EFI folder within the USB flash drive.
  • Paste my /EFI folder to the EFI partition.

Good luck!

Tip Me:

Support if you’d like by referring my resume or donating through PayPal, Phonepe, or Alipay.

Update: ThinkPad T530 Hackintosh Catalina

ThinkPad T530 is undoubtedly a solid machine that can handle macOS Catalina. I installed Mojave on this machine a while ago but never bothered to use T530 as a daily driver. Skip introduction at your own risk.

But here we are! The hacking part was quite easy this time. Few Kext updates and alongside Clover update did the job. I haven’t edited the config.plist from Mojave installation as well. Luckily Apple didn’t throw any kernel panic while testing. I did a Vanilla install by the way.

Behold, behold The mighty one!

Alright, let’s dive in! Read the guide carefully if you’re a beginner. Don’t blame me if you f*ck up your current OS.

Don’t forget to fork or star my GitHub repo while you’re at it. Please don’t sell the EFI or use it on your YouTube video without giving credit to the original author. Don’t be an A-hole.

My ThinkPad T530′ Specs: i7 3740QM, 16GB Memory, 128GB SSD + 256GB SSD + 750GB HDD, NVIDIA NVS 5400M (N/A for Hackintosh)

Search Results Web results Hackintosh | Installing Catalina on Lenovo T530

The Kexts/Other folder.

What Doesn’t Work?

  1. Inbuilt WiFi card.
  2. Mini DisplayPort.
  3. Fingerprint reader (if you’ve one).
  4. Card reader.


  • Proceed with caution.
  • Tested on macOS Catalina 10.15.2.
  • EFI folder is N/A for Opencore bootloader. Go ahead though, if you know what you’re doing.
  • Do a Vanilla install if possible. I haven’t tested a direct update from Mojave.
  • The EFI folder is applicable to SSD hot-swap also. ie, if you’re planning to swap SSD from a MacBook Pro to ThinkPad 530.

Download The EFI folder for ThinkPad T530

Recommended BIOS settings

Disable dGPU: The process is quite simple. Go to BIOS Setup -> Config -> Display and set the Graphics Device as “Integrated Graphics.” Also, disable the OS Detection for NVIDIA Optimus. Make sure it looks like the attached image below. Then, select Save & Exit.

ThinkPad T530 BIOS Display Settings for Hackintosh

Select UEFI Only: Go to BIOS Settings → Startup, select UEFI only.

Disable CSM Support: Do this if the USB doesn’t boot initially. Go to BIOS Settings → Startup, disable CSM support.

T530 BIOS Startup Settings for Hackintosh

ThinkPad T530 macOS Catalina – Vanilla Installation Guide(s)

It doesn’t matter if you own a real Mac or not. I’ll share the installation guide for both macOS and Windows.

How to create a bootable macOS Catalina 10.15 USB install drive? (on macOS)

Step 1: Refer to this guide from 9to5mac

Step 2: Download and install Clover to USB.  Refer to this article for clarity.

Step 3: Install Clover Configurator, and mount the EFI partition. Then replace the EFI folder with the one on my repo.

How to create a bootable macOS Catalina 10.15 USB install drive? (on Windows)

Step 1: Install Transmac on a Windows machine. It has a 15-day trial period and works flawlessly flashing DMG files to USB.

Step 2: Download the macOS 10.15.2 with clover dmg file from here or other sources you come across Google SERP.

Step 3: Download the EFI folder in my GitHub repo.

Step 4: Download Clover Configurator for macOS (latest version).

Step 5: Connect a 16 GB USB flash drive.

Step 6: Open Transmac. In the left pane, right-click the USB Drive and select Format Disk for Mac

Again in the left pane, right-click the USB Drive and select Restore with Disk Image. Then select the DMG file I mentioned in (2). The flashing process will take a few minutes depending on the size of .dmg and speed/port of the USB drive.

Step 7: Install DiskGenius.

Step 8: Locate the USB drive in DiskGenius. Delete the EFI folder and replace it with the new EFI folder. Refer to this part of a YouTube video for clarity.

Step 9: Plug the USB drive into the ThinkPad T530 and boot from USB.

Step 10: Format the disk drive to APFS, install macOS Mojave and restart the system.

Step 11: Connect the Hackintosh system to the Internet via LAN cable, USB tethering or a Mac-compatible external WiFi adapter.

Step 12: Download & install Clover Configurator on MacOS. Open EFI partition and copy -> paste the EFI folder once more.

(Optional) You may use Karabiner-Elements if the keyboard mappings (command and option) are acting up.

All the best! Write to me if you need professional guidance.