You can run a real WordPress site, online, with your own domain and proper HTTPS, on the computer sitting on your desk right now. Hosting cost: zero.

And once it is up, you can plug AI Engine into a language model running on that same machine, and get your own private ChatGPT inside wp-admin. Also zero. No OpenAI key, no token counter, no monthly bill, and nothing leaving your house. There is even an iOS app, so you can chat with your own site from your phone.

Here is how to do all of it, and also, honestly, when you should not 🙂

What “free” actually means here

Let’s be precise, because “free hosting” articles usually are not. What is genuinely free: the server (your own machine), the tunnel to the internet, the TLS certificate, the CDN in front of it, and the DDoS protection. What is not free: a domain name, which runs around ten dollars a year if you buy it at Cloudflare Registrar, and the electricity to keep a computer on.

You can even skip the domain and pay literally nothing, and I will show you that trick too. It is perfect for a quick test and useless for a real site, but it is there.

When this is a great idea, and when it really isn’t

Good reasons to do this: a personal blog, a portfolio, a family site, a photo archive, a private knowledge base, a lab to learn WordPress properly, a staging copy of a client site, or simply a place to try plugins without paying for hosting you do not need yet.

Bad reasons: a shop, a client’s production site, anything where money or your reputation is on the line. Your home connection goes down. Your machine reboots for an update at 3am. Someone unplugs something to vacuum. That is fine for a hobby site and unacceptable for a business. I run meowapps.com on real managed hosting and I sleep well because of it. If your site pays your rent, pay for hosting. I would rather tell you that now than sell you a fantasy.

Step 1: WordPress on your own machine

You need WordPress running locally. Three reasonable paths:

  • Local (by WP Engine): free, one click, Mac, Windows and Linux. This is what I use every day for plugin development. If you have no strong opinion, use this one.
  • Docker: if you are comfortable with YAML and want something reproducible.
  • MAMP or XAMPP: still works, still fine, slightly nostalgic.

Whatever you pick, the only thing that matters for the next step is the local address your site answers on. Something like http://mysite.local or http://localhost:8080. Write it down, we will need it in one minute.

Step 2: Put it online with a Cloudflare Tunnel

The old way to do this was port forwarding: open port 443 on your router, hope your ISP gives you a stable IP, set up dynamic DNS, manage your own certificates, and accept that your home network is now directly facing the internet. Please do not do that.

A Cloudflare Tunnel works the other way around. A small program on your machine opens an outbound connection to Cloudflare, and visitors reach your site through that connection. Nothing is open on your router. Your home IP is never exposed. The certificate, the CDN and the DDoS protection come with it. The free plan covers all of this.

The cat pointing proudly at a dashed line leaving a small house through the roof and reaching two visitors, while the front door stays locked

Here is the whole setup:

  1. Add your domain to Cloudflare on the free plan, and point your registrar at Cloudflare’s nameservers.
  2. Open the Zero Trust dashboard, go to Networks > Tunnels > Create a tunnel, choose Cloudflared, give it a name, and copy the token it shows you.
  3. Install the connector on your machine. On a Mac that is brew install cloudflared. On Debian or Ubuntu, grab the .deb from Cloudflare. There is a Docker image too, and it runs happily on a Raspberry Pi.
  4. Run the connector with your token, and install it as a service so it comes back after a reboot.
  5. Back in the dashboard, add a Public Hostname: your domain on one side, and on the other side the service http://mysite.local (or whatever you wrote down in step 1).
brew install cloudflared
sudo cloudflared service install <YOUR_TUNNEL_TOKEN>

That is it. Your local WordPress is now on the internet, over HTTPS, on your own domain.

Want to try it before buying a domain? Skip everything above and run one command:

cloudflared tunnel --url http://localhost:8080

You get a random address on trycloudflare.com, instantly, with no account at all. The address changes every time you restart it, so it is a toy, not a home. But it is a very good way to see the whole thing work in about two minutes.

Step 3: Tell WordPress where it lives

This is the step every tutorial forgets, and it is exactly where people give up. You load your new domain and WordPress throws you into an infinite redirect loop.

The reason is simple. Cloudflare handles HTTPS at its edge and then talks to your machine over plain HTTP. WordPress looks at that request, decides the visitor is not on HTTPS, and redirects them to HTTPS. Cloudflare sends the request again over HTTP. WordPress redirects again. Forever.

Open wp-config.php and add this above the “That’s all, stop editing” line:

define( 'WP_HOME', 'https://yourdomain.com' );
define( 'WP_SITEURL', 'https://yourdomain.com' );

// Cloudflare terminates HTTPS at its edge and reaches the tunnel
// over plain HTTP. Without this, WordPress believes the request is
// insecure and redirects forever.
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
  && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
  $_SERVER['HTTPS'] = 'on';
}

Reload. Your site works, your admin bar works, and your links stop pointing at mysite.local.

Step 4: A language model on the same machine

Now the fun part. You have a computer that is already on all the time, serving a website. It can also run an AI model.

Install Ollama, pull a model, and you are done. Ollama exposes an OpenAI-compatible API at http://localhost:11434/v1, which is precisely what we need.

brew install ollama
ollama serve

# in another terminal, pull whichever model you picked
ollama pull <model-name>

Which model? Browse the Ollama library and pick by size rather than by name, because the lineup changes every few months. What you can run depends entirely on your memory. With 16GB you are looking at small models, around 3 to 8 billion parameters. With 32GB or more you can go bigger and it gets noticeably better.

And a small local model is not Claude and not GPT. It is genuinely good at summarizing, rewriting, translating, generating titles and excerpts, tagging content, and answering questions about text you hand it. It is not good enough to be your coding partner, and I would not put it in front of your customers as a support agent. Use it for what it is good at and it is a delight. Expect a frontier model and you will be disappointed.

Step 5: Connect AI Engine to it

Install AI Engine from the WordPress repository. It is free, and this part does not need the Pro version.

Go to Meow Apps > AI Engine > Settings, add a new AI environment, and pick the provider Custom (OpenAI-Compatible). Set the endpoint to http://localhost:11434/v1 and leave the API key empty, because Ollama does not want one. Then add the model you pulled, using its exact Ollama name.

That provider is not an afterthought, by the way. We built it specifically so AI Engine can talk to anything that speaks the OpenAI chat format: Ollama, LM Studio, vLLM, llama.cpp, LocalAI, and any smaller hosted provider you like. Your WordPress is not locked to anyone.

Step 6: Your own ChatGPT, inside WordPress

Now open the Workspace. It is a full-screen chat interface living inside wp-admin, reachable from the admin bar. It is free, it is for administrators, and it runs on whatever model you just configured.

It behaves like the chat app you already know: conversations you can come back to, a model picker per conversation, themes and accent colours saved per user. Except the conversations live in your database, on your machine, and the model answering them is running two inches away from the drive they are stored on.

There is also a “This WordPress” mode, which hands your site’s own tools to the model so it can search your content, read a post, edit it, and check its work. When it wants to do something that changes your site, you get an approval card first, so nothing happens behind your back.

The Workspace has its own home now, over at workspace.press, with the full tour: conversations in folders, full-text search, per-conversation model switching, image generation straight into your Media Library, and activity trails showing you exactly what it did to your site.

Step 7: The same thing, on your phone

Here is where the tunnel quietly pays for itself a second time.

There is a Workspace app for iPhone and iPad. It talks to your own site, so the conversations, the models and the keys are all still yours. To connect it, you open the Workspace in wp-admin, generate a pairing QR code, and scan it. Behind the scenes the app trades that code for a WordPress Application Password, which lands in the iOS Keychain. The code itself is single use and dies after five minutes.

And this is the neat part: WordPress refuses to hand out Application Passwords over plain HTTP. On a purely local site at http://mysite.local, pairing simply is not offered. The Cloudflare Tunnel gave you a real domain with real HTTPS, which is precisely what unlocks it. The step you did to put your site online is the same step that lets your phone talk to it.

So: your WordPress runs at home, your AI model runs at home, and you can sit on a train and ask your site to draft a post. All of it on hardware you own.

The cat sitting between a computer running a local AI model and a phone showing a chat bubble and a QR pairing code

The app is in testing at the time of writing, not yet on the App Store, and it needs iOS 17 or newer. Keep an eye on workspace.press for it.

Bonus: let a real AI agent drive it

Local models are lovely for privacy and terrible at complex work. So here is the other half of the picture, for the days when you want serious horsepower.

AI Engine also turns your WordPress into an MCP server. MCP is the open standard that lets an AI agent discover and call tools on an external system. Once your site publishes its tools, something like Claude or Claude Code can connect to it directly and actually work on your site: find posts, read them, fix them, upload media, check its own results.

This is where it gets genuinely useful for maintenance. Ask an agent to run a media cleanup, and it does not just fire the scan and walk away: it can look at what was flagged, cross-check whether a file is really unused, and tell you what it is unsure about before anything is deleted. That is a very different experience from clicking a button and hoping.

Worth knowing: your site needs to be reachable over HTTPS for this, which the tunnel already handled. The core tools ship with AI Engine, and the deeper packs (database, themes, plugins, WooCommerce) come with Pro.

The honest catch

  • Machine off, site off. Closing a laptop lid takes your website down. A small always-on machine or a Raspberry Pi is a much better host than your daily driver.
  • Your upload speed is your ceiling. Cloudflare caches images and static files at the edge, which helps enormously, but a heavy media library on a slow home connection will still feel slow the first time.
  • Read Cloudflare’s terms if you plan to serve video. The free plan is not designed to push large amounts of non-HTML content, and they are entitled to say so.
  • Backups are your job now. There is no host quietly doing it for you at 4am. Set something up on day one, not after the first crash.
  • Local models are slower. Answers arrive at reading speed instead of instantly, and the quality sits below the big hosted models. That is the trade you are making for zero cost and total privacy.

To sum up

WordPress on your own machine, a Cloudflare Tunnel to put it online safely, four lines in wp-config.php so WordPress believes it, Ollama for the brain, and AI Engine to tie the two together. Then the Workspace in your browser, the same thing on your phone, and an MCP connection for the heavy jobs. A complete site with real AI features, for the price of a domain name.

It will not replace proper hosting for anything serious, and I would not pretend otherwise. But for learning, for experimenting, for a personal site you actually own end to end, it is genuinely excellent. And there is something quietly satisfying about a website and its AI both living on a machine you can reach out and touch 🙂