UpCloud
Effortless global cloud infrastructure for SMBs
Introducing
If you’re interested in what we have to offer, contact sales or fill out a contact form.
Our support live chat is available for our customers 24/7. You can also email our support team.
Send us an email to give feedback or to say hello.
Start a new journey
Why Partner with UpCloud?
I’ve been passionate about the hosting industry since 2001. Before founding UpCloud, my first company grew to become one of Finland’s largest shared web hosting providers, serving over 30,000 customers. Along the way, I faced the same challenges many of you know well—24/7 on-call responsibilities, solving technical issues, and managing customer inquiries.
At UpCloud, we’ve designed a platform that solves these challenges, offering reliability, scalability, and unparalleled support. We understand the pressures you face because we’ve been there too. Partner with us, and let’s help you focus on growing your business while we handle the rest.
Sincerely, Joel Pihlajamaa CTO, Founder
Login
Sign up
Updated on 23.4.2025
Build your own lightning-fast WordPress development server with UpCloud & EasyEngine.io in just a few minutes. EasyEngine is a powerful CLI tool which is used to deploy WordPress sites. EasyEngine utilizes the power of Docker without you needing to know anything about Docker. With EasyEngine you can easily deploy new and fresh WordPress sites with just one command.
Go ahead and deploy a new UpCloud server with Ubuntu 18.04 by logging in to your UpCloud Control Panel and clicking Deploy server. Please note that EasyEngine v4 does not support CentOS. If you are new to UpCloud, you can get started with the free trial by signing up.
Once you’ve deployed a new cloud server, log in using your favourite SSH client. One option is to use Royal TS which can manage various remote control credentials all in one place.
When deploying new cloud servers, it’s good to follow a common setup routine to get the server prepared. We recommend you follow the steps below to update and secure your cloud server before installing EasyEngine.
While logged in as root, run the following commands.
Update and upgrade your Ubuntu server. It’s important to make sure you keep your server up to date to avoid security vulnerabilities caused by outdated software.
apt update && apt upgrade -y
You should also install a UFW firewall which can be used to only allow traffic to SSH, HTTP and HTTPS (ports 22, 80 and 443) to add an extra layer of protection to your server. Alternatively, you may wish to check out UpCloud’s L3 firewall feature in your cloud server’s settings.
apt install ufw -y
If you installed UFW, add the following rules and then enable the firewall.
ufw allow ssh ufw allow http ufw allow https ufw enable
Lastly, set up a new account with sudo privileges. It’s a good practice to use a non-root account for connecting to your cloud server and restrict SSH to prevent login with the root account. This is done to greatly reduce the chance brute-forcing your password would be able to gain access to your cloud server.
adduser new-user usermod -aG sudo new-user
Login to your new user in a new SSH session. Now let’s setup SSH keys to further harden your server’s security. Please check out this tutorial on how to use SSH keys for authentication and how to harden your SSH service.
Once you’ve prepared your cloud server, you can go ahead and install EasyEngine.
With the cloud server prepared, you can go ahead and install EasyEngine itself.
EasyEngine has made the installation process ridiculously easy. Simply run the following command while logged in to your sudo privileged user and wait for EasyEngine to install.
wget -qO ee rt.cx/ee4 && sudo bash ee
The script will install all required dependencies as well as the actual EasyEngine tool.
While the installation is going on in the background, you should consider setting up a domain for your development server if you haven’t yet. This way you can use subdomains for each WordPress you would like to spin up and easily have multiple concurrent WordPress sites on a single cloud server.
When the installation process finishes, you’ll see an output similar to the example below.
+-------------------+-----------------------------------------------------------------------------+ | OS | Linux 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 | | Shell | /bin/bash | | PHP binary | /usr/bin/php7.3 | | PHP version | 7.3.18-1+ubuntu18.04.1+deb.sury.org+1 | | php.ini used | /etc/php/7.3/cli/php.ini | | EE root dir | phar://ee.phar | | EE vendor dir | phar://ee.phar/vendor | | EE phar path | /home/new-user | | EE packages dir | | | EE global config | | | EE project config | | | EE version | 4.0.17 | +-------------------+-----------------------------------------------------------------------------+ -----> Run "ee help site" for more information on how to create a site.
Afterwards, you can get started setting up your first WordPress site with EasyEngine!
To be able to reach the WordPress sites running on your EasyEngine server, you will need to have configured a domain name A record to point to your cloud server. The actual process of creating domain name records depends on your domain registrar but you can find out generalised instructions in the following guide to how to manage DNS records.
With a valid domain name, you can use subdomains to create as many websites with EasyEngine as you want.
EasyEngine has an extensive library of various commands you can run straight from your SSH terminal. Let’s go ahead and install our first WordPress instance and take a closer look at what we can do with it.
If you want just a plain WordPress install with nothing fancy, you can do so with the following command. Remember to replace example.com with your own domain or subdomain.
sudo ee site create example.com --type=wp
However, with EasyEngine you can set up a new WordPress instance together with Let’s Encrypt SSL certificates and Redis Cache enabled.
Note that when installing with a Let’s Encrypt, you need to already have your DNS record set to point correctly to your server. A valid domain name is required for Let’s Encrypt to be able to obtain SSL certificates for your website.
Replace example.com with your domain or subdomain name.
sudo ee site create example.com --type=wp --ssl=le --cache
When configuring a website with SSL, the installation script will ask for your email address. The email address is used to notify you of important information about your Let’s Encrypt SSL certificate, for example, the certificate’s expiration date.
Once you’ve entered your email address, the installation will continue. When completed, you will see an output similar to the example below.
+--------------------+---------------------------------------+ | Site | https://example.com | +--------------------+---------------------------------------+ | Site Root | /opt/easyengine/sites/example.com | +--------------------+---------------------------------------+ | Site Title | example.com | +--------------------+---------------------------------------+ | WordPress Username | vigorous-chaum | +--------------------+---------------------------------------+ | WordPress Password | cvlGJlSYXkqG | +--------------------+---------------------------------------+ | DB Host | global-db | +--------------------+---------------------------------------+ | DB Name | example_com | +--------------------+---------------------------------------+ | DB User | example.com-RdqaXV | +--------------------+---------------------------------------+ | DB Password | m09oZe2TvYam | +--------------------+---------------------------------------+ | E-Mail | [email protected] | +--------------------+---------------------------------------+ | SSL | Enabled | +--------------------+---------------------------------------+ | SSL Wildcard | No | +--------------------+---------------------------------------+ | Cache | Enabled | +--------------------+---------------------------------------+
Browse to the site you just installed and you should see a freshly installed WordPress site with HTTPS enabled.
Afterwards, log in to your WordPress admin panel by going to https://example.com/wp-admin/ and use the WordPress user and password as shown in the information provided by your EasyEngine output.
You can repeat the WordPress site deployment as many times as you want to install multiple websites on the same cloud server. EasyEngine will take care of the background task in order to make the websites accessible. You’ll just need to have the corresponding domains or subdomains pointing to your cloud server.
You are then ready to start developing new WordPress sites. If you decided to enable Redis in your installation process, you can see two plugins activated: Nginx Helper and WP Redis. These plugins help you manage the Redis cache straight from your WordPress installation. Nginx Helper clears your cache whenever a post is edited/published, and WP Redis allows WordPress to utilize Redis cache to its full potential.
EasyEngine has a lot of other features you might want to check out. EasyEngine can be used to spin up WordPress instances whenever needed to test something or for developing a new site. Here are some commands you will likely find useful.
Check and monitor specific website log files. This can be used to monitor sites in case of errors or abnormalities while troubleshooting issues. Combined with your web browser’s own console it helps a lot to find troublesome issues.
sudo ee log show example.com
Adding HTTP Authentication to your development site. This feature can be used to password-protect websites under development so that nobody finds them by accident.
sudo ee auth create example.com --user=username --pass=password
sudo ee auth delete example.com --user=username
Here is a list of other commands you will be needing when using EasyEngine.
Delete a website when you don’t need it anymore.
sudo ee site delete example.com
Restart all services related to the website.
sudo ee site restart example.com
Display installation information on a specific website.
sudo ee site info example.com
You may wish to have a look at EasyEngine’s own command documentation for more info. Some useful guides can also be found in their handbook.
Tuomas LindroosHey, thank you for reading my guide on how to deploy WordPress websites using EasyEngine. I’m the business owner of a company called Tuonetti. We specialize in WordPress website development and in website hosting using UpCloud’s amazingly fast servers. We are more than happy to help you with any WordPress related issues.
Join discussion
11.8.2020 at 05.09
Hi Tuomas, thank for this post!
I need to migrate the url of my wordpress how would the procedure be in EEngine
Best Regards.
17.8.2020 at 11.39
Hi Max, thanks for the question. You’ll need to set your domain URL to point to your EasyEngine server IP as explained in the domain name records section in the tutorial. Then deploy a new WordPress site using your domain. Afterwards, you should be able to export your content from the old site and import it at the new one using WordPress tools.
23.9.2020 at 04.09
Hi Tuomas, thanks for this tutorial. Do you know how to install ioncube loader in Easyengine with server ubuntu 18.04?. Thanks
25.9.2020 at 12.36
Hi Even, thanks for the comment. Not sure if there’s official support for ioncube loader on EasyEngine but you might be able to install it following the instructions posted in their community section.
14.1.2021 at 19.09
Hi Tuomas,
When I using cloudflare DNS, I’m getting Error 522. can you please help
15.1.2021 at 11.22
Hi Goku, thanks for the comment. The error code 522 refers to connection timeout which could be caused by a firewall blocking the connection or the webserver process not running.
11.9.2021 at 04.18
hey Tuomas thanks for this, do you know how to enable www. using ee ?
13.9.2021 at 17.52
Hi Teddy, thanks for the question. If you want to use the www. subdomain, you should create your site with that domain name. Alternatively, you can enable it by editing the /opt/easyengine/services/nginx-proxy/conf.d/default.conf file.
Your email address will not be published. Required fields are marked *
Comment *
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
Δ
See all tutorials