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
Secured
Hardened WordPress security with strict Nginx location directives
Powerful
Optimized Nginx configurations with multiple cache backends support
SSL/TLS
Domain, Subdomain & Wildcard Let’s Encrypt SSL certificates handled by acme.sh
Monitoring
Live Nginx vhost traffic with ngx_vts and server monitoring with Netdata
Modern
Strong ciphers_suite, modern TLS protocols and HSTS support (Grade A+ on ssllabs)
Prerequesites
Minimum
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
Recommended
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
Virtualization
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:
Distribution | Release | Architecture |
---|---|---|
Ubuntu | 20.04 LTS (focal) | x86_64 |
18.04 LTS (bionic) | x86_64 | |
16.04 LTS (xenial) | x86_64 | |
Debian | 9 (stretch) | x86_64 |
10 (buster) | x86_64 | |
Raspbian | 9 (stretch) | armv7l |
10 (buster) | armv7l |
Ports
Service | Port | Inbound | Outbound | Notes |
---|---|---|---|---|
SSH | 22 | ✓ | ✓ | SSH default or custom port |
HTTP | 80 | ✓ | ✓ | Nginx listen on port 80 |
HTTPS | 443 | ✓ | ✓ | Nginx listen on port 443 |
WordOps Backend | 22222 | ✓ | ✓ | WordOps backend is available on port 22222 and is password protected |
GnuPG | 1137 | ✓ | Required 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.
Installation
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
Very useful. Thanks for detailed steps.