How to host WordPress on Hetzner Cloud: setup, costs and upkeep

By Wolfgang Wachelhofer · · 9 min read

To host WordPress on Hetzner, create a Hetzner Cloud server with Ubuntu 24.04, install Nginx, PHP and MariaDB, download WordPress, point your domain’s A record at the server and add a Let’s Encrypt certificate. Then set up backups, security updates and an email service, because Hetzner blocks outgoing mail ports 25 and 465.

Key takeaways

  • A Hetzner Cloud server with 4 GB of memory is enough for a typical WordPress site, from €5.99 a month before VAT as of November 2026.
  • Hetzner raised cloud prices in 2026, and its cheapest plans are not always available to order. Check the price table before you plan.
  • Hetzner blocks outgoing ports 25 and 465, so send WordPress email through a service on port 587.
  • The server is only half the job: backups, updates, firewall and HTTPS renewals are yours to run.
On this page
  1. What do you need to host WordPress on Hetzner?
  2. How much does WordPress on Hetzner cost?
  3. Which Hetzner plan and location should you pick?
  4. How to install WordPress on a Hetzner server, step by step
  5. Why WordPress email doesn’t arrive on Hetzner
  6. How to keep a Hetzner WordPress server secure and backed up
  7. Running WordPress on Hetzner with Nuvlo
  8. When Hetzner, or Nuvlo, is the wrong fit

What do you need to host WordPress on Hetzner?

Hetzner is a German provider known for low prices on cloud servers in Germany and Finland, with further locations in the US and Singapore. It sells raw servers: you get Ubuntu and root access, and everything WordPress needs is up to you.

WordPress itself asks for little. Its official requirements recommend PHP 8.3 or newer, MySQL 8.0 or MariaDB 10.11 or newer, and HTTPS. Ubuntu 24.04 ships PHP 8.3 and MariaDB 10.11 in its own repositories, so you don’t need extra package sources.

Before you start, have these ready:

  • A Hetzner account with a project for your servers.
  • An SSH key on your computer (ssh-keygen -t ed25519 creates one).
  • A domain whose DNS records you can change.
  • An account at an email service such as Postmark, Mailgun or SendGrid, for password resets and form mail.
  • About an hour for the first setup, plus a little time every month for upkeep.

How much does WordPress on Hetzner cost?

Hetzner bills cloud servers by the hour and caps the bill at the monthly price, and the listed price includes an IPv4 address. These are the plans that make sense for WordPress, from Hetzner’s cost-optimized and regular performance pages as of November 2026, excluding VAT, for the German and Finnish locations:

PlanCPUMemoryDiskPer month
CX232 vCPU, Intel/AMD4 GB40 GB€5.99
CAX112 vCPU, Arm (Ampere)4 GB40 GB€6.49
CX334 vCPU, Intel/AMD8 GB80 GB€8.99
CPX222 vCPU, AMD4 GB80 GBfrom €19.99

Each of these includes 20 TB of traffic in the EU locations, far more than a normal WordPress site uses. Plans in Ashburn, Hillsboro and Singapore cost more and include less traffic.

ImportantHetzner raised its cloud prices for new orders in 2026, and when we checked in November 2026 its cost-optimized plans (CX and CAX) were marked as currently unavailable. Existing servers keep running. If they can’t be ordered when you sign up, the regular performance (CPX) plans are the fallback, at a noticeably higher price.

On top of the server, budget for:

  • Hetzner backups: 20% of the server price for daily backups, the last 7 kept. About €1.20 a month on a CX23.
  • Off-server backups: a storage bucket elsewhere, usually a few cents per GB. Hetzner’s own backups live with Hetzner, so keep one copy somewhere else.
  • An email service: most have a free or low tier for the handful of emails a small site sends.
  • Your domain: whatever your registrar charges.

A small site on a CX23 with Hetzner backups comes to roughly €7 a month before VAT. That is less than most managed WordPress hosts charge for one site, but you trade money for the time you spend running the server.

Which Hetzner plan and location should you pick?

Pick the location first, because plans and prices depend on it. Choose the one closest to most of your visitors: Nuremberg, Falkenstein or Helsinki for Europe, Ashburn or Hillsboro for North America, Singapore for Asia.

For memory, 4 GB is a comfortable start for one or a few ordinary WordPress sites with a page cache. Move to 8 GB for WooCommerce shops with real traffic, several busy sites, or anything that runs heavy search or page builders.

Arm (CAX) plans run WordPress fine: PHP, Nginx and MariaDB all have Arm builds. Stay on x86 if you rely on a plugin that ships its own compiled binary, or on other software that only exists for x86.

Hetzner lets you resize to a bigger plan of the same CPU type later. Moving to a smaller plan only works when the smaller disk holds what is on the server, so start small and grow.

How to install WordPress on a Hetzner server, step by step

This is the manual route on Ubuntu 24.04 with Nginx, PHP-FPM and MariaDB. Replace example.com with your domain.

  1. In the Hetzner Console, open your project and click Add Server. Choose a location, Ubuntu 24.04, a plan, and your SSH key. Note the server’s IPv4 address.
  2. Point your domain’s A record (and www, if you use it) at that address, so DNS has time to spread while you work.
  3. Sign in with ssh root@your-server-ip, update the system and turn on the firewall.
  4. Install Nginx, MariaDB and PHP with the extensions WordPress uses.
  5. Create a database and a database user for WordPress.
  6. Download WordPress into /var/www and give the web server ownership.
  7. Add an Nginx site for your domain, then request a certificate with Certbot.
  8. Open https://example.com and finish the WordPress installer.
Steps 3 and 4: update, firewall and packages
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow "Nginx Full"   # run after nginx is installed
ufw enable

apt install -y nginx mariadb-server php8.3-fpm php8.3-mysql php8.3-curl \
  php8.3-gd php8.3-intl php8.3-mbstring php8.3-xml php8.3-zip php-imagick

Run mariadb as root and create the database. Use a long random password and keep it for the installer.

Step 5: inside the mariadb shell
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp'@'localhost' IDENTIFIED BY 'a-long-random-password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'localhost';
FLUSH PRIVILEGES;
Step 6: download WordPress
cd /var/www
curl -O https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz && rm latest.tar.gz
chown -R www-data:www-data /var/www/wordpress

Save this as /etc/nginx/sites-available/example.com:

Step 7: Nginx site
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/wordpress;
    index index.php;
    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}
Step 7: enable the site and add HTTPS
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com

Certbot edits the Nginx file to serve HTTPS and installs a timer that renews the certificate. If it fails, DNS usually doesn’t point at the server yet; check with dig +short example.com.

Why WordPress email doesn’t arrive on Hetzner

Hetzner blocks outgoing traffic on ports 25 and 465 on all cloud servers by default, as its Cloud server FAQ explains. You can ask for them to be opened after your account is a month old and the first invoice is paid, but there is a simpler fix.

Port 587 is not blocked. Install an SMTP plugin in WordPress and send through an email service on port 587 with its username and password or API key. Mail from a dedicated service also lands in spam far less often than mail from a fresh server IP.

Set up SPF and DKIM records for your domain as the email service tells you, then send yourself a password reset to test it.

How to keep a Hetzner WordPress server secure and backed up

A new server gets login attempts within minutes of going online. These are the basics, and our Ubuntu server security checklist goes further:

  • SSH keys only: set PasswordAuthentication no in /etc/ssh/sshd_config and restart SSH, after checking that your key works.
  • fail2ban: apt install fail2ban bans IPs that keep failing SSH logins.
  • Automatic security updates: Ubuntu’s unattended-upgrades is usually on already; dpkg-reconfigure -plow unattended-upgrades checks it.
  • WordPress updates: core, plugins and themes are where most WordPress breaches start. Update them weekly, or turn on auto-updates for plugins you trust.
  • Hetzner Cloud Firewall: optional, a second firewall in front of the server, set in the console.

For backups, turn on Hetzner’s daily backups in the server’s settings, and also copy the database and wp-content to storage outside Hetzner. A nightly cron job is enough:

A simple nightly backup (then upload it off the server)
mariadb-dump --single-transaction wordpress | gzip > /root/backup/db-$(date +%F).sql.gz
tar czf /root/backup/files-$(date +%F).tar.gz -C /var/www/wordpress wp-content

A backup you have never restored is a guess. Restore one to a second server once, so you know the steps before you need them.

Running WordPress on Hetzner with Nuvlo

Everything above is what Nuvlo does for you, on a server that stays in your own Hetzner account. You connect a Hetzner API token, choose WordPress & apps as the server type, and Nuvlo creates the server and installs Nginx, a firewall with only SSH, HTTP and HTTPS open, fail2ban, key-only SSH and automatic security updates.

Then you create a WordPress site in four screens. Each site runs in its own containers with PHP 8.0 to 8.5, a MariaDB database and a Redis cache, so one site’s broken plugin doesn’t take the others down. HTTPS is added as soon as DNS points at the server.

  • Backups on a schedule from hourly to monthly, uploaded from the server straight to your own S3-compatible bucket, plus Hetzner’s provider backups switched on from the dashboard.
  • Plugin, theme and core updates, a firewall, bot blocking and login limits per site, and malware scans. See Security.
  • Outgoing email through Postmark, SendGrid or Mailgun on port 587, which Hetzner leaves open, or through any SMTP account. See site email.
  • An existing site moves over with a plugin, over SSH, or from a cPanel, Duplicator or UpdraftPlus backup. See Move a WordPress site.

Hetzner bills the server to you at its own price; Nuvlo adds nothing to it. Nuvlo’s Free plan covers one server with one site, and Starter is €12 a month including VAT for up to 10 servers. See pricing and the Hetzner page for regions and backup details.

When Hetzner, or Nuvlo, is the wrong fit

A self-run server isn’t for everyone. Stay with a managed host if you want someone else to answer at 3 a.m. when the site is down, or if your contract needs a host that guarantees support response times. Our comparison of shared, VPS and managed hosting walks through that choice.

Hetzner is a weaker fit when most visitors are in South America, Africa or the Middle East, where it has no locations, or when you need its cheapest plans and they are sold out. DigitalOcean, Vultr or Google Cloud cover more regions.

Nuvlo is the wrong fit if you enjoy maintaining your own Nginx and PHP setup and want nothing between you and the server, or if you need white-label panels to resell hosting under your brand, which Nuvlo doesn’t offer. If you are weighing panels, see our list of Cloudways alternatives.

Is Hetzner good for WordPress?

Yes, for most sites. Hetzner’s cloud servers have fast NVMe disks and generous traffic, and a 4 GB server runs a typical WordPress site comfortably. The trade-off is that Hetzner only provides the server, so security, updates, backups and email are yours to set up, by hand or with a panel.

Does Hetzner offer managed WordPress hosting?

Hetzner sells cloud servers and its own web hosting packages, but its cloud servers come unmanaged: you get Ubuntu and root access, nothing more. To get managed-style comfort on a Hetzner Cloud server, you either set it up yourself or use a control panel that installs and maintains the stack in your account.

Can I host several WordPress sites on one Hetzner server?

Yes. Each site needs its own database, Nginx server block and ideally its own PHP-FPM pool or container, so a problem in one site stays there. Memory is the real limit: watch it as you add sites and move to a bigger plan before the server starts swapping.

Why can’t my Hetzner server send email?

Hetzner blocks outgoing ports 25 and 465 on cloud servers to stop spam. Port 587 stays open, so connect WordPress to an email service such as Postmark, Mailgun or SendGrid through an SMTP plugin on port 587. You can request the blocked ports after a month and a paid first invoice.

Should I choose an Arm or x86 Hetzner server for WordPress?

Either works for standard WordPress. Arm plans run PHP, Nginx and MariaDB natively and cost a little more than the matching CX plan as of November 2026. Pick x86 if a plugin ships its own compiled binary or you need software that only exists for x86.

Connect a Hetzner token and Nuvlo builds the server and your first WordPress site, billed by Hetzner at its own price.