Every extra second your website takes to load is a second in which someone can close the tab and never come back. Slow pages hurt SEO, reduce conversions and damage your brand’s credibility. And yet, a huge number of WordPress sites still run on very cheap, heavily oversold shared hosting where hundreds of websites fight over the same CPU and RAM.

The pattern is familiar: the site works “okay” at the beginning, then over time—more traffic, more plugins, maybe WooCommerce—it starts to drag. Support suggests upgrading to a “premium” shared plan or a managed WordPress plan, and suddenly the monthly bill jumps.

There is, however, another route: running your own VPS (Virtual Private Server) with a modern stack. A very popular combo today is:

  • A VPS on Hetzner Cloud
  • Managed via RunCloud
  • Domain registered at MrDomain
  • DNS and email forwarding handled by Cloudflare

It’s not quite as “plug and play” as basic shared hosting, but in return you get far more performance and control, often for less money than high-end shared or managed WordPress hosting.

This article walks through what that setup looks like and how a migration can work in practice, from backup to DNS.


Why shared hosting becomes a bottleneck

Shared hosting is like living in a building where everyone shares the same water and power line. As long as most neighbours use very little, everything works. Once a few start running industrial machinery, everything else flickers.

On the server side, that means:

  • CPU, RAM and disk are shared between many customers.
  • Any resource spike from another site can slow down yours.
  • “Unlimited” plans hide strict limits on processes, memory and I/O.

For a small, simple site, it might be enough at first. But add e-commerce, heavy plugins, page builders and real traffic, and things change: slow admin dashboard, 503 errors, random timeouts, and a user experience that goes from “acceptable” to “painful”.


The alternative: your own VPS with a managed cloud panel

A VPS gives you an isolated slice of a server: dedicated CPU cores, RAM and storage. It’s not a full physical machine, but it’s miles ahead of a crowded shared environment.

In the setup covered here, each piece has a clear role:

  • Hetzner Cloud provides the VPS infrastructure.
  • RunCloud connects to Hetzner, installs and configures the stack (Ubuntu, OpenLiteSpeed, PHP, etc.) and gives you a user-friendly control panel.
  • MrDomain manages your domain registration with Spanish-speaking support.
  • Cloudflare handles DNS, adds security and caching, and offers free email routing.

The idea is to let each service do what it’s best at. Combined, you end up with a “DIY managed” environment that is faster and more flexible than most traditional hosting offers.


Step 1: Full WordPress backup with Duplicator

Before moving anything, a complete backup is non-negotiable.

Instead of relying on your old host’s backup tools—which are often tied to their environment—it’s much safer to use a plugin that can recreate the site anywhere. Duplicator is one of the most widely used options for this.

The usual process with Duplicator is:

  1. Install Duplicator on your current WordPress site (on the old host).
  2. Go to the Duplicator menu and create a new package, including files and database.
  3. Let the build process finish and verify the checks pass.
  4. Download two files to your computer:
    • The package .zip file.
    • The installer.php script.

Those two files are all you need to recreate your site on a completely different server later.


Step 2: Prepare Hetzner and RunCloud

With a fresh backup in hand, it’s time to set up the infrastructure.

Create your Hetzner account and API token

In the Hetzner Cloud console:

  • Create an account and add a payment method.
  • Create a new project for your future server.
  • In the project’s security settings, generate an API token with read/write permissions.

This token will allow RunCloud to create and manage servers inside your Hetzner project. Copy it and store it safely—Hetzner will only show it once.

Create your RunCloud account and connect Hetzner

In RunCloud:

  • Sign up and choose the Basic plan (plenty for most single-project setups).
  • Go to Settings → Integrations, choose Hetzner Cloud and paste the API token.
  • Test the integration to confirm RunCloud can talk to your Hetzner account.

From this point on, you can deploy a new VPS from RunCloud in a few clicks.


Step 3: Deploy the VPS with OpenLiteSpeed

RunCloud’s “Connect a New Server” wizard will handle provisioning.

Typical choices:

  1. Server provider: Hetzner Cloud.
  2. Installation type: automatic, with OpenLiteSpeed as the web server (a great fit for WordPress).
  3. OS image: Ubuntu 24.04 LTS or the latest LTS version available.
  4. Datacenter region: pick the location closest to your main audience (for Spain, a German datacenter usually gives good latency).
  5. VPS plan:
    • For a simple blog or brochure site with low traffic (under 20.000 page views/month): a CPX11 type instance is usually enough.
    • For WooCommerce, forums, heavier plugins or more traffic: start with a CPX21 or higher.
  6. Name the server and confirm.

Within a few minutes, RunCloud will show a dashboard with CPU, RAM and network graphs: your VPS is live and ready.


Step 4: Restore WordPress on the new server with Duplicator

Instead of installing a fresh WordPress and overwriting it, Duplicator lets you deploy the backup directly via its installer script.

A common workflow is:

  1. In RunCloud, create a new Web Application (PHP), assigning it either a temporary subdomain or a test domain.
  2. Use SFTP or the file manager to upload two files into the application’s root folder:
    • installer.php
    • The .zip package from Duplicator.
  3. Visit the installer in your browser, e.g. http://your-temp-domain.com/installer.php.
  4. Follow the steps:
    • Environment checks.
    • Database connection details (RunCloud can create a fresh database and user from its panel if needed).
    • File and database extraction.
  5. After completion, Duplicator will clean up the installer (or prompt you to do so) and your full site will be running on the new VPS.

At this stage, your site is live on Hetzner but still on a temporary URL. Take a moment to click around, test the admin login and make sure everything looks and behaves as expected.


Step 5: Domain management with MrDomain and DNS with Cloudflare

Now the core site is running, you need to point your real domain to the new server.

Domain at MrDomain

If your domain is with another registrar, you can either:

  • Keep it there and only update the nameservers.
  • Or transfer it to MrDomain, which centralises renewal and ownership management and offers support in Spanish.

Regardless of where the domain is registered, the recommended pattern is:

  • Domain registration at MrDomain.
  • DNS and protection at Cloudflare.
  • Web hosting on Hetzner + RunCloud.

This decoupling makes it easier to change one piece later without touching the others.

Setting Cloudflare as DNS provider

Once you’ve added your domain to Cloudflare and updated the nameservers at MrDomain:

  1. In Cloudflare’s DNS tab, create an A record for the root domain (yourdomain.com) pointing to the Hetzner VPS IP.
  2. If you use www.yourdomain.com, create a CNAME pointing to the root domain or an A record to the same IP.
  3. Decide whether to enable Cloudflare’s proxy (orange cloud) to benefit from its CDN, caching and DDoS protection.

DNS propagation is usually quick. When it’s complete, visiting your domain should serve the site from your new Hetzner server.


Step 6: HTTPS and email with Cloudflare Email Routing

SSL certificate with Let’s Encrypt

With your domain pointing to the VPS, you’ll want HTTPS:

  • In RunCloud, go to the application’s SSL settings and request a Let’s Encrypt certificate for your domain (and the www version if used).
  • Force HTTP to HTTPS in the same section so all visitors use a secure connection.

Combined with Cloudflare, you now have encryption from the browser to Cloudflare and from Cloudflare to your origin server.

Email with Cloudflare Email Routing

For email addresses like [email protected] or [email protected], a simple and free solution is Cloudflare Email Routing:

  1. Enable Email Routing for your domain in Cloudflare.
  2. Define the addresses you want under your domain.
  3. For each one, specify a destination mailbox (for example, a Gmail or Outlook address you already use).
  4. Cloudflare automatically configures the MX records for you.

Any email sent to [email protected] will then be forwarded to the mailbox you’ve set. For many freelancers, small businesses or content sites, this is enough to have professional-looking addresses without a separate email hosting plan.

For outbound emails from WordPress (password reset, order confirmations, contact form notifications), you should configure an external SMTP service via a lightweight SMTP plugin so those messages don’t rely on the VPS’s basic mail capabilities.


What about costs?

Prices change over time, but a realistic ballpark for this stack might look like:

  • Hetzner CPX11 VPS: roughly 3,50–4,00 € per month.
  • RunCloud Basic: around 7–8 € per month.
  • Domain at MrDomain: about 15–18 € per year (≈1,25–1,50 € per month).
  • Cloudflare (DNS + Email Routing): included in the free plan.

All in, you’re looking at roughly 12–13 € per month for a setup that typically outperforms many “premium” shared hosting plans, with enough capacity to host more than one site if you wish.


Frequently asked questions about moving WordPress to Hetzner with RunCloud, MrDomain and Cloudflare

Is a Hetzner VPS with OpenLiteSpeed really faster than traditional shared hosting?
In most real-world cases, yes—especially once your site has a few heavy plugins, WooCommerce or regular traffic. With dedicated CPU and RAM, your responses are more consistent, and OpenLiteSpeed’s built-in cache is extremely efficient for WordPress. Adding Cloudflare’s CDN on top usually translates into noticeably faster page loads compared with an oversold shared environment.


Is Duplicator a safe option to migrate my entire site to a new host?
Duplicator is one of the most widely used migration plugins in the WordPress ecosystem. When you create a full package (files + database) and deploy it via installer.php on the new server, you’re effectively cloning your site. As with any migration, you should follow the steps carefully, remove the installer after use and test the restored site thoroughly before considering the move complete.


Why use MrDomain and Cloudflare instead of letting my old host manage everything?
Splitting responsibilities gives you more control and resilience. MrDomain handles domain registration (ownership, renewals) with local support, while Cloudflare offers a fast DNS panel, security features, caching, and free email forwarding. If you change servers in future, you just update the IP in Cloudflare—no need to touch the registrar or depend on your old hosting panel’s DNS tools.


Can Cloudflare Email Routing replace a full email hosting service for my domain?
For many small sites, yes. Email Routing is perfect if you just need to receive messages sent to [email protected] and read them in an existing mailbox (Gmail, Outlook, etc.). It doesn’t give you full mailboxes with storage and calendars, but it’s a very simple, zero-cost way to have domain-based addresses. If you later need full-featured mail hosting, you can add a dedicated email provider and continue using Cloudflare purely for DNS and web protection.

Scroll to Top