This is a fork with some improvements from https://github.com/cobyism/ghost-on-heroku. I have forked and improved this repository as the original developer seemed to have abandoned his repo recently. In this repository I have upgraded ghost to ghost 2.X and added cloudinary as a free storage alternative to amazon's s3. If you are still interested with the ghost 1.0 version please visit the original repository.
The latest release of Ghost is now supported! Changes include:
PUBLIC_URLconfig var renamed to
APP_PUBLIC_URLto give it alphabetical precedence
The following video is a step by step tutorial:
https://YOURAPPNAME.herokuapp.com/ghostto set up your admin account
APP_PUBLIC_URLenvironment variable accordingly
If your Ghost app needs to support substantial traffic, then use a CDN add-on:
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 cloudinary and S3 file uploads disabled, you should leave all environment variables beginning with
Note: You want to use either CLOUDINARY or S3 for the file upload feature. Cloudinary provides free starter account, to get yours signup here
To configure cloudinary file storage, create a cloudinary account here, 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):
CLOUDINARY_CLOUD_ID: Required if using cloudinary image uploads. This fields is your cloudinary cloud_name or username. You can find it at your cloudinary dashboard. If you dont have a cloudinary account yet signup here
CLOUDINARY_API_KEY: Required if using cloudinary image uploads. This is the cloudinary API KEY. You can find it at your cloudinary dashboard. If you dont have a cloudinary account yet signup here
CLOUDINARY_API_SECRET: Required if using cloudinary image uploads. This is the cloudinary API SECRET. You can find it at your cloudinary dashboard. If you dont have a cloudinary account yet signup here
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 Cloudinary. ✨
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. ✨
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:
# Provision an Amazon S3 bucket heroku addons:create bucketeer --app YOURAPPNAME # Additionally, the bucket's region must be set to formulate correct URLs # (Find the "Region" in your Bucketeer Add-on's web dashboard.) heroku config:set S3_BUCKET_REGION=us-east-1 --app YOURAPPNAME
This repository is a Node.js web application that specifies Ghost as a dependency, and makes a deploy button available.
Optionally after deployment, to push Ghost upgrades or work with source code, clone this repo (or a fork) and connect it with the Heroku app:
git clone https://github.com/snathjr/ghost-on-heroku cd ghost-on-heroku heroku git:remote -a YOURAPPNAME heroku info
Then you can push commits to the Heroku app, triggering new deployments:
git add . git commit -m "Important changes" git push heroku master
Watch the app's server-side behavior to see errors and request traffic:
heroku logs -t
See more about deploying to Heroku with git.
This repository locks Ghost to the "last tested good version" using the standard
yarn.lock file. If you want to upgrade Ghost on your own,
you will need to clone or fork this repo as described above. You will then be able to run:
yarn upgrade ghost git add package.json yarn.lock git commit -m 'Update dependencies' git push heroku master
If you're worried about packages beyond the root
ghost server being outdated, you can check using
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.