Deploy
Self hosted WordPress. We will run the server.
Two containers, a dedicated MariaDB, TLS and a domain, on a VPS we run.
WordPress 7.1.0, the open source publishing platform, deploys as a one-click template with its own MariaDB onto a dedicated server Selfhost.dev provisions, secures and runs, across six locations on three continents. A European 4 GB server is $0.02/hr, about $15 a month, with no plan gates on plugins or themes.
One click. Two containers. The template deploys in about six minutes.
no signup
+$5.00 added at signup · deployment choice preserved · no card
What is WordPress self hosted?
Your site, your files.
And the database under them.
What it is. Self hosted WordPress is WordPress.org on a server you control, rather than as a tenant on WordPress.com. You get the PHP, the file system, the database and every plugin and theme the ecosystem has, with no plan tier deciding what you may install.
Who it is for. People who have outgrown a page builder, developers who need SFTP and database access, and anyone paying a subscription for what the free software already does. The thread is wanting the machine, not a slot on someone else's.
When to use it. When a plan tier starts gating something you need, or when one site has become several and they may as well share a server. Also when you want the option of moving the whole thing elsewhere without asking anyone's permission.
Self hosted WordPress requirements
What it needs, and what you no longer have to supply.
| What WordPress needs | This deployment |
|---|---|
| WordPress version | 7.1.0, pinned |
| Memory | 4 GB for the app and its database together |
| Database | MySQL or MariaDB. MariaDB 11.8 is included |
| PHP | 8.3, in the image |
| Architecture | x86 or ARM |
| Storage | Grows with media. Every upload lives on the server disk |
| None built in. WordPress needs an SMTP plugin to send anything |
| What Selfhost.dev provides | Detail |
|---|---|
| The server | A European 4 GB machine is $0.02/hr, about $15 a month, in one of six locations across three continents |
| The database | MariaDB 11.8, dedicated to this deployment |
| HTTPS | Automatic, on the generated hostname or your own domain |
| Backups | Optional. Daily, whole VM, last 7 kept, +20% of the server price |
| Monitoring | Metrics, logs, and a health check every 60 seconds |
| Root access | Your SSH key, a root shell on your own server |
| Deploy time | About 6 minutes for the template, once the server exists |
| MCP tools | 189 across 31 modules |
Specifications current as of September 2026.
What is in the WordPress deployment
Two containers, and nothing you did not ask for.
| Container | Image | Role |
|---|---|---|
wordpress (routed) | wordpress:7.1.0-php8.3-apache | The site. Apache with PHP 8.3 |
wordpress-db | mariadb:11.8 | The site database |
| Volume | What it holds |
|---|---|
wordpress-files | /var/www/html: core, themes, plugins and every media upload |
mariadb-data | The database |
Both images are pinned. A floating latest tag is how a live WordPress gets dragged onto a new major version on a redeploy and runs an irreversible database migration nobody asked for. The tags here do not move unless you move them.
The reverse-proxy configuration most self hosted WordPress gets wrong
WORDPRESS_CONFIG_EXTRA trusts HTTP_X_FORWARDED_PROTO and HTTP_X_FORWARDED_HOST, set before the first request. Without it wp-admin redirect-loops forever behind TLS termination, which is the single most common way a reverse-proxied WordPress arrives broken.
<code>WP_HOME</code> and <code>WP_SITEURL</code> are deliberately not pinned
Most templates hardcode the site URL, which is why moving a self hosted WordPress to your own domain so often means editing the database. Neither value is set here, so you change the domain from wp-admin like any other WordPress.
What we set up for you
The parts that usually break are already done.
| What we set | Why it matters |
|---|---|
| Database wiring | Host, name, user and password passed to WordPress. You never type a connection string |
| Proxy headers | WORDPRESS_CONFIG_EXTRA trusting HTTP_X_FORWARDED_PROTO and HTTP_X_FORWARDED_HOST, so wp-admin does not redirect-loop behind TLS |
| Site URL | WP_HOME and WP_SITEURL deliberately left unset, so you can move domains from wp-admin |
| Boot order | MariaDB comes up and is ready before WordPress starts |
One thing this page does not claim, because it is not true here: WordPress does not boot with an administrator already seeded. It ships an open install screen, which is how WordPress works everywhere, and claiming it immediately is the first item in the limitations below.
How to self host WordPress in four steps
From zero to live.
No server to set up.
Four steps. Two containers, and the install screen is yours to claim.
1. Choose WordPress and a server
Pick a size and one of six locations across three continents, then submit. A European 4 GB server is $0.02/hr.
2. The stack starts
Both containers launch, MariaDB comes up first, the proxy headers are set and a generated HTTPS hostname goes live. The template deploys in about six minutes.
3. Claim the site straight away
Open the address and complete the first-run screen. The first account to finish it becomes the administrator, so do this immediately.
4. Make it yours
Add your domain from Settings with a TXT record, then install your theme and plugins. No tier decides which.
What we run, and what you run
A clean split, written down.
| Selfhost.dev runs | You run |
|---|---|
| The server, its OS and its provisioning | WordPress core, and when to update it |
| Both containers and the network around them | Themes and plugins, all of them, unrestricted |
| MariaDB 11.8, its credentials and its storage | Your content, media and users |
| TLS certificates and renewal | Your domain's DNS records |
| The reverse proxy and the generated HTTPS hostname | Caching and performance plugins, if you want them |
| Optional whole-server backups | Exports you take yourself, whenever you want |
We are not a managed WordPress platform and we do not price like one. No staging environment, no WordPress-aware cache, no automatic core updates. What there is instead is a machine with no tiers on it: every plugin, every theme, SFTP, the database, as many sites as it will carry, at one flat hourly rate.
What a 4 GB server handles
The honest capacity answer.
WordPress is a light template, so a 4 GB server carries it and leaves room. The platform reserves 1,536 MB for the host itself and counts WordPress as one light workload at 512 MB, which means a 4 GB machine runs WordPress plus one more heavy workload, or several more light ones, up to five workloads per project.
| Question | Answer |
|---|---|
| WordPress on 4 GB | The app, MariaDB, and room for one heavy workload beside it |
| More than one site | Yes, on the same machine, as separate projects or as a multisite |
| When to move to 8 GB | When media and database growth start competing with the app for memory |
No requests-per-second figure appears here, because we have no first-party measurement of this template and a made-up number is the kind of claim that gets corrected later.
Self hosted WordPress cost
One machine, one rate, no tiers.
You pay for the server and nothing else. A European 4 GB server is $0.02/hr, about $15 a month if you leave it running, billed hourly against prepaid credits. The template adds no fee, and there is no plan above it to upgrade to.
| Server | RAM | Europe | Monthly at 730 hrs |
|---|---|---|---|
cx23 (recommended) | 4 GB | $0.02/hr | $15.18 |
cx33 | 8 GB | $0.03/hr | $23.36 |
Europe only. cx23 and cx33 are European machine types. Outside Europe the console picks a different machine and a different rate: the verified US 8 GB equivalent is ccx13 at about $119 a month, and we publish no 4 GB figure outside Europe because none is verified. Price it in your own location, no signup.
| Item | Cost |
|---|---|
| The WordPress template | $0 |
| MariaDB 11.8, bundled | $0 |
| HTTPS certificate and custom domain | $0 |
| Users, sites, plugins or themes | $0 |
| Bandwidth | $0. Traffic is included in the server price |
| Optional daily backups | +20% of the server price |
If your credit balance reaches zero the server stops and the site goes offline. Data is retained while the server exists, so topping up brings it back as it was. A server that is deleted takes its backup images with it, which is why a WXR export or an SSH copy kept somewhere else is worth the five minutes. Signing up adds $5 in free credit, no card needed.
What every WordPress deployment gets
Promises a floating tag cannot make.
- Every service is health-checked every 60 seconds. The sweep is observational: restarting is done from the console rather than automatically.
- A stalled deploy is retried automatically, not abandoned.
- A deploy is never reported done until the URL actually answers.
- Your versions do not move. WordPress 7.1.0 and MariaDB 11.8 are pinned. A floating
latesttag is how a live WordPress gets dragged onto a new major and runs an irreversible database migration nobody asked for. - The template deploys in about six minutes, which is the platform's own budget for a light template, not an estimate.
Working out what a WordPress server costs?
Tell us how many sites and roughly how much media, and we will send back the server size, the monthly cost and what it replaces on your current hosting bill. One email, no newsletter.
WordPress.com vs self hosted here
The same software, two different arrangements.
WordPress.com is Automattic's hosted platform, running the same open source WordPress in tiers on infrastructure you do not see. Prices below are their monthly-billing rates.
| WordPress.com | Self hosted here | |
|---|---|---|
| Free | $0, with their branding | Not applicable |
| Personal | $9/mo | |
| Premium | $18/mo | |
| Business | $40/mo | |
| Commerce | $70/mo | |
| A 4 GB European server | $15.18/mo flat | |
| Plan tiers | Five | None |
| Installing plugins and themes | From Personal, $9/mo | Included |
| SFTP, SSH and WP-CLI | From Business, $40/mo | Included |
| Root on the machine | Never | Yes |
| Number of sites | One per plan | As many as the server carries |
WordPress.com monthly-billing rates, checked 13 September 2026. Our figure is a European 4 GB server at 730 hours.
Their free tier is real, and worth saying so
WordPress.com Free hosts a site at no cost with their branding on it, and for a personal blog that is a perfectly good answer. What it is not is a place you can install an arbitrary plugin or reach the database.
The line WordPress.com draws is no longer at plugins, it is at the server. Plugins and themes start at $9 a month. SFTP, SSH and WP-CLI start at $40. A European 4 GB server here is $15.18 a month and comes with root, the file system and the database, because the machine is yours rather than a tenancy on theirs.
WordPress VPS hosting versus a VPS you set up yourself
Same hardware. Different afternoon.
It is the same hardware. We run on Hetzner, which is where most people putting WordPress on a VPS end up anyway. The machine is not the difference, and this page is not going to pretend it is.
| A raw VPS | This template | |
|---|---|---|
| Docker, Compose and the compose file | Yours to install, write and maintain | Already running |
| Reverse proxy | Yours to configure, and forwarded headers are where it usually goes wrong | Configured before first boot |
| TLS certificate | Certbot, plus a renewal cron you have to remember | Issued and renewed |
| Root access | Yes | Yes, the same |
| Time to a working site | An afternoon, if nothing surprises you | About six minutes for the template |
When shared hosting is the better choice
If you want one small site and the cheapest possible bill, buy shared WordPress hosting instead. Shared hosts put hundreds of sites on one machine and price accordingly, which is genuinely cheaper than a dedicated server, and for a brochure site that is the right trade. A VPS is the other trade: the machine is yours, the resources are not shared, you have root, and the rate does not move when the site grows. Worth $15 a month to some people and not to others.
What you do not give up is the thing people fear giving up. Root SSH is included, the file system is yours, and mysqldump works exactly as it does on a machine you built. This is the same VPS with the boring hours already spent.
Self hosted WordPress limitations
Four things to know before you deploy.
- Claim the install screen immediately. WordPress leaves
/wp-admin/install.phpopen until somebody completes it, and whoever completes it becomes the administrator of a site that can execute PHP. This is how WordPress works everywhere, not something this deployment adds, and most hosts never mention it. Open the generated HTTPS address as soon as the console says the deployment is live, and finish the first-run screen before you do anything else. - No email until you add a plugin. WordPress sends no mail on its own here, so password resets, comment notifications and contact forms will not deliver until you install an SMTP plugin and point it at a mail provider. Nothing in the deployment blocks that; it simply is not configured, because the credentials would have to be yours.
- Media lives on the server disk. Uploads go into the
wordpress-filesvolume on the machine, not into object storage. That keeps it simple and it is included in the server price, but it means a media-heavy site grows the disk rather than a separate bill, and the disk is what you size for. - A careless plugin can undo the proxy fix. A plugin that rewrites
wp-config.phpor hardcodeshttp://will reintroduce the redirect loop our configuration prevents. If wp-admin starts looping after you install something, that is the cause, and removing the plugin restores it.
WordPress backup and restore
Three routes out, and none of them is a button.
What a backup covers
Daily, optional, 20% of the server price. One image is both containers, the MariaDB database and both volumes together, including every media upload. The last seven are kept, rotating.
They do not survive deletion
Backup images live with the server. If the server is destroyed, they go with it. A backup protects you from a mistake, not from an unpaid bill.
Your own copy, whenever you want one
The WXR exporter in wp-admin produces a portable file of your posts, pages and metadata. For everything byte for byte, add your public key and take root SSH: a mysqldump against the MariaDB container plus a tar of the wordpress-files volume is the whole site, uploads included.
Nothing here is designed to make leaving hard
There is no export button and we will not pretend there is one. There is also no lock: WXR is WordPress's own, and root SSH gives you the rest.
Moving an existing WordPress site here
Two routes, and one of them is a file.
The WXR route, for most sites
In your current wp-admin, Tools then Export. Deploy here, complete the first-run screen, then Tools then Import. Posts, pages, categories, tags, comments and users come across, and media is fetched from the old site during import, so leave the old site running until it finishes.
The byte-for-byte route, for anything complicated
Take a mysqldump of the old database and a copy of the whole wp-content directory. Add your public key to the project server, restore the dump into the MariaDB container and drop wp-content into the wordpress-files volume. Everything arrives, including plugin configuration that WXR does not carry.
What does not come across: plugin licence keys usually need reactivating on the new domain, and anything your old host provided as a platform feature rather than a plugin, their cache, their CDN, their staging copy, has no equivalent to import because it was never part of WordPress. We do not perform the migration: there is no migration service and no import API, and both routes are things you run.
Related guides.
Frequently asked questions
Can I self host WordPress on Selfhost.dev?
How much does self hosted WordPress cost?
Is this managed WordPress hosting?
How does this compare with WordPress.com?
Does WordPress send email from this deployment?
Can I move my existing WordPress site here?
Can I run more than one site on the server?
What happens to my site if my credit balance reaches zero?
About Selfhost.dev
Selfhost.dev is a managed self hosting platform for developers and small teams. Open source apps and databases on dedicated servers you control, billed by the hour, in six locations across three continents.
Best for: WordPress, Strapi, Mautic, Nextcloud and managed PostgreSQL, MySQL, Redis and ClickHouse.