Ghost CMS
Complete reference manual, deployment workflows, CLI commands cheat sheet, and optimization guide for high-performance Ghost hosting.
Ghost Infrastructure Control Center
| Category | Target Command | Syntax | Flags & Parameters | Description |
|---|---|---|---|---|
| Lifecycle | ghost start |
ghost start |
--development, --no-prompt |
Boots up the local Ghost instance and brings services online. |
| Lifecycle | ghost stop |
ghost stop |
-f, --force, --all |
Gracefully halts Ghost processes across active instances. |
| Lifecycle | ghost restart |
ghost restart |
--unhandled-rejections |
Performs a zero-downtime reload of the Node environment. |
| Diagnostics | ghost doctor |
ghost doctor |
-[category], --verbose |
Runs health checks on permissions, Node versions, MySQL, and Nginx. |
| Diagnostics | ghost log |
ghost log [name] |
-f (follow), -n (lines) |
Streams production error logs and access requests live to terminal. |
| Diagnostics | ghost status |
ghost status |
N/A | Lists all running Ghost instances on the server alongside port mappings. |
| Maintenance | ghost update |
ghost update [version] |
--force, --rollback, --v1 |
Pulls latest core release, runs DB migrations, and validates build. |
| Maintenance | ghost update |
ghost update --rollback |
N/A | Emergency command: reinstalls the previous stable Ghost release. |
| Config | ghost config |
ghost config [key] [val] |
--set, --get, --env |
Inspects or mutates config.production.json key-value pairs. |
| Setup | ghost install |
ghost install [version] |
--db, --url, --no-setup |
Fires up full automated stack installer (Nginx, SSL, Systemd, DB). |
| Setup | ghost setup |
ghost setup [stage] |
nginx, ssl, systemd, mysql |
Manually re-runs individual setup stages without a full reinstall. |
| Database | ghost bkp |
ghost uninstall |
--force |
Purges current directory's Ghost deployment, DB tables, and Nginx configs. |
| System OS | systemctl |
sudo systemctl [action] [svc] |
status, restart, reload |
Interacts directly with the OS daemon managing your Ghost instance. |
| System OS | nginx |
sudo nginx -t |
-t (test), -s reload |
Tests Nginx configuration syntax prior to applying live reloads. |
| System OS | ufw |
sudo ufw allow [port] |
80/tcp, 443/tcp, 'Nginx Full' |
Configures system firewall to allow web traffic while keeping server tight. |
| System OS | chown/chmod |
sudo chown -R ghost:ghost [path] |
-R (recursive) |
Fixes permission errors blocking Ghost setup or image uploads. |
aaPanel is ideal if you want to run Ghost alongside PHP applications, WordPress, or multiple websites on a single DigitalOcean Droplet using a visual control panel.
1. Install aaPanel Engine on Ubuntu VPS
Execute the official installation script on a fresh Ubuntu LTS Droplet:
URL=https://www.aapanel.com/script/install_6.0_en.sh && if [ -f /usr/bin/curl ]; then curl -sSO $URL; else wget -O install_6.0_en.sh $URL; fi && bash install_6.0_en.sh forum
2. Install Core Stack & Node Manager
Log into your aaPanel dashboard. Select LNMP Stack (Nginx, MySQL 8.0). Then head to App Store → Search & Install Node.js Version Manager.
3. Set Node.js Version & Install CLI Global
Open Node Manager, select Node LTS (v18 or v20), set it as Command Line / Global. In the terminal, run:
npm install ghost-cli@latest -g
4. Provision Database & App Directory
Go to Databases → Add MySQL Database (note the DB Name, User, and Password). Then open Terminal and run:
mkdir -p /www/wwwroot/yourdomain.com
cd /www/wwwroot/yourdomain.com
ghost install --no-setup-nginx --no-setup-ssl
5. Configure Reverse Proxy & SSL in aaPanel
In aaPanel: Website → Add Site (Domain) → Open Site Settings → SSL (Apply Let's Encrypt). Then go to Reverse Proxy → Add Proxy → Target URL: http://127.0.0.1:2368.
The official production method recommended by Ghost core engineering. Maximum efficiency, native Systemd integration, and automated Let's Encrypt SSL management.
1. OS Prep & Sudo User Creation
Ghost CLI strictly forbids running installation tasks directly as the root superuser.
sudo apt update && sudo apt upgrade -y
adduser ghostuser
usermod -aG sudo ghostuser
su - ghostuser
2. Install Nginx, MySQL & Node.js
# Install Nginx & MySQL
sudo apt install nginx mysql-server -y
# Add NodeSource Repository (Node v18 LTS)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# Install Ghost CLI
sudo npm install ghost-cli@latest -g
3. Configure MySQL Root Password
sudo mysql
# Inside MySQL Prompt:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourSecurePassword123!';
FLUSH PRIVILEGES;
EXIT;
4. Execute Ghost Interactive Installer
sudo mkdir -p /var/www/ghost
sudo chown ghostuser:ghostuser /var/www/ghost
sudo chmod 775 /var/www/ghost
cd /var/www/ghost
# Launch wizard
ghost install
Primary configuration structure located at /var/www/ghost/config.production.json:
{
"url": "https://yourdomain.com",
"server": {
"port": 2368,
"host": "127.0.0.1"
},
"database": {
"client": "mysql",
"connection": {
"host": "127.0.0.1",
"user": "ghost_user",
"password": "db_password",
"database": "ghost_prod"
}
},
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"port": 587,
"auth": {
"user": "postmaster@yourdomain.com",
"pass": "your_mailgun_password"
}
}
},
"logging": {
"transports": ["file", "stdout"]
},
"process": "systemd"
}
-
UFW Firewall Rules:
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable -
Fix Ghost File Permissions:
sudo find . -type d -exec chmod 775 {} \; sudo find . -type f -exec chmod 664 {} \; sudo chown -R ghostuser:ghostuser /var/www/ghost -
Increase Nginx Upload Limit:
Add
client_max_body_size 50M;inside/etc/nginx/sites-available/yourdomain.com.confto allow large publication asset uploads.
| Publication / Organization | Category | Direct Website Link | Notable Details & Infrastructure |
|---|---|---|---|
| OpenAI Blog | AI & Tech Giant | openai.com/blog | Powers research announcements & global AI release updates on headless Ghost. |
| Cloudflare Blog | Web Infrastructure | blog.cloudflare.com | Scales security research & outage breakdowns to millions of concurrent reads. |
| 404 Media | Independent Media | 404media.co | Journalist-owned digital media company fully funded by Ghost subscriptions & memberships. |
| Buffer Resources | SaaS Giant | buffer.com/resources | Social media leader's main marketing engine & content publication platform. |
| Troy Hunt (Have I Been Pwned) | Cybersecurity | troyhunt.com | High-traffic personal security blog protected by Cloudflare edge caching on Ghost. |
| Ethereum Foundation | Crypto / Web3 | blog.ethereum.org | Official technical communications and core protocol updates for the Ethereum network. |
| Duolingo Blog | EdTech | blog.duolingo.com | Language learning insights, product releases, and engineering culture publication. |
| Revolut Blog | Fintech | revolut.com/blog | Multilingual fintech hub delivering global financial updates and feature guides. |
| Tinder Tech Blog | Engineering | tech.gotinder.com | Deep-dive technical blog exploring high-scale matching algorithms and cloud architecture. |
| Rest of World | Global Tech Journalism | restofworld.org | Non-profit journalism publication reporting on technology's impact outside western markets. |
| Lever News | Investigative News | levernews.com | Reader-supported investigative news outlet running premium subscriptions on Ghost Native. |
| Packy McCormick (Not Boring) | Newsletter / Finance | notboring.co | Top-tier business newsletter generating massive revenue through Ghost email delivery. |
| Item Name | Type | Direct Resource Link | Model / Price | Best Practice & Key Use Case |
|---|---|---|---|---|
| Casper | Official Theme | github.com/TryGhost/Casper | Free / Open Source | Default Ghost theme. Clean magazine-style design, optimized out of the box for fast load times. |
| Source | Official Theme | github.com/TryGhost/Source | Free / Open Source | Default subscription theme. Designed specifically for newsletters and membership conversions. |
| Edition | Official Theme | github.com/TryGhost/Edition | Free / Open Source | Minimalist theme built for individual creators, newsletter authors, and personal blogs. |
| Ruby | Official Theme | github.com/TryGhost/Ruby | Free / Open Source | Lightweight theme designed for publications with a heavy emphasis on featured imagery. |
| Journal | Official Theme | github.com/TryGhost/Journal | Free / Open Source | Text-focused, editorial layout suited for essayists, authors, and opinion writers. |
| Liebling | Community Theme | github.com/eddiesigner/liebling | Free / Open Source | Most popular third-party theme. Includes built-in dark mode toggle, multi-language support, and clean layout. |
| Mapache | Premium Theme | ghost.org/themes | Paid | Feature-rich news and magazine theme with high density layout and custom widget areas. |
| Groove | Premium Theme | brightthemes.com | Paid | Modern dark/light membership theme built specifically for tech publications and podcasts. |
| Klar | Premium Theme | aspirethemes.com | Paid | Minimalist theme engineered for fast performance, custom search integration, and dark mode. |
| Nur | Premium Theme | aspirethemes.com | Paid | Clean design tailored for personal branding, consultants, and premium newsletters. |
| Mailgun | Core Integration | mailgun.com | Freemium / Paid | Official bulk email delivery API required by Ghost to dispatch newsletter campaigns. |
| Plausible Analytics | Analytics Plugin | plausible.io | Open Source / Paid | Lightweight (<1KB script), privacy-focused alternative to GA4. Inject script into Ghost Header. |
| Fathom Analytics | Analytics Plugin | usefathom.com | Paid | GDPR-compliant, cookieless analytics platform. Fast script execution via Code Injection. |
| Google Analytics 4 | Analytics Plugin | analytics.google.com | Free | Standard enterprise tracking. Paste `gtag.js` into Site Settings → Code Injection. |
| Pagefind | Search Engine | pagefind.app | Free / Open Source | Ultra-fast static search library that indexes Ghost static assets with near-zero overhead. |
| Algolia | Search Engine | algolia.com | Freemium | Instant real-time search engine for high-content publications using Ghost Webhooks. |
| Ghost-Search | Search Plugin | github.com/jamessw/ghost-search | Free / Open Source | Client-side search plugin leveraging the Ghost Content API directly. |
| Native Ghost Comments | Comment Plugin | ghost.org/docs | Built-in | Native membership-gated commenting system included in Ghost core. |
| Cove Comments | Comment Plugin | cove.chat | Paid | Commenting tool built exclusively for Ghost members using Ghost OAuth. |
| Discourse | Community Forum | discourse.org | Open Source / Paid | Embed forum discussion threads directly underneath Ghost blog posts. |
| Remark42 | Comment Plugin | remark42.com | Free / Open Source | Self-hosted, lightweight commenting engine with privacy focus and social login. |
| n8n Workflow Automation | Automation | n8n.io | Open Source / Paid | Self-hostable Zapier alternative. Connect Ghost webhooks to Discord, Telegram, or databases. |
| Zapier Integration | Automation | zapier.com | Freemium | Automate cross-posting to social networks when new Ghost posts are published. |
| Make.com | Automation | make.com | Freemium | Visual workflow builder for complex webhook routing, subscriber syncing, and CRM triggers. |
| Cloudflare R2 Adapter | Storage Plugin | github.com | Free / Open Source | Offload uploaded media assets to Cloudflare R2 bucket with zero egress fees. |
| AWS S3 Storage Adapter | Storage Plugin | github.com | Free / Open Source | Offload images to Amazon S3 bucket to save local VPS disk space. |
Headless Ghost Configuration
Disconnect the front-end Handlebars theme entirely and consume Ghost strictly as a Headless CMS via the Content API using Next.js, Astro, or Nuxt for ultimate performance.
Newsletter Deliverability Optimization
Always set up custom SPF, DKIM, and DMARC DNS records inside your DNS provider (e.g., Cloudflare) matching your Mailgun domain to guarantee 99%+ inbox placement.
Automated Daily MySQL Offsite Backups
Schedule a cron job using mysqldump coupled with AWS CLI or Cloudflare R2 to automatically package and offload daily database snapshots offsite.
Cloudflare R2 Storage Adapter
Avoid filling up your VPS SSD storage by replacing Ghost's local image storage with an S3/R2 storage adapter plugin for unlimited media asset scaling.