Deploying on Heroku
To get your own Ghost blog running on Heroku, click the button below:
Fill out the form, and you should be cooking with gas in a few seconds.
Things you should know
After deployment, visit the admin area at
YOURAPPNAME.herokuapp.com/ghostto set up your blog.
Your blog will be publicly accessible at
To make changes to your Ghost blog (like adding a theme to the
/contentdirectory, for instance), clone your blog locally using the Heroku Toolbelt:
heroku git:clone --app YOURAPPNAME
What do I put in the deployment and environment variable fields?
App name (required). Pick a name for your application. Heroku says this field is optional, but it’s easier if you choose a name here, because you need to specify the URL of your blog in the first config field anyway. You can add a custom domain later if you want, but this is the name of the application you’ll see in your Heroku dashboard.
Heroku URL (required). Take the name of your Heroku application, and put it into URL form. For example, if you choose
my-ghost-blogas the app name, the Heroku URL config value needs to be
http://my-ghost-blog.herokuapp.com(no trailing slash). If you subsequently set up a custom domain for your blog, you’ll need to update your Ghost blog’s
HEROKU_URLenvironment variable accordingly.
Using with file uploads disabled
Heroku app filesystems aren’t meant for permanent storage, so file uploads are disabled by default when using this repository to deploy a Ghost blog to Heroku. If you’re using Ghost on Heroku with S3 file uploads disabled, you should leave all environment variables beginning with
Configuring S3 file uploads
To configure S3 file storage, create an S3 bucket on Amazon AWS, and then specify the following details as environment variables on the Heroku deployment page (or add these environment variables to your app after deployment via the Heroku dashboard):
S3_ACCESS_SECRET_KEY: Required if using S3 uploads. These fields are the AWS key/secret pair needed to authenticate with Amazon S3. You must have granted this keypair sufficient permissions on the S3 bucket in question in order for S3 uploads to work.
S3_BUCKET_NAME: Required if using S3 uploads. This is the name you gave to your S3 bucket.
S3_BUCKET_REGION: Required if using S3 uploads. Specify the region the bucket has been created in, using slug format (e.g.
eu-west-1). A full list of S3 regions is available here.
S3_ASSET_HOST_URL: Optional, even if using S3 uploads. Use this variable to specify the S3 bucket URL in virtual host style, path style or using a custom domain. You should also include a trailing slash (example
https://my.custom.domain/). See this page for details.
Once your app is up and running with these variables in place, you should be able to upload images via the Ghost interface and they’ll be stored in Amazon S3.
Provisioning an S3 bucket using an add-on
If you’d prefer not to configure S3 manually, you can provision the Bucketeer add-on to get an S3 bucket (Bucketeer starts at $5/mo).
To configure S3 via Bucketeer, leave all the S3 deployment fields blank and deploy your Ghost blog. Once your blog is deployed, run the following commands from your terminal:
heroku addons:create bucketeer --app YOURAPPNAME
The environment variables set by the add-on will be automatically detected and used to configure your Ghost blog and enable uploads.
How this works
This repository is essentially a minimal web application that specifies Ghost as a dependency, and makes a deploy button available.
After deploying your own Ghost blog, you can update it by running the following commands:
heroku git:clone --app YOURAPPNAME && cd YOURAPPNAME git remote add origin https://github.com/peterdemartini/ghost-on-heroku git pull origin master # may trigger a few merge conflicts, depending on how long since last update git push heroku master
This will pull down the code that was deployed to Heroku so you have it locally, attach this repository as a new remote, attempt to pull down the latest version and merge it in, and then push that change back to your Heroku app instance.
If you have problems using your instance of Ghost, you should check the official documentation or open an issue on the official issue tracker. If you discover an issue with the deployment process provided by this repository, then open an issue here.
Released under the MIT license, just like the Ghost project itself.