Marketplace
Blogs and Forums

Ghost

Modern publishing platform on Node.js and MySQL.

Deploy this app

About

Installs Node.js, MySQL and Ghost via the official Ghost-CLI, running Ghost locally on port 2368 behind Nginx.

Once you point a domain at this instance's floating IP, SSH in, cd /var/www/ghost and run: ghost setup ssl. Admin account is created from the setup wizard at first visit.

Ports opened by the installer

80/tcp · HTTP

Install script (runs as cloud-init user-data on first boot)

#!/bin/bash
set -e
export DEBIAN_FRONTEND=noninteractive
apt-get update -y
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt-get install -y nodejs mysql-server nginx
npm install -g ghost-cli@latest
DB_PASS=$(openssl rand -base64 18 | tr -dc 'A-Za-z0-9')
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$DB_PASS'; FLUSH PRIVILEGES;"
mkdir -p /var/www/ghost
chown ubuntu:ubuntu /var/www/ghost 2>/dev/null || true
chmod 775 /var/www/ghost
cd /var/www/ghost
su - ubuntu -c "cd /var/www/ghost && ghost install local --db mysql --dbhost localhost --dbuser root --dbpass '$DB_PASS' --no-prompt" 2>/dev/null || \
  ghost install --db mysql --dbhost localhost --dbuser root --dbpass "$DB_PASS" --url http://localhost --process systemd --no-prompt --no-stack
echo "MySQL root password: $DB_PASS" > /root/ghost-credentials.txt

Minimum requirements

vCPU
1
Memory
2 GB
Disk
20 GB
Base image
ubuntu