BLOG POSTS
    MangoHost Blog / How to Install Ghost CMS with DigitalOcean Marketplace One-Click
How to Install Ghost CMS with DigitalOcean Marketplace One-Click

How to Install Ghost CMS with DigitalOcean Marketplace One-Click

Ghost CMS is a powerful, modern publishing platform built on Node.js that offers exceptional performance and a clean editorial experience. With DigitalOcean’s one-click marketplace deployment, you can get Ghost running in under 10 minutes without diving deep into server configuration and dependency management. This guide walks you through the entire installation process, from initial droplet creation to final configuration, plus troubleshooting the gotchas that typically trip up first-time installers.

How DigitalOcean’s Ghost One-Click Installation Works

DigitalOcean’s Ghost marketplace app automatically provisions a complete Ghost stack on Ubuntu 22.04. Behind the scenes, it installs Node.js 18, Nginx as a reverse proxy, MySQL 8.0, and Ghost CLI with SSL certificate support through Let’s Encrypt. The automated setup also configures systemd services, firewall rules, and basic security hardening.

The installation process uses Ghost CLI’s production setup mode, which differs significantly from development installations. It creates a dedicated ‘ghost’ user, sets proper file permissions, and establishes a robust process management system through PM2. This approach ensures your Ghost instance runs reliably in a production environment from day one.

Step-by-Step Installation Guide

Start by logging into your DigitalOcean dashboard and clicking “Create” β†’ “Droplets”. In the marketplace tab, search for “Ghost” and select the official Ghost CMS application.

Choose your droplet specifications based on expected traffic:

Traffic Level Recommended Droplet Monthly Cost RAM Storage
Personal blog (<1K visitors/month) Basic – $6/month $6 1GB 25GB SSD
Small business (<10K visitors/month) Regular – $18/month $18 2GB 50GB SSD
Growing publication (<100K visitors/month) General Purpose – $48/month $48 8GB 160GB SSD

After selecting your droplet size, choose a datacenter region closest to your primary audience. Add your SSH key for secure access – avoid password-only authentication for production deployments.

Once the droplet boots (typically 2-3 minutes), SSH into your server:

ssh root@your_droplet_ip

The Ghost installation runs automatically on first boot. Monitor the installation progress by checking the cloud-init logs:

tail -f /var/log/cloud-init-output.log

When installation completes, you’ll see a message indicating Ghost is running. The automatic setup creates configuration files at /var/www/ghost/config.production.json with database credentials and basic settings.

Access your Ghost admin panel by navigating to http://your_droplet_ip/ghost in your browser. Complete the initial setup by creating your admin account – use a strong password and consider enabling two-factor authentication immediately.

Domain Configuration and SSL Setup

Ghost’s one-click installation includes SSL certificate automation, but you need to configure your domain first. Point your domain’s A record to your droplet’s IP address, then update Ghost’s configuration:

cd /var/www/ghost
ghost config url https://yourdomain.com
ghost setup ssl

The SSL setup command automatically obtains Let’s Encrypt certificates and configures Nginx. If you encounter certificate generation failures, verify your domain DNS propagation:

dig yourdomain.com
nslookup yourdomain.com

For domains with recent DNS changes, wait 24-48 hours for full propagation before attempting SSL setup. You can temporarily test Ghost functionality using the droplet’s IP address.

Real-World Use Cases and Examples

Ghost excels in several scenarios where WordPress might feel bloated or overly complex. Technical teams often choose Ghost for documentation sites, leveraging its clean Markdown editor and fast performance. The platform’s REST API makes it ideal for headless CMS implementations with React or Vue.js frontends.

Performance benchmarks consistently show Ghost delivering pages 2-3x faster than comparable WordPress sites. A typical Ghost installation serves 100 concurrent users on a $18/month droplet, while equivalent WordPress performance requires more resources.

Publishers appreciate Ghost’s member management and subscription features. Unlike WordPress membership plugins, Ghost’s built-in monetization tools integrate seamlessly with Stripe for paid subscriptions and support complex membership tiers without additional plugins.

Ghost vs Alternative CMS Platforms

Feature Ghost WordPress Strapi Contentful
Setup Time 10 minutes 15-30 minutes 20-45 minutes 5 minutes (SaaS)
Resource Usage Low Medium-High Medium N/A (hosted)
Built-in SEO Excellent Good (with plugins) Basic API-dependent
Membership Features Native Plugin-dependent Custom development Third-party integration
Headless Capability Full API support REST API available API-first API-first

Ghost’s focused approach means fewer customization options than WordPress, but significantly better performance and security out of the box. For pure publishing needs, Ghost’s streamlined interface reduces content creation friction compared to more complex CMSs.

Common Pitfalls and Troubleshooting

Memory exhaustion is the most frequent issue with Ghost installations. If your site becomes unresponsive, check available memory:

free -m
htop

Ghost requires approximately 150MB RAM minimum. On 1GB droplets, create a swap file to prevent crashes during traffic spikes:

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Database connection errors typically indicate MySQL service issues. Restart the database service and check Ghost’s configuration:

sudo systemctl restart mysql
ghost doctor
ghost ls

If Ghost fails to start after configuration changes, examine the detailed logs:

ghost log
journalctl -u ghost_yourdomain-com

Email delivery problems are common with fresh installations. Ghost’s default configuration attempts to use the server’s local mail system, which most cloud providers block. Configure a transactional email service like Mailgun or SendGrid in your Ghost settings under “Labs” β†’ “Email”.

Performance Optimization and Best Practices

Enable Ghost’s built-in caching and optimize your Nginx configuration for better performance. Edit /etc/nginx/sites-available/yourdomain.com to add browser caching headers:

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

Monitor your Ghost installation’s performance using built-in analytics or external tools. Set up automated backups for both your Ghost content and MySQL database:

#!/bin/bash
# Daily backup script
DATE=$(date +%Y%m%d)
ghost export --file /backups/ghost-$DATE.json
mysqldump ghost_production > /backups/mysql-$DATE.sql

Consider integrating with CDN services like Cloudflare for global content delivery and additional security. Ghost’s clean HTML output works exceptionally well with CDN caching, often achieving 95%+ cache hit rates.

For scaling beyond single-server deployments, Ghost supports database clustering and can run behind load balancers. However, most publications find single-server deployments sufficient until reaching 500K+ monthly visitors.

Security maintenance involves regular Ghost updates through the CLI and monitoring server logs for suspicious activity. Enable automatic security updates for Ubuntu packages and consider implementing fail2ban for additional protection against brute force attacks.

The official Ghost documentation provides comprehensive guides for advanced configurations, theme development, and API integration. For hosting alternatives to DigitalOcean, consider MangoHost VPS options or dedicated servers for high-traffic publications requiring maximum control and performance.



This article incorporates information and material from various online sources. We acknowledge and appreciate the work of all original authors, publishers, and websites. While every effort has been made to appropriately credit the source material, any unintentional oversight or omission does not constitute a copyright infringement. All trademarks, logos, and images mentioned are the property of their respective owners. If you believe that any content used in this article infringes upon your copyright, please contact us immediately for review and prompt action.

This article is intended for informational and educational purposes only and does not infringe on the rights of the copyright owners. If any copyrighted material has been used without proper credit or in violation of copyright laws, it is unintentional and we will rectify it promptly upon notification. Please note that the republishing, redistribution, or reproduction of part or all of the contents in any form is prohibited without express written permission from the author and website owner. For permissions or further inquiries, please contact us.

Leave a reply

Your email address will not be published. Required fields are marked