> ## Content Index
> Fetch the complete content index at: https://balaustine.mymagic.page/llms.txt
> Use this file to discover other available public pages before exploring further.

# A dummy’s attempt to set up WordPress
- URL: https://balaustine.mymagic.page/a-dummys-attempt-to-set-up-wordpress/
- Published: 2017-04-10T23:50:34.000Z
- Updated: 2017-04-10T23:50:34.000Z
- Description: 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.
- Author: VM
- Tags: Uncategorized, Digital Ocean, documentation, Easy Engine, Fail2ban, Linode, log parsing, nginx, regex, SSH attacks, tutorials, uncomplicated firewall, VPS, Vultr, WordPress, #Migrated-1787483357778, #wp, #wp-post, #Import 2026-08-23 11:09

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](https://www.linode.com/docs/websites/cms/how-to-install-and-configure-wordpress?ref=balaustine.mymagic.page) (if you find this tough: the ‘Getting started’ guide is [here](https://www.linode.com/docs/getting-started?ref=balaustine.mymagic.page)). 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.*