It feels great to have a professional (and personal) blog space. I enjoy writing about technical stuff and my experiences. And over the past years, I've attempted many times to launch a blog, but most of these attempts failed. The idea of hosting, deploying and managing everything was very looming and off-putting. I often find myself falling into a rabbit hole trying to solve these things through automation. Creating a fully automated CI/CD pipeline to satisfy all of my wishes. But then, in the end, I always gave up because the direction or result just wasn't there.
| Note: No later than a couple of weeks, Ghost has release version Ghost 4.0 and offers a subscription starting at $9 (yearly). However, if you are a little more technical and want access to more features and customizations, I would recommend continuing to read the post below.
I finally found a setup easy enough to start with, and I'm delighted. Looking back, I could have made things easier for myself. I'm probably not going to use all of the things that are now at my disposal. But funny enough, it's always nice to have additional tools😉 Let us go through the list of technical things I've chosen, starting with Ghost.
The spooky blog
So as my blog, I choose Ghost. It is not really a blog but more of a publishing platform. Over the past couple of months, I've always been drawn back to the list of features offered by them. For publishing, it offers an overall complete experience. It uses Markdown, which makes writing posts with code very friendly. Tagging featured posts and SEO makes my content more (hopefully) findable and organized. Anything that is a basic necessity for a blog.
You can style your website by choosing a theme available through different marketplaces. Both free or paid themes are available, or you can even make your own. It was one of the experiments, and it was fun and great to learn more about Ghost. It also led me to explore JAMStack and Gatsby.JS. But enough about that rabbit hole.
Last but not least, Ghost has a more noteworthy feature which is its members and subscriptions. Your readers can register for free, and allows them to receive notifications/newsletters when you publish them. But they can also subscribe for a monthly or yearly fee. Respectively allowing you to publish content accessible to registered users only or paying users. Some more thoughts of why I ended with Ghost:
- Audience: interaction with the readers through many means such as sharing, comments and newsletters.
- Newsletters: You will have to connect a mailing service such as MailGun to start sending emails, but I really like the idea of having the option to start sending newsletters about maybe the smaller things that I run into and are not worth a post. Additionally, Ghost allows you to segment your emails, giving you the option to send them to free members or paid members (or both).
- Business: As this is a professional blog, any future business opportunities or career paths that open up are great bonuses.
- Integrations: Comments, analytics, workflows. The possibilities are great, although I don't see myself using anything special. Here is a list of all the integrations currently possible.
Choosing the right vessel for the sea of internet
While exploring Ghost as a blog, I also looked into the hosting options. Ghost is a non-profit organization, and to support that organization, they offer a hosting service called Ghost(Pro). This service costs $36 or $29 per month, depending on your prepay for the year. This price is unattractive for just trying to start a blog.
But Ghost also documents some alternatives. Whether it is self-hosted or containerized with Docker. Working with containers has taught me to appreciate enough simplicity of creating a container and deploying it in different clouds, such as AWS or Azure. But these experiments again left me with a sour aftertaste. The overhead of creating a container, managing the database and testing each consecutive change put me off and stopped me in my tracks to further progress. So what I really wanted was a single click deployment without worrying too much about backup, configuration, and such.
Luckily Ghost has an official partner DigitalOcean, and they provide prebuilt packages. Even better, they provide a "Ghost 1-Click App" on their marketplace and promise to have an instance up and running in 2 minutes. They offer a couple of sizes for virtual machine sizes, and the cheapest one with decent performance comes for $5 per month. This is a great starting price, and for the first 2 months, there is a free $100 credit.
All that is required from you is that you bring your own domain. If you don't have one at the moment, that is fine. You can come back after creating the VM. The installation guide was easy enough, and after following every step, I had my blog running, as promised, in a couple of minutes. Since I didn't have a domain yet, I was playing around a bit with ghost using the IP address of the VM.
After purchasing my domain, I followed this handy guide on how to connect my domain to the Virtual Machine. After that, I impatiently waited for things to propagate, and presto, everything was working as expected. With the domain connected, it was time to go back to the VM and set up the SSL.
- Connect to the VM using an SSH session
- Login as ghost-mgr
sudo -i -u ghost-mgr
- Navigate to the ghost folder location. Typically at
ghost setup ssland follow the instructions
And that was it—time for the launch. Let the countdown begin. 10...9...8...
We have liftoff 🚀
That pretty much concludes the setup. I also created a personal website as well with the same setup. It was easy enough to do it again. This personal website focuses more on personal and travel-related topics. If you want to take a look https://rikvandenberg.com
To conclude my initial journey:
- Launched a Ghost website
- I'm hosting it on a $5 VM on DigitalOcean
- Bought a domain
- Setup an SSL with the LetsEncrypt integration of Ghost
Feel free to ask any questions or leave a comment. I would love to hear your feedback or interact with you as a reader.
If you are interested in trying this all for yourself or want to try DigitalOcean and see what they've got to offer, you will find an affiliate link below. When you sign up, you will receive $100 of credit for a period of 60 days. After that, if you decide to continue using DigitalOcean, I also receive additional credit.