WordOps Installation with Ubuntu 20.04.2 LTS

WordOps is an essential toolset that eases WordPress site and server administration.

Key Features

Easy to install
One step automated installer with migration from EasyEngine v3 support
Fast deployment
Fast and automated WordPress, Nginx, PHP, MySQL & Redis installation
Custom Nginx build
Nginx 1.18.0 – TLS v1.3 Cloudflare HTTP/2 HPACK & Brotli support
Hardened WordPress security with strict Nginx location directives
Optimized Nginx configurations with multiple cache backends support
Domain, Subdomain & Wildcard Let’s Encrypt SSL certificates handled by acme.sh
Live Nginx vhost traffic with ngx_vts and server monitoring with Netdata
Strong ciphers_suite, modern TLS protocols and HSTS support (Grade A+ on ssllabs)



WordOps is very lightweight, it doesn’t require a lot of resources and can be installed on low end devices like Raspberry PI. Minimum requirements are:

  • ~100MB of storage
  • 512MB RAM



However, if you are going to use WordOps in production, some services like MySQL or Redis may need more resources, and running WordOps stacks without enough resources could impact your sites performance. Resources usage also highly depend on your site traffic.
Recommended hardware configuration for production:

  • Multi-core CPU
  • 20GB SSD storage
  • 2GB RAM



The following virtualization platforms are supported:

  • VMware
  • XEN
  • OpenVZ
  • KVM
  • Hyper-V
  • LXC / LXD

WordOps is also compatible with Ubuntu running on Windows Linux Subsystem (WSL).

Operating Systems

The following operating systems are supported:

Ubuntu20.04 LTS (focal)x86_64
18.04 LTS (bionic)x86_64
16.04 LTS (xenial)x86_64
Debian9 (stretch)x86_64
10 (buster)x86_64
Raspbian9 (stretch)armv7l
10 (buster)armv7l


SSH22SSH default or custom port
HTTP80Nginx listen on port 80
HTTPS443Nginx listen on port 443
WordOps Backend22222WordOps backend is available on port 22222 and is password protected
GnuPG1137Required to import APT repositories GPG keys.


Server configuration recommendations

Server hostname isn’t only a name, it’s the server public identity on the network. If your server is directly connected to internet(not behind a NAT), it should have a valid hostname.

A valid hostname should looks like : myservername.yourdomain.tld

- myservername is the server name
- yourdomain.tld is one of your domains

To edit hostname properly, use the command :
hostnamectl set-hostname 

To apply the new hostname, a reboot is required.
The last step and the most important, you should create the proper DNS records to make the subdomain myservername.yourdomain.tld pointing to your server IP.



Requires Ubuntu Server 16.04/18.04/20.04 or Debian 9/10

Install WordOps – One-Step Automated Install

wget -qO wo wops.cc && sudo bash wo

Install WordOps – Alternative: Clone Github repository and run

# update packages list
apt-get update

# On Ubuntu
apt-get -option=Dpkg::options::=--force-confmiss --option=Dpkg::options::=--force-confold --assume-yes install \
build-essential curl gzip python3-pip python3-wheel python3-apt python3-setuptools python3-dev sqlite3 git tar software-properties-common pigz \
gnupg2 cron ccze rsync apt-transport-https tree haveged ufw unattended-upgrades tzdata ntp

# On Debian
apt-get -option=Dpkg::options::=--force-confmiss --option=Dpkg::options::=--force-confold --assume-yes install \
build-essential curl gzip dirmngr sudo python3-pip python3-wheel python3-apt python3-setuptools python3-dev ca-certificates sqlite3 git tar \
software-properties-common pigz apt-transport-https gnupg2 cron ccze rsync tree haveged ufw unattended-upgrades tzdata ntp

# create WordOps directories
mkdir -p /var/log/wo /var/lib/wo/tmp /var/lib/wo-backup

# Update PIP
python3 -m pip install -U pip
python3 -m pip install -U setuptools wheel

# Install WordOps- install wordops from PyPi
python3 -m pip install -U wordops

# copy configuration
cp -rf /usr/local/lib/python3.*/dist-packages/usr/* /usr/
cp -rn /usr/local/lib/python3.*/dist-packages/etc/* /etc/
cp -f /usr/local/lib/python3.*/dist-packages/etc/bash_completion.d/wo_auto.rc /etc/bash_completion.d/wo_auto.rc

# Install acme.sh
# clone the repository
git clone https://github.com/Neilpang/acme.sh.git /opt/acme.sh -q

# create conf directory
mkdir -p /etc/letsencrypt/{config,live,renewal}

# install acme.sh
cd /opt/acme.sh
./acme.sh --install \
            --home /etc/letsencrypt \
            --config-home /etc/letsencrypt/config \
            --cert-home /etc/letsencrypt/renewal

# enable auto-upgrade
/etc/letsencrypt/acme.sh --config-home '/etc/letsencrypt/config' --upgrade --auto-upgrade

# create .well-known directory
mkdir -p /var/www/html/.well-known/acme-challenge

# set www-data as owner
chown -R www-data:www-data /var/www/html /var/www/html/.well-known

# set permissions
chmod 750 /var/www/html /var/www/html/.well-known

# Install WP-CLI
wget -qO /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x /usr/local/bin/wp

Install WordOps – Manual Installation

git clone https://github.com/WordOps/WordOps.git
cd WordOps/
sudo bash install

Install required packages & setup WordPress

sudo wo site create example.com --wp


Nishant Vaity

Knowledgeable and skilled Technology Lead with an ability of software development and supervision. Possess a Bachelor of Science (BS) in Information Technology along with 10+ years of experience with hands-on coding and team management. By profession, I am a Software Engineer, Technology Mentor & Entrepreneur. Passionate about the technologies I use and always eager to share & learn more from that passion.

1 Comment

  1. Chaitanya Patil says:

    Very useful. Thanks for detailed steps.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: