This blog post is probably going to be one of our more controversial ones…
And honestly it really pains me a bit to say this. I’m a Software Engineer after all and I consider myself something of a power user.
I use Vim plugins with Sublime Text and PyCharm.
I do a lot of Linuxy things on the terminal with zsh, etc.
But I really think WordPress is the best Content Management System to use for your Startup or Side Project Blog.
Now let’s get into some reasons why I’m saying that.
Easy to use
Tim at Notifier
“If you do not make content easy to write and update, it will not be…”
For Notifier, we have been using WordPress for our blog for about a year now, maybe a year and a half. Before that, I made the mistake of using something else.
And it’s something that you see a lot with developers. When you’re writing a web application, you have a tendency to want to do it in whatever language you’re doing the web application in.
You want to one of the cool kids. You think platforms like WordPress are crap and for some one as elite as you, you can just write it all in markdown and it will be amazing.
This is what I originally did with Notifier way back when it was called “Notifier for Reddit”.
Notifier is a python based web application. We used Django and originally when I started Notifier, for the blog, I was using Pelican, a Python powered static site generator.
And it worked well but there were some real annoyances using it to write content that I noticed only over time. Using a static site generator was great but it wasn’t as easy to use as WordPress.
There’s something to really be said about just jumping in, being able to just write something and see it appear on the screen.
With the Pelican static site blog generator, you have to kind of write in mark down and in order to see the results live, you would have to generate the content, upload it to a server (or you could run it locally).
And there was just a bit of a disconnect between writing what’s in your head and it showing up on the page. Now it wasn’t hard but…
It made it a little bit harder to write content. And that made it a little less likely that I wanted to write it.
Make it easy others to write your content also
Another thing I quickly learned is that you want to use a platform that makes it as easy as possible for other people to write your content.
Besides making it easy on yourself to edit and add content using something like WordPress makes it a lot easier for writers and virtual assistants to easily jump in and edit or add new content.
WordPress is so popular that you are going to find that many people already have experience with it.
It’s not efficient to create all the content yourself
And the last thing you want to do is to be trying to explain to some poor writer you hired that they have to write in markdown and then publish that using a CLI command.
Definitely not Tim at Notifier
Eventually at some point, you need to hire others to help you create your content.
There’s just simply no way someone can scale a small startup doing every single thing – marketing and development themselves.
And the last thing you want to do is to be trying to explain to some poor writer you hired that they have to write in markdown and then publish that using a CLI command.
Some Random and Unorganized Tips on Deploying WordPress as a Startup Blog
Run it in a subdirectory and not on a subdomain
Now let’s start to talk about how we run WordPress.
One big tip I’m going to give is that if you’re running WordPress, don’t do what I originally did.
For Notifier, obviously the primary domain is notifier.so
.
So I thought to myself, “Well, I should just throw a the blog on a subdomain!
And so originally we put it on docs.notifier.so
. Another option that you see a lot is people putting it on blog.notifier.so
.
Subdomains are not optimal for SEO
Then what we found out later on, of course, is that this is not great for SEO purposes because Google considers the domains to be spit.
We then decided to do is to run it in a subdirectory.
There are two options for how to do this when you are a running a web application on your primary domain:
Option 1: Have your web app server distribute traffic directly to WordPress/PHP
User_requests -> mydomain.com -> nginix/apache -> your_app_code
User_requests -> mydomain.com/blog/ -> nginix/apache -> wordpress/php_code
This works great if you were already using my SQL or a stack that easily complements the traditional WordPress stack of Apache/PHP/MySQL.
Option 2: Reverse Proxy to the WordPress VM (our preferred solution)
We have a more Python oriented stack though and so I did not want to mix MySQL and Postgres on the same VM.
What we decided to do is keep WordPress on its own own machine and we’re using Reverse Proxying to send the traffic from Nginx to the WordPress server running Apache2.
Eventually we may write a blog post that shows exactly how you reverse proxy from an Nginx to Apache to using WordPress because it’s not super simple and it did create a few issues that we had to debug and resolve in the end.
Digital Ocean with Letsencrypt
Digital Ocean Cloud Firewall
One of the great things about Digital Ocean is that they offer an easy to use cloud firewall. Use it. Black all incoming traffic from anything that is not in your ip range. Only allow port 80 and 443.
Cloudflare
We use Cloudflare for all of our sites and it’s honestly probably the most amazing free plan that exist on the Internet.
Cloudflare will proxy and protect your server IP address, prevent DDOS attacks, allow you to deploy maintenance pages, speed up your site and a lot of other useful things!
WordPress Plugins I recommend
And now, let’s get to the fun and final part and talk about some plugins that we recommend for WordPress.
GeneratePress
As far as themes go and also a plugin for this theme, we use GeneratePress and I highly recommend it.
It’s a pretty barebones theme. I haven’t looked at the code but apparently it’s coded well to where it’s fairly fast. But because it’s so barebones and simple, it’s easy to adapt for what you want it to do.
They also come with a lot of starter sites so it’s kind of easy to get going quickly.
And like anything, the best thing with GeneratePress is not maybe the product itself but also the support you get so I guarantee you that if you have a question and post it on their forum, they will respond very quickly. Even for some surprising things, like if you want to modify something on the theme or template, they will help you do that and provide the right CSS to use.
It’s amazing that they provide that level of support. That’s why we recommend them so much.
Limit Login Attempts Reloaded
Another plugin you’re going to want to use and you shouldn’t start a WordPress site without is Limit Login Attempts Reloaded.
So what this plugin does is very very important.
With a WordPress site especially when you’re having users create logins, they may not create passwords that are the best. You can tell them, ‘Hey, please create a strong password” and if they do create a strong enough password, it’s almost impossible for an attacker to break that password.
There’s some other things you can do with WordPress, you can edit your htaccess file to restrict access to the WP admin, you can restrict access to that folder to certain IP addresses but the problem is it does not scale especially when you have writers or virtual assistants helping you out.
They’re not going to always have a stable IP address. Sometimes, they won’t even know their IP address and maybe they’re switching locations so it doesn’t scale doing that.
It’s great if you’re just doing it yourself, that works very effectively but otherwise, you’re going to need to use this plugin.
And what it does is it detects, it takes a look at the IP addresses accessing your wp-admin folder. If they get too many unsuccessful password attempts, it will block them for an amount of time.
Now one thing to keep in mind with this is that if you’re using Cloudflare or Reverse Proxying or doing both like we do, your IP address is going to be the IP address of the server that’s sending content to you by default so everything is going to be the same IP address.
So what you have to do to address this is you have to make some modifications in your web server configurations so that Cloudflare and the Reverse Proxy will actually pass on that IP address to the PHP code, the WordPress code, in the end.
That’s not super simple, we will probably do a blog post on how you set that up because it was a real pain to get that set up properly.
LuckyWP Table of Contents
The Next plugin that I recommend is stupidly simple and works stupidly well!
LuckyWP Table of Contents. It simply generates a table of contents for your blog posts based on certain settings that you set up for it.
So I highly recommend it. It’s easy to use, it’s great, and it’s free.
OneSignal Push Notifications
And finally, the last plugin we kind of recommend is OneSignal Push Notifications. They are actually a SaaS service and they help send out notifications to browsers like Chrome, Safari, and Firefox whenever you publish new content.
They have a fantastically easy to use WordPress plugin and all you have to do is run some settings on their site and then you install the plugin, connect it, and you’re basically ready to go.
Wrap Up
So that’s it as far as this blog post goes and our recommendations for getting started with WordPress as the blogging tool for your startup or your SaaS product. In general, the philosophy needs to be, especially if you are a smaller startup or a single person startup, that you need to write as little code as possible
So using a ready-to-go platform like WordPress that’s easy to google questions about, easy to get answers on those questions. It really helps you get started quicker. Then as you scale up, WordPress is very configurable.