March 16, 2021

How To Start Blogging Today and Figure It Out Tomorrow

How To Start Blogging Today and Figure It Out Tomorrow
There is a new version of this guide called Full-stack Publisher which you can get for free by signing up using this link.
Full-stack Publisher
A Notion guide on how to self-host and publish with Ghost. Step-by-step and without jargon.

It was 2015, and I was preparing to travel to the USA for 12 days. I can't remember where the inspiration came from, but I decided to write a blog about it every day. Here it is.

I went to and started a new website. No complications, no gimmicks, which was a great start. Even though I didn't have a proper domain and website, I was very satisfied with how the writing turned out. I managed to write one post every single day of the trip.

Because I enjoyed it I started thinking about a proper domain and brand. This meant coming up with a purpose, a name and an area about which to write. It proved to be too much at the time - I forced it too much. I had no real idea, I almost quit at searching for a domain and when I set everything up, I realised was awful. So, I let that one go for a while.

Fast-forward to 2020, I'm running a small newsletter about digital health, clinical medicine and scientific research. At first, I obsessed over finding a niche. If I had a proper niche, I could have more focus and attract a more specific audience (let's say I do now!). Theoretically, this was supposed to be the best way to go about it. Later I realised it's better to start broad, leave my options open and specialise later. Or leave it as it personal. It could serve at least as a portfolio.


If you'll be reading more tutorials on how to start a blog, you'll see many generic reasons on why you should start. The true value in running a blog is nothing else than a low-risk challenge on writing, coding and doing. The most important benefits of starting my website are learning to code, learning the skill of writing and adopting the "doing" mindset. Not to mention having a medium for reflection and being able to track my thinking and development as time passes.

The mantra is "start before you're ready and figure it out along the way".

But why am I so sold on the idea of having a personal blog? Why bother with setting up everything yourself if there are platforms like Medium and Tumblr? Firstly, it's experiencing the process of building something from zero. Secondly, you own what you publish on a personal blog, whereas you don't really on Medium. Thirdly, you are not restricted to design and functionality. Especially if you know just a little code.

What I'm many times faced with is why to start a blog in the time when social media and Youtube are flourishing. There are a couple of reasons:

  1. Again, you own your content on your blog.
  2. Some are more comfortable sharing what they have to tell via a blog rather than Youtube. Additionally, I don't I know a successful Youtuber that doesn't have a website or blog.
  3. Although blogs appear to be outdated, a small revolution of personal blogging is happening. Information is overabundant. A fair amount of it is false or forced upon readers, so there's a need for valuable information the readers are seeking.
  4. You are invisible without being on the internet. Social media is one option, but having a blog is much more personal and appealing than any social media platform out there. A personal blog or website could serve a much better purpose than a traditional CV, for example.

This tutorial is not going to teach you which domain works best, when exactly you have to publish, how to write, how to make people read your content and so on. Partly because that's the easy and unsustainable way out. The hacks that many people out there are selling don't work. What works is quality content. So, why would I want to restrict your creativity? Go out there and do it the way you want to do it.

This tutorial is going to focus on the technical aspect of blogging, an area some bloggers sometimes struggle with. When someone tells you exactly how to do it, it becomes much easier. This is that kind of tutorial. It's going to teach you what works best for the least amount of invested time and money. The technical part should not get in the way of setting up your personal blog - nothing should. That's why you should set up a blog today and think about your niche tomorrow. You don't necessarily need coding skills, just some basic knowledge of computers.

Let's build your home on the internet.


  • The very first thing you have to do is choose a domain name. By far the easiest way is to just go with If you want to start blogging about a specific topic with a specific blog title, then consider a domain name in that direction. Keep in mind that your domain should equal your blog title.
  • Where's the best, most reliable and affordable way to buy a domain? Prices vary among different extensions and a myriad of other reasons, but I've had the best experience with Namecheap. I've never had any problems whatsoever with them.
  • Another advice when purchasing a domain is to buy only the domain. Regardless of which provider you choose, each will try to sell you something extra. An SSL certificate, hosting, insurance etc. You don't need anything else for starting a blog with this tutorial. Namecheap's basic domain is perfect for our purposes as it contains everything you need for a straightforward price.
If you're worried about the SSL certificate, it's provided for free during the Ghost installation.


If Wordpress is no good, what else is out there? Plenty. But in my opinion, by far the best platform is called Ghost. It's an open-source project made by a former Wordpress employee. They stripped away everything they found unnecessary and focused on the basics - producing quality content. The best thing about them is that Ghost is so simple to learn. It's simple to write, simple to install and develop for. Moreover, they continue to improve (see their changelog) almost every week. Recently, they added support for paid memberships, a feature I'm very excited about and already use with Medical Notes.

Setting Up a Local Ghost Environment

A great way to build a website is to first build it locally. You can thus work on all the details by "hosting" it on your computer before publishing it online. You don't have to do this, but it's beneficial to first design and set everything before publishing it online.

Here's how you do that:

  • You'll need a computer running macOS, Windows and Linux. I have a Mac and don't know much about the other two, but it shouldn't be much of a difference.
  • Install NodeJS. To see which versions Ghost supports click here, and to download them click here. I use version 10.16.3 and had no problems with it whatsoever.
  • Next, stall Ghost CLI. Open your terminal or command line on your computer and type npm install ghost-cli@latest -g. With this step, we installed a “command-line interface”. This allows your computer to recognize Ghost commands when you type them into your terminal.
Installing ghost-cli
  • That’s it, you’re done with the prerequisites. Create a folder (i.e. myghost) in the root directory of your computer. Perhaps the easiest way of doing this is by typing mkdir myghost in the terminal. This makes it easy to access from the terminal.
  • Navigate into the folder you created. Do that by dragging the folder into the terminal window or typing cd myghost.
  • The last thing to do is to install Ghost locally. Simply write ghost install local. Make sure you’re in your desired folder.
Installing Ghost locally
  • The installation will be at a localhost address, written out after the installation is complete (i.e. https://localhost:2368). Navigate to this address via your browser, create an account and skip adding your team. It’s not important which email or password you choose as long as you remember them.
  • Have a look around and see what Ghost has to offer. Configure your website, name, description, meta description and everything else. Make sure you also add a logo and a publication icon.
You now see that there’s a prebuilt theme installed called Casper. We can say it’s a “model” theme for Ghost as it has all the needed features they offer. It’s perfectly fine to start with. Later, it can serve as a reference while developing custom themes.

Configuring your website before uploading it is a great way of customisation. You’ll see your product and decide what to include and what not to. You can also write posts, pages and everything else. When you’re done, you can head over to “Labs” tab and export the whole thing. This way, you’ll be able to transfer what you did to your actual website on the web.


Now comes the fun part.

You’ll start asking yourself “wait if Ghost is open source that means it’s free…but why is there a $29 monthly fee on their website”. This is a part of their business model. Ghost in itself is completely free, so they make money by selling hosting called Ghost Pro. And not just any hosting. This is world-class, top-notch, all-inclusive hosting with no work for you whatsoever. Of course, this comes at a pretty hefty price.

There are a few alternatives. Since Ghost is open-source, hosting companies can offer servers images set up for Ghost at a fraction of a price.

Digital Ocean is one of them. Their product is meant more towards developers, which makes some things not so straight forward. But their monthly price is $5.

Another alternative is Midnight. They provide Ghost hosting for $15/month and help you set up everything you need. They essentially offer what Ghost does at half the price. If you’re not someone who doesn’t want to manage their website’s server and don’t want to pay for Ghost Pro, this is for you.

I recommend looking at all the options, considering what you want and then deciding. But keep in mind that in this tutorial, we’ll cover everything you need to know about hosting Ghost on Digital Ocean. Let’s dig in.

Note that if you decided for Ghost premium hosting, head over to their site and skip this section. The same goes for Midnight. Here, I’ll cover only self-hosting on Digital Ocean.
  • After you set up your account, you’ll have to buy something called a “Droplet”. It’s a space on their servers made ready for a specific reason. Navigate to their marketplace, scroll down and there you’ll see (under “Forums & Blogs”) a prebuilt server image for Ghost. Click on it and then click “Create droplet”.
Digital Ocean Marketplace
  • Now it’s time to choose a plan. Trust me, you only need the most basic version at $5/month. Then choose a datacenter region that’s closest to you. The only thing left to do is to name your droplet, leave the rest as is. I would also recommend enabling backups in case something goes wrong later in the process. I’ve been there too many times. Create your droplet and that’s it.
  • You will receive an email that your droplet has been created. Don’t delete it!
  • After creating the droplet we have some configuring inside the terminal to do. The instructions for installing Ghost on Digital Ocean are not straightforward for beginners. Believe me, I was once there. I’ve been through all the struggle, but here’s how it’s supposed to be done. Be sure to follow these steps exactly to avoid complications.
  • If you navigate to the IP address of your droplet you’ll see this:
Ghost Droplet IP address
  • To access this same page via your domain, we have to add one. Click on the 3 dots next to the droplet name and choose “Add a domain”. Then type it in (for example,
  • You will see that some DNS records are already created. There, you can see an A record that points your domain to your droplet IP address. This part of the job is made for us.
DNS records
  • Now head over to your domain provider’s DNS settings and create two new A records that point to that same IP address. The IP address your droplet’s. See the picture below:
Configuring DNS records
  • Once you complete the steps above, it may take some time for everything to propagate. Be patient, if you followed every step it should be done in a couple of minutes. And don’t forget to clean your browser cache and history if it takes too long.
Connected domain
  • Okay, so we connected our domain to our droplet. Now, we have to configure Ghost on that droplet. We do that by opening the terminal, this time inside of our browser. Not the one on your computer, but the one on your droplet. Click on the same 3 dots and click “Access console”.
Accessing console
  • A black screen opens and it prompts you to log in. Remember that email I told you not to delete? In there, you’ll find a username and a password. Username is always root, and password is something random.
If you’ll be copying and pasting the password, note that Ctrl+V does not work in this terminal, but a right-click will. And another thing — password doesn’t show up.
  • It will immediately prompt you to create a new password. First, type in the old one and then create a new one. Again, the password doesn’t actually show up as you type it in.
Login for the first time
  • If everything went well, you should be now prompted to start Ghost installation. To continue, press enter.
Starting Ghost installation
  • The installation will start automatically when you press enter.
Ghost installation
  • When the installation is finished, you’ll have to specify your domain and email address. As far as the domain is concerned, I’ve always typed in the domain without https or www. This means that if your domain is, you should type in the terminal.
Specifying your blog URL
  • Enter whatever email address is best for you. This is to install the free SSL certificate I was talking about earlier.
Adding your email
  • That’s it! You’re done.
This is the console screen after installing Ghost
  • This should complete the Ghost installation on your Digital Ocean droplet. Now, navigate to your domain name in your browser and add /ghost to access admin settings. Then create an account (with valid email and password this time) and you’re done. The only thing you have to do now is to either import what you exported from your local installation or configure everything as I mentioned before.

Off you go writing your first post.

Updating Ghost

The only thing you have to know on the server-side of your blog is how to update Ghost. As I mentioned before, they release updates pretty frequently and you should follow them to make use of all the new features. So how do you update your Ghost installation?

  • After the initial installation or whenever you log into your droplet via the console, you will see the screen below. To update, first type in the line sudo -i -u ghost-mgr and press enter.
Updating Ghost
  • Then, as you do in your local Ghost installation, you have to navigate to your Ghost installation folder. Do that by typing cd /var/www/ghost and press enter.
Navigating into the installation folder
  • The last step is to type in ghost update as seen above and the update process will begin as seen below.
Ghost update

What Now?

Make yourself familiar with the Ghost environment and start exploring. To start you off, here are a few very useful links, both for blogging and the server-side of things:

Not a subscriber yet?

Access all of the content on this site and get an occasional email from me, sign up below.

Sign up No spam ever. Unsubscribe anytime.