How I Set Up This Blog

Template

I used Tailwind UI's Spotlight template. However, if you want to use it, you'll have to pay for it (I have found Tailwind UI to be an excellent investment). Some people will prefer their design to be unique, but I'm satisfied with something that looks nice and lets me focus on content. If you don't want to pay for Tailwind UI, Netlify also has starter templates that you can use. If you Google around, I'm sure there are plenty of other Next.js templates.

Comments

I believe that comments are important. I decided to self-host Discourse (see notes below about email setup on port 465!) for comments because you can easily create new posts automatically and embed them on your blog. I tried Commento, but the layout broke on mobile. Self-hosting Discourse is cheaper, too ($7/mo on Digital Ocean), and since it's meant to host whole communities, it has a battery of valuable features.

Transactional Email

Discourse requires a functioning email for user registrations, etc. I used DreamHost, which has very reasonable prices and configurations for simple use cases. Also, if you register the domain name on DreamHost (or transfer it), then it configures DKIM and SPF for you.

One weird thing: Discourse doesn't support port 465 for SMTP correctly out of the box. After a bit of digging, I found that you need to set DISCOURSE_SMTP_FORCE_TLS: true in your containers/app.yml (search for other DISCOURSE_SMTP settings to find the appropriate place to set it). After setting this, you'll need to rebuild (cd /var/discourse && ./launcher rebuild app), which takes a while (it took like 30-45 minutes for me).

Mailing List (Marketing Email)

Most marketing email services want you to have a registered company with a physical address that they can verify before you can set up a mailing list. Obviously, this is not ideal for a personal blog. They also tend to be expensive with fairly limited free tiers; for example, MailChimp insists on adding a banner to the bottom of all your emails in the free tier.

I used follow.it instead. It was painless to set up, did not require a physical address, and can pull new posts directly from your RSS feed, which makes publishing effortless.

Deployment

I Deployed to Netlify, which was free and easy.

That's it! I hope that this saves someone some time. It took a little while for me to find a good combination of services. I took a lot of inspiration from Coding Horror.

Stay up to date

Get notified when I publish something new, and unsubscribe at any time.