A dummy’s attempt to set up WordPress

There’s something to be said about how good it feels when you set up a blog from scratch. And for a CMS, I’ve always liked WordPress because it was always so easy to set up despite being so feature-rich. I’m no developer but the thing was that even when new cloud-hosting options like Digital Ocean and Vultr (which offered the $5/mo server and weren’t BS like the popular shared-hosting retailers) came up, they had one-click installs from the get-go. There really was/is no incentive to learn how to setup WP. It’s become something you take for granted.

On top of this, my technical grammar is infantile, which makes learning to setup these things more difficult because you’ll need documentation that assumes you really know very little. For example: WP is a PHP app; Ubuntu and Debian are OSs; Apache and nginx are web-servers; Redis and MySQL are databases; and LAMP and LEMP are stacks. And I’m pretty sure I’m going to forget all this in a week.

Until I set up WordPress on Linode*, I wasn’t even know how they all fit together. This is because Linode of all the places has the best documentation on how to set up a WordPress site for dummies. Many other VPS solutions have good documentation but they don’t work for someone who wants to learn along the way. This is odd because Linode is marketed as a cloud-hosting solution for developers and its UI is much more daunting (once you login) than, say, Digital Ocean’s or Vultr’s. This is also the reason I’m not sure why Easy Engine has a really simple WordPress-on-nginx deployment option for Linode.

wget -qO ee rt.cx/ee && sudo bash ee
sudo ee site create domain.com --wp

So if you’re looking to set up your own self-hosted WordPress blog and you also want to learn how it’s done, I highly recommend using Linode’s documentation. The cool thing here is that if, for some reason, you’ve picked Digital Ocean to host your WP site, you can still use the Linode documentation: they work with both hosts. I personally would recommend Linode simply because it’s been around for longer (and also offers eight-core CPUs against Ocean’s single-core). The relevant guide is here (if you find this tough: the ‘Getting started’ guide is here). Some steps may not work perfectly but you can trust someone’s answered all the questions you’ll have somewhere on Stack Exchange.

Once you’re up, consider strengthening your security with some basic measures (a firewall plus a log-parsing app to defend against SSH attacks):

sudo apt-get install ufw
sudo ufw allow ssh
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow 80/tcp
sudo ufw allow 1725/udp
sudo ufw enable
sudo ufw logging on
sudo apt-get install fail2ban
sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
# set bantime, findtime, maxretry
# set logpath = /var/log/auth.log
# save
cd /etc/fail2ban/filter.d
sudo cat > wordpress.conf
sudo nano /etc/fail2ban/filter.d/wordpress.conf
# set failregex =  - - [(d{2})/w{3}/d{4}:1:1:1 -d{4}] "POST /wp-login.php HTTP/1.1" 200
# set ignoreregex =
# save
sudo nano /etc/fail2ban/jail.local
# set wordpress jail
# set enabled = true
# set filter = wordpres
# set logpath = /var/www/example.com/logs/access.log
# save
sudo fail2ban-client start

Happy blogging!

*The blog I set up is private.

Featured image credit: heladodementa/pixabay.