TUTORIAL / HOW TO: Set Up Ghost on DigitalOcean in 10 Minutes
Prerequisites
- A domain name ($12/year from Namecheap)
- DigitalOcean account (get $200 credit with referral)
- 10 minutes
That's it. No terminal experience needed.
Step 1: Create Your Droplet
- Log into DigitalOcean
- Click Create → Droplets
- Choose Marketplace tab
- Search for Ghost
- Select the Ghost image
Configuration
| Setting | Choose |
|---|---|
| Plan | Basic ($6/month) |
| CPU | Regular (cheapest) |
| Region | Closest to audience |
| Authentication | Password (easier) |
| Hostname | your-site-name |
Click Create Droplet. Wait 60 seconds.
Step 2: Initial Setup
- Copy your droplet's IP address
- Open browser:
http://YOUR-IP-ADDRESS - Ghost setup screen appears
Create your admin account:
- Blog title
- Name
- Password
You now have Ghost running. But let's add your domain.
Step 3: Point Your Domain
In your domain registrar:
| Type | Name | Value |
|---|---|---|
| A | @ | YOUR-IP-ADDRESS |
| A | www | YOUR-IP-ADDRESS |
DNS propagates in 5-30 minutes. Check at whatsmydns.net.
Step 4: Configure Ghost Domain
SSH into your droplet:
ssh root@YOUR-IP-ADDRESS
Run the setup:
cd /var/www/ghost
ghost config url https://yourdomain.com
ghost setup nginx ssl
The SSL prompt appears:
- Enter email
- Agree to terms
- Certificate installs automatically
[TOGGLE BLOCK: "Common SSL Issues"]
"Invalid email" error
- Use a real email address
"Connection refused"
- Wait for DNS propagation
- Check A records
"Certificate limit"
- You hit Let's Encrypt rate limit
- Wait 1 hour
Step 5: Email Configuration
Ghost needs email for member signups.
Quick Mailgun Setup:
- Sign up at Mailgun (free tier)
- Verify your domain
- Get credentials:
- Domain
- API Key
- Region (US or EU)
Add to Ghost:
ghost config mail.transport mailgun
ghost config mail.options.auth.user YOUR-MAILGUN-USERNAME
ghost config mail.options.auth.pass YOUR-MAILGUN-PASSWORD
ghost restart
Optimization Checklist
| Task | Command | Why |
|---|---|---|
| Enable backups | In DigitalOcean dashboard | Auto weekly backups |
| Set timezone | timedatectl set-timezone |
Correct post times |
| Update Ghost | ghost update |
Monthly updates |
| Check logs | ghost log |
Debug issues |
| Restart Ghost | ghost restart |
After changes |
Performance Tweaks
Enable Caching
ghost config caching.frontend.maxAge 600
ghost restart
Image Optimization
Already included. Ghost auto-optimizes uploads.
CDN Setup
Optional but recommended:
- Sign up for Cloudflare (free)
- Add your site
- Update nameservers
- Enable "Full SSL"
Maintenance Commands
# Check status
ghost status
# View logs
ghost log
# Update Ghost
ghost update
# Backup content
ghost backup
# Restart after changes
ghost restart
Total Costs
| Service | Monthly | Annual |
|---|---|---|
| DigitalOcean | $6 | $72 |
| Domain | $1 | $12 |
| Email (Mailgun) | $0* | $0 |
| CDN (Cloudflare) | $0 | $0 |
| Total | $7 | $84 |
*Free up to 1,000 emails/month
Compare to Ghost(Pro) at $25/month = $300/year.
When You're Stuck
Ghost won't start:
ghost doctor
ghost restart
SSL not working:
ghost setup nginx ssl --force
Out of memory:
Upgrade to $12/month droplet
Site is slow:
Enable Cloudflare CDN
Next Steps
Your Ghost site is live, secure, and fast. Now:
- Install a theme (like Neutrino)
- Configure members/newsletters
- Start publishing
- Set up automatic backups
The entire setup: 10 minutes. The monthly cost: Less than a coffee.