DigitalOcean Marketplace WordPress Review

DigitalOcean Marketplace screen capture

For a few years now the DigitalOcean Marketplace WordPress image has been available for installation on their droplets. If you want to use WordPress but don’t want to go through the trouble of configuring it, this is a great place to get started.

Ease of Installation

The DigitalOcean Marketplace WordPress image installation isn’t one click, but it is easy. It takes a few steps, including:

  1. Sign up for DigitalOcean or log in.
  2. Click “Create” then “Droplet”.
  3. Select the image
  4. Pick your droplet size
  5. Select your region for deployment
  6. Add your SSH Keys (optional)
  7. Name your VM
  8. Create the droplet

Overall, the UX for creating the droplet with the WordPress image installed on it is super easy to follow. DigitalOcean has done a great job removing friction from the process.

What’s Included?

Compared the to Vultr One-Click WordPress installation the DigitalOcean image has less included out of the box, but this isn’t necessarily a bad thing. The DigitalOcean marketplace WordPress image is configured with the following software:

  • Ubuntu 18.04 LTS
  • Apache 2.4
  • MySQL 8
  • PHP 7.4
  • Fail2ban 0.10
  • Postfix 3.3
  • Certbot 0.26

Most of this is fairly self-explanatory with the exception of Fail2ban and Certbot. Fail2ban scans Apache logs for malicious patterns and bans those IP addresses. Certbot provides free SSL certificates for your site.

In addition to installing the packages above, the DigitalOcean Marketplace WordPress makes some common sense security changes to help keep you secure.

  • Enables UFW firewall to allow SSH, HTTP, and HTTPS.
  • Sets the MySQL root password and runs mysql_secure_installation.
  • Creates an initial WordPress config file and sets up the salt keys.
  • Disables XML-RPC to prevent DDOS and brute force attacks.
  • Modifies PHP settings to increase max file size and execution time.
  • Enables Apache rewrite module for WordPress permalinks

What’s WordPress Running On?

For our tests, we used to smallest / cheapest DigitalOcean droplet that we could get.

  • $5 / month
  • 1GB RAM
  • 1 vCPU
  • 25GB SSD Disk
  • 1000GB network transfer

For the vast majority of WordPress sites, this will be plenty of power for you.

DigitalOcean Marketplace WordPress Performance

So you’ve installed this WordPress image from the DigitalOcean Marketplace and you want to see what kind of punishment it can take. Cool. Kernl’s got your back.

DigitalOcean Marketplace WordPress requests / failures per second (no caching)
Requests / Failures per second

The requests per second performance of the baseline image isn’t terrible, but it isn’t great either. Right around 14 requests/s the wheels fall off and error rates spike. Eventually the application failed to response to any requests.

DigitalOcean Marketplace WordPress average / median response time (no caching)
Average / Median Response time

You can see the response time average and median stay right around 150ms until the server becomes overwhelmed. The numbers here are misleading though because this chart only takes in to account successful requests.

DigitalOcean Marketplace WordPress response time distribution (no caching)
Response time distribution

The final chart is the response time distribution. Of all requests, 50% finished in under 500ms. 100% finished in 5000ms. The 5000ms mark is interesting because that’s the timeout that was configured by DigitalOcean on the WordPress image. Just because requests finished, doesn’t mean they were successful.

DigitalOcean Marketplace WordPress Performance with Caching

Most people run some sort of caching with their WordPress site. For this test we used W3 Total Cache with all caching features enabled.

requests / failures per second (with caching)
Requests / Failures Per Second

You can see that the throughput of the site increased quite a lot once caching was enabled. Failures didn’t start to see and uptick until around 60 requests/s and then stayed relatively consistent at around 10 failures/s with requests leveling out at 130 req/s. To be clear, 130 req/s is a lot of traffic.

average / median response time (with caching)
Average / Median Response Times

The average response time leveled off at around 110ms, with the median coming in at around 80ms. The difference between the two is interesting because it means we had some pretty big outliers.

response time distribution (with caching)
Response time distribution

The response time distribution gives an interesting take on the average/median response time graph. We can see that 99% of our requests finished in under 250ms, but that last 1% took up to 9000ms. That explains the difference between the median and the average.


In general the performance of the $5 droplet with the DigitalOcean Marketplace WordPress image on it was acceptable. Once caching was enabled it became quite good. The best part about this image is that it takes care of basic security things for you and doesn’t try to guess what you want.

In short, give this image a try. It might save you some time.

Categorized as Kernl