Make your Websites load "instantly"
and manage your own Server

8th February 2024

Introduction

Sometimes people say their Lay Theme website runs slowly.
They tried a caching plugin, a webp image plugin and a CDN plugin and more.

But their website still runs too slow. Why is that?

Well, most websites run on shared servers. Meaning your website is crammed next to other websites on a computer that is connected to the internet, like here:

This means the computing power of your server is shared with many other websites which makes your website slower.

Sharing is not too bad. But what if – on top of that – your shared server's CPU and Memory is just too weak?

A Lay Theme customer asked why her website was slow. We migrated her website to a fast server and it went from 8 seconds to 0.18 seconds loading time.

In this tutorial I'll teach you how to do the same. You'll have your own server!

Loading Times:
Shared Server vs.💥🥊 Own Server

Look at this Lay Theme website: https://lauramas.com/. It pretty much loads instantly right? Especially if you are in Europe, because the server is located there.

The "time to first byte" or "response time" is the important measurement here. It is how long it takes for you to receive the first response after you clicked on a link or hit enter.

See a comparison below. On the shared slower server, the response time is between 1 and 8 seconds. On the new server it is 0.18 seconds.

For the fast and new server we use a 2GB Memory and 1 CPU Server in Frankfurt, Germany.

The difference between 8s and 0.18s is huge. But even the difference between 1s and 0.18s is very noticable.

But if your website takes multiple seconds to load, many users will not even wait that long and go somewhere else instead.

Who this Tutorial is for / Pricing

To summarize, this tutorial is for you if:

  • If you run multiple websites or create many websites for clients, this will make it more cost-effective
  • You can afford at least 24$ per month for hosting in general
  • Your website is really important and you just want to run it very fast
  • You have a domain already or don't mind buying a domain for example on Dreamhost Domains ($8.99/yr for a .com domain)
  • You don't mind getting a little technical

The service we will use is Spinupwp.com.

Spinupwp.com makes creating and managing your own server for WordPress websites easier.

However, this is still somewhat of a technical process and if you're not comfortable with that, this might seem difficult to you in the beginning.

SpinupWP costs 12$ per month. But if you use our link to sign up, you'll get 50$ in credit one month after signup.

Also, we'll use a DigitalOcean.com server. A good small one costs 12$ per month. But if you sign up to DigitalOcean through SpinupWP, you'll get 200$ of free credit for 60 days at the moment.

With this setup, you can host 10-20 websites on a server.

If you want to host more than 10-20 websites on your server you will need a bigger, more expensive server. More info here.

Also, using a Shop/WooCommerce is an exception where SpinupWP recommends a more powerful server for optimal performance. More info here.

However, if you create Lay Theme websites for clients, you can let your clients set up a monthly payment to you for server costs and just re-sell the hosting that way.

Also, you'll need to configure a DNS record of your existing website domain name or purchase a new website domain and configure that. DigitalOcean and SpinupWP don't sell domain names.

You could purchase domains here on Dreamhost Domains for example ($8.99 per year for a .com domain).

If all of this is too much of a hassle, you might be better off just upgrading your existing hosting to a better tier or move to a high performance webhost like www.kinsta.com.

Step 1: Server Setup

Sign up on Spinupwp.com.

If you run into any issues, please use Spinupwp's support, not Lay Theme's support. Also here's a link to their documentation.

Click "Spin Up a New Server".

And choose "Digital Ocean".

After you signed up to DigitalOcean, click "Authorize" in SpinupWP.
You'll be able to create a server now.

For the "Region", choose a server location near you or near your clients. Use a server with at least 2GB of memory.

Fill out your settings and once you get to the screen below, make sure to copy the root database password and keep it somewhere safe.

Your database root username will be root and your password will be the one here. We'll need it to possibly migrate websites from other servers to this one.

Step 2: Site Setup

Once the server is provisioned, click "Add Site".

In the first step, enter your domain name.

Now we will update our DNS "A" record of our domain so it points to our site.
Click "Next" here:

In the next step, we're asked to update our DNS "A" record with the supplied IP address.

Step 3: DNS/Domain Setup and Backup

DNS servers are servers all around the world that know which server/IP address a domain points to.

Before we change our domain's DNS record to point to our new server, we need to backup our old Website.

Because once you change the DNS record, your old website is not reachable anymore (unless you change it back). So its best to create this backup now. Especially if you want to move this website to your new server.

Create a Backup

(optional step if you want to move your existing Lay Theme website to the new server)

So if you have a Lay Theme website on your domain already, please create a backup:

Use the plugin Duplicator or Backup Migration. The "Backup Migration" Plugin is easier to use, but the free version only works for websites up to 2GB in size. If you use it make sure to actually download the backup zip file that it creates.

If you use the Duplicator plugin and backup your site, you should end up having downloaded a file "installer.php" and a zip file.

Change DNS record

After you're done creating your backup, lets change our DNS record.

But before doing so: If you do this for a client and they use an email address like contact@mydomain.com, first make sure they give you an alternative email address like a @gmail address.

Because after changing the DNS entry their email address might not work until you add another A record for the email server and another MX record that points to that A record.

Wherever you registered your domain, login there and go to the domain's DNS settings.

We for example use Dreamhost. So we can find our domain's DNS records settings page here:

We add a DNS record or edit the existing main "@" A record:

Choose "A" Record:

And we enter the IP address that was provided by SpinupWP:

After adding the record it will take a few minutes for all DNS servers to use the new IP address.

Here's an example of how to set it up for GoDaddy. Just edit the "@" A-record and enter the IP address in "Data":

On dnschecker.org you can see the status of the so called "DNS Propagation". Just enter your domain, keep the "A" record selected and hit "Search". Now you'll get a world-map and see what DNS servers already point to your new IP address.

Wait a minute or two and click "Search" again. Now, more DNS servers should respond with your new IP address instead of the old one.

Once most DNS servers have your new server's IP address, go back to SpinupWP and click "I've updated the DNS".

I sometimes got some random errors about https and cloudflare here. In that case I just had to wait a little longer and try again later.

Finish Setup

Now continue with the site setup and note down the WordPress admin username and password and the database name, username and password:

You will need the database name later when you migrate your existing website to your new server (optional).

For the next step, leave full page cache on. Read more about SpinupWP's caching here.

Great, you have successfully setup your super-fast server and site! When managing your site in SpinupWP, press the arrow (top right corner in screenshot below) and press "Purge Cache" and "Purge Object Cache" if something doesn't work right after you updated Lay Theme or Lay Theme Plugins:

Or install the plugin https://wordpress.org/plugins/spinupwp/ so you can purge the cache right from your wp-admin dashboard:

You probably won't need any additional caching plugins as SpinupWP already does caching.

In the Dashboard you can click on "View Site" or "View Admin":

Now you can install Lay Theme and go and create your Lay Theme website.

Or migrate an existing Lay Theme website to your new server as described in Step 4.

Redirect www Subdomain

We need one more configuration for our domain. We'll redirect the www. subdomain to https://.

This way your website will work correctly when you enter www.yourwebsite.com instead of yourwebsite.com into your browser.

In SpinupWP, go to your domain setting, add the www subdomain and use a 301 redirect like here:

Step 4: (Optional)
Migrate existing Website to your new Server

This step is optional in case you want to move an existing Lay Theme website to your new server.

Create a backup for migration or use your existing backup that you created in the "Backup" step previously.

Use the plugin Duplicator or Backup Migration. The "Backup Migration" Plugin is easier to use, but the free version only works for websites up to 2GB in size.

When using the "Duplicator" plugin, you need to upload the files you get to your new website's WordPress folder using FTP.

Attention: The next steps only describe how to migrate using the "Duplicator" plugin. If you use the "Backup Migration" plugin, you only install the "Backup Migration" plugin on your new website and upload the backup zip file through that plugin's user interface.

Migrate using the Duplicator Plugin

Get an FTP client like FileZilla. Now in your SpinupWP Dashboard when managing the site, go to "SFTP & SSH". Get the username and password here.

The FTP hostname will be the server's IP address which you can get in the "Connecting via SFTP" tab on the right:

You'll need to upload the files installer.php and the zip file you got from the Duplicator plugin to your WordPress folder. That is the folder that contains the "wp-config.php" file and other folders like "wp-upload" and "wp-content". Usually when you connect to your FTP you will see a folder called "files". That should be the correct folder.

This is what it looks like when you uploaded your files:

Once you uploaded both files, you can access the migration installer at https://yourwebsite.com/installer.php

In here, enter the full zip file name and click next.

When you get to the database point, as "host" you need to enter: localhost:3306

For the database name, enter the pre-filled name. It is the database's name you set up when you finished your setup.

As database user, use root and use the root database password you got when you set up your server.

Click "Validate", ignore possible warnings and continue with the migration until it is complete.

When you try to login to your admin panel at https://yourwebsite.com/wp-admin/ remember it is now the login data of the admin user of the website you migrated. It's not the login you set up when adding the site using SpinupWP.

Fix your password

If you cannot login, the password might not have been correctly saved during migration due to mismatching character sets or due to how the password is encrypted in the database. We'll do this to fix it:

Go to your FTP. Go to the active theme's folder, which should be Lay Theme's folder: Go to "wp-content" → "themes" → "lay".

In here, edit the file functions.php and add the line
wp_set_password( 'password', 1 ); after <?php.

It should look like this:

Save the file and make sure that file is updated with the new line of code on your FTP server.

Go to https://yourwebsite.com/wp-admin/ and login with your username and your new password "password". You should not get any "wrong password" message now, but your login screen will just appear again.

Now enter your FTP again and remove the line wp_set_password( 'password', 1 ); from your functions.php file.

Open an Incognito Window in your browser so we circumvent cookies that could keep us from logging in:

Go to https://yourwebsite.com/wp-admin/ and login with your username and your new password "password". You should be able to login.

Go to "Users" and change your password to a safe one.

Don't forget to install the plugin https://wordpress.org/plugins/spinupwp/ so you can clear the cache from your wp-admin panel.

Also, disable other caching plugins you may have installed, except WP Rocket, apparently it is compatible with SpinupWPs existing caching.

For more knowledge, go to SpinupWP's documentation.

Fix your email

Did you use an email address with your domain name like contact@mydomain.com?

In that case, your email may not work anymore. Usually, the main A record also determines which server is used for receiving and sending email.

However, we changed the A record so our domain points to the new SpinupWP server. To make our domain use a different server for email, we need to setup a new A record and change the existing MX record or add a new MX record.

In general, MX records are for determining which email host to use.

First, find out where you set up your email address. Did you set it up with your previous hosting provider? Did you set it up where you bought your domain in case you bought your domain with a different provider?

Then talk to the support where you set up your email address. They will tell you the correct DNS settings for you to get emails again.

Usually you'll have to setup a new "A" record with the name of "mail" and the IP address of your mailserver as it's value.

Then you'll have to create an MX record that points to mail.yourdomain.com. That mail subdomain is the "A" record we just set up.

You can send a screenshot of all of your DNS records to the support where you host your emails and ask them if the records are correct.

Your DNS records will look something like this: https://serverfault.com/a/1132815

Congratulations! 🚗

That's it! You just created a super-fast server and you can manage like 10-20 WordPress websites on it.

If you run into any issues, please ask the SpinupWP support instead of Lay Theme support.

Take a look at our Instagram for more tips.

More Tutorials