This post contains affiliate links. If you purchase through our links, we may earn a commission at no extra cost to you.
Ghost Pro’s Starter plan went up to $18/month. That’s $216/year — for a plan that doesn’t even support paid memberships. Meanwhile, you can self-host Ghost 6.0 on Vultr‘s $6 High Performance VPS, add a cheap domain and email sending, and run the whole thing for around $8–$10/month. Most people don’t do this because the 1 GB RAM setup requires a specific MySQL fix that nobody tells you about. This guide covers that fix and every other step you need.

Ghost Pro vs Self-Hosting on Vultr: The Cost Math
Ghost Pro’s pricing is straightforward to understand but painful to look at:
| Plan | Monthly | Annual | Paid Memberships? |
|---|---|---|---|
| Starter | $18/mo | $15/mo | No |
| Publisher | $35/mo | $29/mo | Yes |
| Business | $239/mo | $199/mo | Yes |
The Starter plan’s biggest gotcha: you can’t accept paid subscriptions on it. If you want to monetize your newsletter — the whole point of Ghost for most creators — you need Publisher at $29/month.
Self-hosting on Vultr changes the math entirely:
| Component | Monthly Cost |
|---|---|
| Vultr High Performance $6 plan (1 vCPU AMD EPYC-Genoa, 1 GB RAM, 25 GB NVMe, 2 TB transfer) | $6.00 |
| Domain (~$12/yr amortized) | ~$1.00 |
| Email sending via Mailgun Flex (<1,000 emails/mo) | ~$2.00 |
| Total for a no-newsletter blog | ~$7/mo |
| Total with newsletter (<1k subscribers, monthly sends) | ~$9–$10/mo |
Versus Ghost Pro Starter at $18/mo or Publisher at $29/mo, you’re saving $96–$228/year. And on self-hosted Ghost, paid subscriptions are supported with no extra platform fee — Ghost takes 0%, same as Ghost Pro.
Prices last verified: June 22, 2026. Ghost Pro pricing from ghost.org/pricing.
For a deeper look at how Vultr’s $6 plan compares to other entry-level VPS options, see our best cheap VPS under $10 roundup.
What You’ll Need Before You Start
Ghost 6.0 (released August 4, 2025) has specific requirements. Many older tutorials reference Node.js 12 or 16 — those will fail.
| Requirement | Spec | Note |
|---|---|---|
| OS | Ubuntu 22.04 or 24.04 LTS | No other distros supported by ghost-cli |
| RAM | 1 GB minimum | Requires MySQL tuning + swap (covered below) |
| Node.js | v22 LTS only | v18 and v20 dropped in Ghost 6.0 |
| Database | MySQL 8 | SQLite is development-only in Ghost 5+ |
| Web server | Nginx | ghost-cli configures it automatically |
| Domain | Registered + DNS A-record | Required for SSL (Let’s Encrypt) |
The Node.js version is the most common trap. Ghost 6 requires exactly v22 LTS — not v20, not v21, not v23+. Most guides from 2022–2024 reference outdated versions.
Step-by-Step: Installing Ghost on Vultr’s $6 Plan
Step 1 — Deploy Your Vultr Instance
Start with Vultr‘s $6 High Performance plan — 1 vCPU AMD EPYC-Genoa, 1 GB RAM, 25 GB NVMe SSD, 2 TB transfer, IPv4 included. Select Ubuntu 22.04 LTS as the OS.
New Vultr accounts get $300 in free credit valid for 30 days — enough to run this setup for months before you pay a cent.
Point your domain’s A-record at the Vultr server IP before continuing. ghost-cli’s SSL setup (Let’s Encrypt) will fail if DNS hasn’t propagated yet.
Step 2 — Initial Server Setup
SSH in as root, then create a non-root sudo user. Do not name this user “ghost” — it conflicts with ghost-cli.
adduser yourname
usermod -aG sudo yourname
# Log out and back in as yourname
Step 3 — Install Nginx
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install nginx -y
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
💡 Tip: Prefer a visual approach? You can build these rules with our free Firewall Rule Builder — it generates ufw and iptables commands right in your browser.
Step 4 — Install MySQL 8
sudo apt-get install mysql-server -y
sudo mysql_secure_installation
Then switch MySQL root from socket auth to password auth — ghost-cli requires this:
sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
EXIT;
Step 5 — Install Node.js v22 LTS (Critical)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version # Must show v22.x.x
If this shows anything other than v22, stop and fix it before continuing.
Step 6 — Install ghost-cli and Run the Installer
sudo npm install ghost-cli@latest -g
sudo mkdir -p /var/www/yourblog
sudo chown yourname:yourname /var/www/yourblog
sudo chmod 775 /var/www/yourblog
cd /var/www/yourblog
ghost install
The installer will prompt you through: blog URL, MySQL credentials, database name, Nginx setup, SSL (Let’s Encrypt), systemd setup, and start. Answer yes to all the automated setup prompts. When it finishes, Ghost is running — but you’re not done yet.

The 1 GB RAM Problem — and the Fix
This is the part that most tutorials skip. After a fresh Ghost + MySQL + Nginx install on a 1 GB VPS, the system sits at 80–90% RAM usage at idle. That leaves roughly 100–200 MB of headroom. It’s not enough for:
- Running
ghost update(npm spikes memory) - Sending newsletter blasts
- Any traffic burst above a trickle
The root cause is MySQL 8’s default config, which assumes it’s running on a much larger server. The fix requires two parts.
Part 1 — Tune MySQL (edit /etc/mysql/mysql.conf.d/mysqld.cnf):
[mysqld]
innodb_buffer_pool_size = 32M
innodb_log_file_size = 16M
max_connections = 25
key_buffer_size = 16M
After saving:
sudo systemctl restart mysql
This alone drops idle RAM usage from 80–90% down to roughly 60–70%.
Part 2 — Add a 2 GB Swap File:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
💡 Tip: Unsure how much swap your server needs? Our free Linux Swap Calculator recommends a size based on your RAM.
Vultr’s NVMe SSD is fast enough that swap doesn’t feel sluggish the way it does on traditional disk. On this setup, ghost update completed without OOM issues after applying both fixes, where it had previously killed the process mid-run.
With MySQL tuning + 2 GB swap, Ghost runs stably on Vultr’s $6 plan for a low-to-medium traffic blog or newsletter. It’s not a setup I’d recommend for more than ~50 concurrent visitors — but for a personal site or newsletter with up to a few thousand subscribers, it works.
Common Pitfalls and Solutions
| Problem | Cause | Fix |
|---|---|---|
| Ghost crashes after install | MySQL eating 80–90% RAM | Tune innodb_buffer_pool_size + add 2 GB swap |
ghost install fails at SSL |
DNS not yet propagated | Set A-record before install; run ghost setup ssl separately after DNS resolves |
| User “ghost” conflict | Reserved username in ghost-cli | Never name your sudo user “ghost” |
| MySQL socket auth error | Ubuntu default auth method | Change root to mysql_native_password before install (Step 4) |
| Wrong Node.js version | Old tutorial instructions | Install via NodeSource setup_22.x specifically — verify with node --version |
ghost update fails / OOM |
Insufficient RAM for npm | Ensure swap is active and MySQL is tuned before updating |
| 403 permissions error | Ghost directory ownership | sudo chown -R yourname:yourname /var/www/yourblog |
| MariaDB instead of MySQL | Some VPS control panels default to MariaDB | Ghost officially supports MySQL 8.0+ only; MariaDB is unsupported |
Ghost 6 Features: What You Get on Self-Hosted
Ghost 6.0 (August 2025) added ActivityPub/Fediverse support and native analytics. One thing to know: these features work differently on self-hosted vs Ghost Pro.
- ActivityPub: Full self-hosting requires the experimental Docker Compose install method. The ghost-cli method (used in this guide) connects to Ghost’s hosted ActivityPub relay — you get followable profiles, but through Ghost’s infrastructure.
- Native analytics: Requires Docker preview + a free Tinybird account on self-hosted. Not available on ghost-cli installs yet.
- Everything else — paid memberships, multiple newsletters, custom themes, the Lexical editor, custom integrations — works fully on ghost-cli self-hosted.
If ActivityPub and native analytics are your primary reason for upgrading to Ghost 6, you’ll need the Docker install path. For everyone else running a blog or newsletter, ghost-cli gets you 95% of what Ghost 6 offers.
FAQ
Is Ghost CMS free to self-host?
Yes. Ghost is open-source under the MIT license. The software itself is free — you only pay for the VPS, domain, and email sending service. On Vultr’s $6 plan, you’re looking at $7–$10/month total depending on email volume.
Does Ghost work on 1 GB RAM?
Yes, with the MySQL memory tuning and swap file setup covered in this guide. Without those fixes, it’ll crash during updates or newsletter sends. With them, it’s stable for a personal blog or small newsletter (a few thousand subscribers). If you’re expecting consistent multi-concurrent traffic, upgrade to the 2 GB plan ($12/mo at Vultr).
Can I accept paid subscriptions on self-hosted Ghost?
Yes — paid memberships work on self-hosted Ghost with no platform fee. Ghost takes 0% of your revenue (Stripe’s standard 2.9% + $0.30 applies). This is one of the main reasons to self-host: Ghost Pro’s Starter plan ($18/mo) doesn’t support paid subscriptions at all.
How do I send newsletter emails from self-hosted Ghost?
Ghost’s self-hosted install needs an external SMTP provider. Mailgun is the most common option (Mailgun Flex plan: ~$2/month for under 1,000 emails). You configure it in Ghost Admin → Settings → Email. Note that Mailgun doubled its email pricing in December 2025 — factor this into your cost estimate.
Can I upgrade to a larger Vultr plan later without reinstalling Ghost?
Yes. Vultr lets you resize VPS instances. Ghost’s data stays on the same volume when you upgrade plan size. You’ll have a brief downtime during the resize. For details on Vultr’s plan tiers and pricing, see our full Vultr pricing breakdown.
Final Verdict
Self-hosting Ghost on Vultr’s $6 plan works — but only if you do the MySQL memory tuning and add the swap file. Skip those steps and you’ll run into crashes within days. Do them, and you have a stable publishing platform for $7–$10/month, versus $18–$29/month on Ghost Pro.
The setup is worth it if you’re building a newsletter or membership site and want to control your costs from day one. It’s overkill if you want zero ops work — in that case, Ghost Pro’s managed hosting removes every headache covered in this guide, and the $18/month is fair for what you get.
For most bootstrapped creators starting out: self-host on Vultr $6, upgrade to 2 GB RAM when you can afford it or when traffic demands it, and revisit Ghost Pro later if server management becomes a time burden.
Vultr Sign up and deploy your $6 instance — new accounts get $300 in free credit, valid for 30 days.
System requirements and pricing verified as of June 22, 2026. Ghost version 6.0 (August 4, 2025). Ghost Pro pricing from ghost.org/pricing.

