Best VPS for Ghost 2026: Self-Host Your Publishing Platform
Find the best VPS for Ghost CMS. Compare hosting options, set up your own Ghost blog, and run a professional publishing platform for under $10/month.
Best VPS for Ghost in 2026
Ghost is the modern publishing platform — clean, fast, and built for creators. Self-host it on a VPS and skip the $25-299/month Ghost(Pro) fees.
Why Self-Host Ghost?
| Factor | Ghost(Pro) | Self-Hosted VPS |
|---|---|---|
| Starter Price | $25/mo | ~$5/mo |
| Creator Price | $50/mo | ~$5/mo |
| Business Price | $199/mo | ~$10/mo |
| Custom Themes | ✅ | ✅ |
| Members & Newsletters | ✅ | ✅ |
| Custom Integrations | Limited | Unlimited |
| Data Ownership | Their servers | Your server |
Self-hosting Ghost saves $20-190+/month while keeping all features.
VPS Requirements
Ghost is Node.js-based and relatively light:
Minimum:
- 1 vCPU
- 1GB RAM
- 20GB storage
Recommended:
- 2 vCPU
- 2GB RAM
- 40GB storage
High Traffic:
- 2-4 vCPU
- 4GB RAM
- 80GB+ storage
Ghost runs well on modest resources. Add more for heavy traffic or many members.
Best VPS for Ghost
1. Hetzner CX11 (Best Budget)
€3.79/mo | 1 vCPU, 2GB RAM, 20GB NVMe
Perfect for personal blogs and small publications. 2GB RAM handles Ghost comfortably.
2. Hostinger KVM1 (Best Value)
$4.99/mo | 1 vCPU, 4GB RAM, 50GB NVMe
4GB RAM leaves room for growth. 50GB storage is generous for media-heavy blogs.
3. DigitalOcean Basic (Best for Beginners)
$6/mo | 1 vCPU, 1GB RAM, 25GB SSD
DigitalOcean has Ghost one-click droplet and excellent tutorials.
4. Vultr (Best Global Reach)
$6/mo | 1 vCPU, 1GB RAM, 25GB SSD
32 locations — put Ghost close to your audience.
Ghost-CLI Setup (Recommended)
Ghost provides an official CLI that handles everything.
Step 1: Create VPS
Ubuntu 22.04 recommended. SSH in:
ssh root@your-vps-ip
Step 2: Initial Setup
# Update system
apt update && apt upgrade -y
# Create ghost user
adduser ghost
usermod -aG sudo ghost
# Install dependencies
apt install -y nginx mysql-server nodejs npm
# Install Ghost-CLI
npm install -g ghost-cli
Step 3: Prepare MySQL
mysql_secure_installation
# Set root password, answer Y to security questions
mysql -u root -p
CREATE DATABASE ghost_production;
CREATE USER 'ghost'@'localhost' IDENTIFIED BY 'your-secure-password';
GRANT ALL PRIVILEGES ON ghost_production.* TO 'ghost'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Step 4: Install Ghost
su - ghost
sudo mkdir -p /var/www/ghost
sudo chown ghost:ghost /var/www/ghost
cd /var/www/ghost
ghost install
The CLI asks:
- Blog URL:
https://yourdomain.com - MySQL hostname:
localhost - MySQL username:
ghost - MySQL password:
your-secure-password - Ghost database:
ghost_production - Set up Nginx: Yes
- Set up SSL: Yes (uses Let's Encrypt)
- Set up systemd: Yes
That's it! Ghost is running.
Step 5: Access Admin
Go to: https://yourdomain.com/ghost
Create your admin account and start publishing.
Docker Setup (Alternative)
For container-based deployment:
version: '3.8'
services:
ghost:
image: ghost:5-alpine
container_name: ghost
restart: unless-stopped
environment:
url: https://yourdomain.com
database__client: mysql
database__connection__host: db
database__connection__user: ghost
database__connection__password: your-password
database__connection__database: ghost
mail__transport: SMTP
mail__options__host: smtp.mailgun.org
mail__options__port: 587
mail__options__auth__user: postmaster@yourdomain.com
mail__options__auth__pass: your-smtp-password
volumes:
- ghost-content:/var/lib/ghost/content
depends_on:
- db
db:
image: mysql:8
container_name: ghost-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root-password
MYSQL_DATABASE: ghost
MYSQL_USER: ghost
MYSQL_PASSWORD: your-password
volumes:
- ghost-db:/var/lib/mysql
caddy:
image: caddy:alpine
container_name: caddy
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy-data:/data
volumes:
ghost-content:
ghost-db:
caddy-data:
Caddyfile:
yourdomain.com {
reverse_proxy ghost:2368
}
Email & Newsletter Setup
Ghost's killer feature is built-in newsletters. You need email:
Mailgun (Recommended by Ghost)
# In Ghost admin: Settings → Email newsletter
# Add Mailgun API key and domain
Resend (Modern Alternative)
Works with Ghost's custom SMTP:
{
"mail": {
"transport": "SMTP",
"options": {
"host": "smtp.resend.com",
"port": 587,
"auth": {
"user": "resend",
"pass": "re_xxxx"
}
}
}
}
Self-Hosted (Postal/Mailu)
For complete control, run your own mail server. Complex but zero per-email costs.
Membership & Payments
Ghost includes membership/subscription features:
Stripe Integration
- Ghost Admin → Settings → Membership
- Connect Stripe
- Set pricing tiers
No additional plugins needed — it's built in.
Member Tiers
Create different access levels:
- Free (newsletter only)
- Monthly subscriber ($5/mo)
- Annual subscriber ($50/yr)
Ghost handles payments, access control, and member management.
Performance Optimization
Enable Caching
Ghost is fast by default, but add caching:
In Nginx, before the Ghost location block:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
Use Cloudflare
- Add site to Cloudflare
- Enable caching
- Use Full SSL mode
- Enable Brotli compression
Free tier is plenty for most Ghost sites.
Image Optimization
Ghost handles responsive images, but also:
- Use WebP/AVIF when possible
- Compress before uploading
- Use a CDN for media
Backup Strategy
Automatic Backups
#!/bin/bash
# ghost-backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/home/ghost/backups"
mkdir -p $BACKUP_DIR
# Database
mysqldump -u ghost -p'password' ghost_production > $BACKUP_DIR/db-$DATE.sql
# Content
tar czf $BACKUP_DIR/content-$DATE.tar.gz /var/www/ghost/content
# Keep last 7 days
find $BACKUP_DIR -mtime +7 -delete
# Optional: upload to remote
# rclone copy $BACKUP_DIR remote:ghost-backup/
Schedule:
crontab -e
0 3 * * * /home/ghost/ghost-backup.sh
Ghost Export
Ghost Admin → Settings → Labs → Export
Downloads JSON with all content. Good for migration.
Update Ghost
Via Ghost-CLI
cd /var/www/ghost
ghost update
Via Docker
docker compose pull
docker compose up -d
Ghost updates are usually smooth. Read release notes first for major versions.
Themes
Official Themes
Ghost includes several themes. Casper is default.
Marketplace Themes
- Ghost Marketplace (official)
- ThemeForest
- Gumroad
Custom Development
Themes use Handlebars templating:
cd /var/www/ghost/content/themes
git clone https://github.com/your-theme your-theme
# In Ghost Admin
# Settings → Design → Change theme
Common Issues
502 Bad Gateway
# Check Ghost status
ghost status
# Restart Ghost
ghost restart
# Check logs
ghost log
Memory Issues
Add swap:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
SSL Certificate Renewal
Ghost-CLI sets up auto-renewal. Verify:
certbot renew --dry-run
Ghost vs WordPress
| Feature | Ghost | WordPress |
|---|---|---|
| Speed | Faster | Slower |
| Security | More secure | Plugin risks |
| Bloat | Minimal | Can be heavy |
| Newsletters | Built-in | Plugin needed |
| Memberships | Built-in | Plugin needed |
| Themes | Fewer | Thousands |
| Plugins | None | Thousands |
| Learning Curve | Low | Low |
Ghost is focused. WordPress is flexible. Pick based on needs.
Resource Usage
Typical Ghost installation:
| Component | RAM |
|---|---|
| Ghost (Node) | 150-300MB |
| MySQL | 300-500MB |
| Nginx | 20MB |
| Total | 500MB-1GB |
1GB VPS works. 2GB is comfortable.
FAQ
Is Ghost really free?
The software is free and open source. You pay only for hosting.
Can I migrate from WordPress?
Yes! Ghost has a WordPress importer. Content transfers easily; themes need rebuilding.
How does Ghost make money?
Ghost(Pro) managed hosting. The Foundation doesn't need you to self-host less.
Is self-hosted Ghost secure?
Yes. Keep it updated, use SSL, and you're set. Simpler than WordPress.
Can Ghost handle high traffic?
Yes. Ghost is Node.js and handles traffic well. Add Cloudflare for extra protection.
Recommended Setup
| Use Case | VPS | Monthly Cost |
|---|---|---|
| Personal Blog | Hetzner CX11 | €3.79 |
| Small Publication | Hostinger KVM1 | $4.99 |
| Growing Newsletter | Hetzner CX21 | €5.39 |
| High Traffic | Hetzner CX31 | €10.49 |
Start with Hetzner CX11 at €3.79/month — that's $45/year vs Ghost(Pro)'s $300/year minimum.
Self-hosting Ghost is one of the best value propositions in publishing.
Ready to get started?
Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.
Get Hostinger VPS — $4.99/mo// up to 75% off + free domain included
// related topics
fordnox
Expert VPS reviews and hosting guides. We test every provider we recommend.
// last updated: February 8, 2026. Disclosure: This article may contain affiliate links.