Giter VIP home page Giter VIP logo

snathjr / ghost-on-heroku Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cobyism/ghost-on-heroku

231.0 14.0 256.0 24.12 MB

One-button Heroku deploy for the Ghost 3.2.0 blogging platform.

Home Page: https://snathjr.github.io/ghost-on-heroku/

License: Other

Shell 11.49% JavaScript 88.51%
ghost ghost-blog cloudinary blog ghost-cloudinary-storage journalism publishing blogging web-application cms heroku

ghost-on-heroku's Introduction

Ghost is a free, open, simple blogging platform. Visit the project's website at http://ghost.org, or read the docs on http://support.ghost.org.

GitHub issues GitHub forks GitHub stars Deploy to Heroku

Disclaimer

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 3.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.

Ghost version 3.X

IMPORTANT: Ghost On Heroku will be bumped to 4.0 soon. Legacy versions are available on separate branch.

The latest release of Ghost is now supported! Changes include:

  • Requires MySQL database, available through either of two add-ons:
  • PUBLIC_URL config var renamed to APP_PUBLIC_URL to give it alphabetical precedence
  • The app is configured to use Cloudinary File Storage by default.
  • Dark Mode on casper theme! Please make sure to activate your system's dark-mode first.

Deploy

Deploy

If the above button does not work for you, disable anything that might be blocking Heroku from inferring the referrer (e.g. Brave shield), or try this: https://heroku.com/deploy?template=https://github.com/snathjr/ghost-on-heroku (if you're using a fork, make sure to point the template link to your repo).

NOTE: we do not support deploying by downloading the source file or by copying over a cloned folder. Downloading/copying folders tends to break symlinks, so we recommend that you deploy by clicking the button in this repository or your fork on GitHub.

step-by-step tutorial

The following video is a step by step tutorial:

thumbnail

Things you should know

After deployment,

  • First, visit Ghost at https://YOURAPPNAME.herokuapp.com/ghost to set up your admin account
  • The app may take a few minutes to come to life
  • Your blog will be publicly accessible at https://YOURAPPNAME.herokuapp.com
  • If you subsequently set up a custom domain for your blog, you’ll need to update your Ghost blog’s APP_PUBLIC_URL environment variable accordingly
  • If you create a lot of content or decide to scale-up the dynos to support more traffic, a more substantial, paid database plan will be required.

🚫🔻 Do not scale-up beyond a single dyno

Ghost does not support multiple processes.

If your Ghost app needs to support substantial traffic, then use a CDN add-on:

Configuring S3 file uploads

The blog is configured to use Cloudinary file storage by default. If you want 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_KEY_ID and 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. us-east-1, 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:

# 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

Configuring WebDAV file uploads

As an alternative to S3 and Cloudinary, you can also use your own WebDAV server, via the ghost-webdav-adapter plugin. To use these, simply 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):

  • WEBDAV_SERVER_URL: Required if using WebDAV uploads. The URL to access your WebDAV server. Note that this requires the https format (not dav:// or davs://). Example: https://mysite.com:2078.

  • WEBDAV_USERNAME and WEBDAV_PASSWORD: Optional even if using WebDAV uploads. These are the username and password used to log in to your WebDAV account. Unless you're using an open and unsecured server, you'll probably need to set these options too.

  • WEBDAV_PATH_PREFIX: Optional even if using WebDAV uploads. Subfolder on the WebDAV server where you want to store the files. Defaults to the main directory or /. Example: /ghost-uploads.

  • WEBDAV_STORAGE_PATH_PREFIX: Optional even if using WebDAV uploads. This is the location where the public will be able to access the uploaded file. Defaults to content/, which makes Ghost server the files for you, but can also be an external domain such as https://media.mysite.com/ghost-files.

The difference between WEBDAV_PATH_PREFIX and WEBDAV_STORAGE_PATH_PREFIX is this: you upload the files to WEBDAV_PATH_PREFIX via WebDAV, but you download them from WEBDAV_STORAGE_PATH_PREFIX using ordinary HTTP.

For more detailed information, you can refer to the ghost-webdav-adapter repo

Known Issue

There is a bug (that only occurs sometimes): when uploading a file to a subdirectory, it creates one level of the directory and then fails, so you have to retry to get to the next level. For example: if it wants to save the file 2020/06/12/example.jpg but only the 2020 folder exists, then it will take three tries (refresh the page and upload again) to get it working:

  • create 2020/06 and fail
  • create 2020/06/12 and fail
  • upload the file to 2020/06/12/example.jpg

This seems to be a bug in the storage adapter plugin itself (yet to be reported).

Note: Remember to refresh the page on each retry. Retrying without refreshing the page does not seem to work. If you don't succeed after 3-4 tries, there might be something else wrong with your configuration.

Setting up SMTP service

When you spin up your heroku dyno for the first time, mailgun is by default setup with a sandbox account. It means, sending emails to only authorized reciepients is supported. If you want to send emails / invite your collaborators you need to set their email in authorized recipient section on mailgun dashboard. See https://help.mailgun.com/hc/en-us/articles/217531258-Authorized-Recipients for more.

A more permanent solution would be to use a custom domain and verify your domain via mailgun customer support. Cheers!

FYI: You can access mailgun dashboard by visiting heroku dashboard > click on your app > resources tab > click on mailgun addon.

Dark Mode is now available

As of version 3.0.0 Dark mode is available on Ghost Casper theme. Please make sure your's system's dark mode is enabled first to activate dark mode.

How this works

This repository is a Node.js web application that specifies Ghost as a dependency, and makes a deploy button available.

  • Ghost and Casper theme versions are declared in the Node app's package.json
  • Versions are locked and managed using npm
  • Scales across processor cores in larger dynos via Node cluster API

Updating source code

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.

Upgrading Ghost

This repository locks Ghost to the "last tested good version" using the standard package-lock.json 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:

npm upgrade ghost
git add package.json package-lock.json
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 npm outdated.

Problems?

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.

License

Released under the MIT license, just like the Ghost project itself.

ghost-on-heroku's People

Contributors

aayushdutt avatar aorcsik avatar awendt avatar badrihippo avatar bastilian avatar blaze33 avatar browniefed avatar cancan101 avatar cobyism avatar csquared avatar elementalvoid avatar erictherobot avatar holic avatar janejeon avatar janraasch avatar jiashuw avatar kevin-stripe avatar mars avatar octave avatar philippbosch avatar pross avatar rstrangh avatar saulshanabrook avatar snathjr avatar surfacedamage avatar vinvasir avatar waterloo avatar zackdotcomputer avatar zhenkyle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ghost-on-heroku's Issues

How to remove Mailgun from the list of addons

When I try to deploy ghost on my heroku account it tells me that I need further verification, which I'm unable to make because Horeku doesn't accept my phone number unfortunately : https://tools.heroku.support/addons-verification

Even though I've added a credit card to my account so it's a verified account.

How can I remove Mailgun from the template completely (Email is not that important in my case), I tried to remove it from app.json in a fork but with no success.

I've been trying to install ghost on heroku for more than a week with no success at all :/

Error when pushing to Heroku: Host key verification failed

Describe your problem
When I try to run the following commands:

npm upgrade ghost
git add package.json package-lock.json
git commit -m 'Update dependencies'
git push heroku master

I get an error when pushing to Heroku

Describe the things you have tried so far

I've tried searching how to resolve the conflicts but to no avail. I think there is an issue with some of the theming
Attaching the build log

-----> Installing dependencies
       Installing node modules
       npm ERR! Error while executing:
       npm ERR! /usr/bin/git ls-remote -h -t ssh://[email protected]/mityalebedev/The-Shell.git
       npm ERR! 
       npm ERR! Host key verification failed.
       npm ERR! fatal: Could not read from remote repository.
       npm ERR! 
       npm ERR! Please make sure you have the correct access rights
       npm ERR! and the repository exists.
       npm ERR! 
       npm ERR! exited with error code: 128

Have you checked for similar issues?
Yes, I found the same issue closed from a few days ago without answer

Change the database

Describe your problem
I can't make another database work.

Describe the things you have tried so far
I changed the database in the environment variables, the variables in the deploy, I even deployed in one click with a fork on the other database MYSQL_DATABASE_URL.

Have you checked for similar issues?
Yes, no issue about it.

Additional context
The error I get when the app its creating the tables is ...

Mar 27 08:38:54 literalmente heroku/web.1 State changed from starting to crashed
Mar 27 08:38:54 literalmente heroku/web.1 Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Mar 27 08:38:54 literalmente heroku/web.1 Stopping process with SIGKILL
Mar 27 08:38:54 literalmente heroku/web.1 Process exited with status 137
Mar 27 08:38:56 literalmente heroku/router at=error code=H10 desc="App crashed" method=GET path="/" host=literalmente.herokuapp.com request_id=3d02878d-acbb-4581-883c-3e0649312dc0 fwd="181.47.85.18" dyno= connect= service= status=503 bytes= protocol=https

Changing APP_PUBLIC_URL has no effect

My initial deploy to Heroku left the 'YOURAPPNAME' variable blank. This worked, except for certain links that now point to yourappname.herokuapp.com (such as the HOME link in my theme, or the 'View Site' link Ghost admin.

I've changed the APP_PUBLIC_URL variable in "app.json", which I've commited and pushed to Heroku. However this does not change anything. For the moment I'm not looking at using a custom domain yet, just a valid herokuapp subdomain, however in the near future I would like to move the whole setup to a custom domain as well.

Help ?

How many visitors per month and blog posts will this setup handle?

Describe your problem
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Hello, trying this approach with installing ghost. How much traffic will it handle? I have a site with around 5-10K monthly visits. And around 300 blogs? Would it work ok?

Describe the things you have tried so far
A clear and concise description of what you have done, like googled and tried or searched on stack overflow and tried

Have you checked for similar issues?
If you have not checked out other issues first on this repository or tryghost/ghost repository. Please do so before submitting.

Additional context
Add any other context or screenshots about the support you need here.

Access Key Id you provided does not exist in our records.

Hello SNathJr,
Im facing an unusual error whilst using API Keys from Cloudinary dashboard.

I have tried several times to config and deploy the app but uploading images post install does not work and throws this error on screen - "Access Key Id you provided does not exist in our records."
https://heroku.com/deploy?template=https://github.com/snathjr/ghost-on-heroku

I have also added cloudname preinstall and changed Cloudinary URL post install Ghost CMS on heroku. Backend Cloudinary dashboard added site URL as well but that does not seem to work either.

Please provide me a step by step method to activate these keys. In other words of you could make it idiot proof.

I need to map my custom domain and ssl on a free plan as well. If anyone can create a YouTube video about the process.

Scripts not running

Hi, just tried to deploy. Any idea of how to get around the below (happens when scripts are run in Heroku)?

Got this:

Initializing the deployment…
pwd →
/app
config.production.json →
cat: config.production.json: No such file or directory
Awaiting MySQL database…
Database connected.
[2020-01-09 16:18:50] �[31mERROR�[39m connect ECONNREFUSED 127.0.0.1:3306
�[31m
�[31mconnect ECONNREFUSED 127.0.0.1:3306�[39m

�[33m"Unknown database error"�[39m

�[1m�[37mError ID:�[39m�[22m
    �[90m500�[39m

�[1m�[37mError Code: �[39m�[22m
    �[90mDATABASE_CREATION_FAILED�[39m

�[90m----------------------------------------�[39m

�[90mDatabaseError: connect ECONNREFUSED 127.0.0.1:3306
    at DatabaseError.KnexMigrateError (/app/node_modules/knex-migrator/lib/errors.js:7:26)
    at new DatabaseError (/app/node_modules/knex-migrator/lib/errors.js:55:26)
    at /app/node_modules/knex-migrator/lib/database.js:126:19
    at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:517:31)
    at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:574:18)
    at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:619:10)
    at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:695:18)
    at _drainQueueStep (/app/node_modules/bluebird/js/release/async.js:138:12)
    at _drainQueue (/app/node_modules/bluebird/js/release/async.js:131:9)
    at Async._drainQueues (/app/node_modules/bluebird/js/release/async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/app/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:705:18)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)

DatabaseError: connect ECONNREFUSED 127.0.0.1:3306
    at DatabaseError.KnexMigrateError (/app/node_modules/knex-migrator/lib/errors.js:7:26)
    at new DatabaseError (/app/node_modules/knex-migrator/lib/errors.js:55:26)
    at connection.raw.catch (/app/node_modules/knex-migrator/lib/database.js:47:19)
    at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:517:31)
    at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:574:18)
    at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:619:10)
    at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:695:18)
    at _drainQueueStep (/app/node_modules/bluebird/js/release/async.js:138:12)
    at _drainQueue (/app/node_modules/bluebird/js/release/async.js:131:9)
    at Async._drainQueues (/app/node_modules/bluebird/js/release/async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/app/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:705:18)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)

Error: connect ECONNREFUSED 127.0.0.1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
    --------------------
    at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/app/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/app/node_modules/mysql/lib/Connection.js:119:18)
    at _bluebird.default (/app/node_modules/knex-migrator/node_modules/knex/lib/dialects/mysql/index.js:82:18)
    at Promise._execute (/app/node_modules/bluebird/js/release/debuggability.js:313:9)
    at Promise._resolveFromExecutor (/app/node_modules/bluebird/js/release/promise.js:488:18)
    at new Promise (/app/node_modules/bluebird/js/release/promise.js:79:10)
    at Client_MySQL.acquireRawConnection (/app/node_modules/knex-migrator/node_modules/knex/lib/dialects/mysql/index.js:77:12)
    at create (/app/node_modules/knex-migrator/node_modules/knex/lib/client.js:282:21)
    at utils_1.tryPromise (/app/node_modules/tarn/lib/Pool.js:315:34)
    at Object.tryPromise (/app/node_modules/tarn/lib/utils.js:53:24)
    at Promise (/app/node_modules/tarn/lib/Pool.js:315:17)
    at Promise._execute (/app/node_modules/ghost/node_modules/bluebird/js/release/debuggability.js:427:9)
    at Promise._resolveFromExecutor (/app/node_modules/ghost/node_modules/bluebird/js/release/promise.js:518:18)
    at new Promise (/app/node_modules/ghost/node_modules/bluebird/js/release/promise.js:103:10)
    at callbackOrPromise (/app/node_modules/tarn/lib/Pool.js:306:12)
    at Pool._create (/app/node_modules/tarn/lib/Pool.js:236:9)
    at Pool._doCreate (/app/node_modules/tarn/lib/Pool.js:208:36)
    at Pool._tryAcquireOrCreate (/app/node_modules/tarn/lib/Pool.js:159:18)
    at Pool.acquire (/app/node_modules/tarn/lib/Pool.js:85:14)
    at _bluebird.default.try (/app/node_modules/knex-migrator/node_modules/knex/lib/client.js:333:50)
    at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)�[39m
�[39m

Redirect json file is missing after dyno restarts

Ghost has option to upload redirects.json to handle redirection of old link to new link.
image

but after Heroku dyno restarts, the previously uploaded file is replaced with the empty file.

How can I handle this?

Latest commits breaks ghost

Error: Cannot find module './node_modules/ghost/core/server/services/url'

caused by ccef87e - when I run ls node_modules/ghost/core/server/services, I only see:

apps invitations mail permissions slack.js xmlrpc.js auth labs.js members settings webhooks (and this is after I ran npm install --production again)

Updating theme with Disqus

Describe your problem
Updating casper theme on Heroku doesn't impact the change.

Describe the things you have tried so far
I've updated post.hbs file and uploaded that to github and pushed on heroku. I feel the problem is that somehow it's not taking my modified theme into account.

Is there a configuration file to tell it to take my custom theme into production?

Have you checked for similar issues?
Yes

Additional context
Thank you for sharing this repo I could have it online in no time !

Modifying routes.yaml in theme (Lyra - a supported one), vs. modifying content>settings>routes.yaml

Describe your problem
Finding inconsistencies should I change routes.yaml in the theme (Lyra) vs changing the content > settings > routes.yaml.

Describe the things you have tried so far
How to reproduce:

Send two emails out with Ghost's send email feature.

Add the following to Lyra specific routes.yaml (under collections)

  /newsletter/:
            permalink: /{slug}/
            template: index

you get this:

Screenshot 2020-01-27 at 17 17 51

The cool thing is that those two “emails” are actually emails that were successfully sent out, so that part of my objective is working.

Issue: the header banner does not work and I get a 404 error.

Now, should I, instead, add the same to content > settings > routes.yaml (under collections)

/newsletter/:
               permalink: /{slug}/
               template: index

I get a working header banner, it renders, but the sent newsletters won’t show up, it will be empty of content. The “emails” that were sent out do not load as list.

Screenshot 2020-01-27 at 17 46 53

The same happens (working banner but no newsletter content) if I modify both Lyra’s routes.yaml and content > settings > routes.yaml.

Would love any pointers on how to fix this.

Again, the objective is : working banner and list of emails sent out underneath it

Have you checked for similar issues?
Yes

Additional context
I’m following these instructions to add a newsletter directory:
https://ghost.org/docs/members/recipes/#newsletter-directory

Objective: working banner and list of emails sent out underneath it.

Trying to implement a newsletter archive page similar to
https://publisherweekly.org/newsletter/

ER_USER_LIMIT_REACHED: User 'xxxx' has exceeded the 'max_questions' resource (current value: 3600)

Describe the bug
With only a couple pages, I am getting this error on the deployed version of Ghost CMS on heroku:
ER_USER_LIMIT_REACHED: User 'xxxx' has exceeded the 'max_questions' resource (current value: 3600)

To Reproduce
Steps to reproduce the behavior:

Add/edit a couple of posts on the Ghost CMS instance. Read the instance APIs using a NextJS front-end stack deployed in Vercel.

Expected behavior
No error should be thrown for seemingly light activities.

How are you deploying this?
Clicked on 'Deploy to Heroku' and followed the setup steps.

How to set up a "direct access" Mailgun account? (i.e. delete the Mailgun Heroku add-on)

Describe the bug
Ghost does not send emails because it needs a proper domain (non-sandbox) added to Mailgun. The Heroku Mailgun add-on does not allow domains to be added . And following a thread of several back and forth emails with Mailgun, it will not be possible to add domains to the Mailgun account created by Heroku. One needs to upgrade and pay some 19USD/month to be able to do so.

A Mailgun account created directly (i.e. going to their website, etc), however, allows domains to be created. So, with that in place, life could be good again :)

So, how can I set up a "direct access" Mailgun account inside Heroku (and subsequently delete the Heroku mailgun add-on)?

To Reproduce
Steps to reproduce the behavior:

  1. Deploy your blog to a custom domain
  2. Go to Ghost admin and turn on "members" inside labs
  3. Pick an appropriate theme, e.g. Lyra
  4. Try to subscribe on your ghost blog, by entering an email address
  5. get “Please enter a valid email address!”

Expected behavior
Ghost sends out emails

How are you deploying this?
One-click deploy from fork

Additional context
Add any other context about the problem here.

Themes keep getting deleted

Hi, I host this on free plan heroku, which means it goes to sleep.

I had a blog working with this before yesterday's updates, but now that I updated the blog, Heroku seems to delete ALL of Ghost's themes every time it goes to sleep.

The only thing that changed was the code, so I'm guessing it's probably this commit - 3e40b8d - that broke it.

Oh, and I should mention - one of the blog uses the default casper theme (with newest version of ghost-on-heroku), and that one doesn't break even on sleep, however the other one uses the London theme (which I upload via zip to install) and when I do that, it works... until it sleeps and deletes the theme (in fact, when it wakes up it says "no theme installed!")

edit: on further investigation, it seems to be an issue with heroku and symlinks? https://stackoverflow.com/questions/10462787/how-do-i-use-npm-link-with-heroku because when I run heroku run ls content/themes, it shows the 5 "installed" themes, but when I boot it up none of the themes are there!

update: npm link didn't help, either...

Forked repo could not be deployed on heroku

First of all many thanks for your job!
I made a fork of this repositry to add another theme to repo (via package.json). After added everything (also updated te file copy-theme.sh) I tried to deploy the app but eveytime I have the same issue:

   npm ERR! Error while executing:
   npm ERR! /usr/bin/git ls-remote -h -t ssh://[email protected]/zutrinken/attila.git
   npm ERR! 
   npm ERR! Host key verification failed.
   npm ERR! fatal: Could not read from remote repository.
   npm ERR! 
   npm ERR! Please make sure you have the correct access rights
   npm ERR! and the repository exists.
   npm ERR! 
   npm ERR! exited with error code: 128
   npm ERR! A complete log of this run can be found in:
   npm ERR!     /tmp/npmcache.ZgWQY/_logs/2020-12-09T02_03_09_071Z-debug.log

have you some suggestions?
Thanks in advance

Add support for Theme upload

Due to the Ephimeral file system of Heroku, currently the admin panel doesn't support uploading the themes directly. If uploaded, the theme would go missing after some time. The only way to use custom theme currently is to commit your themes in the code files and then re publish the application.
It would be good if we could add support for theme upload directly via the admin panel.

Running Ghost Locally?

Thank you for creating this repo! Is it possible to run Ghost locally using their CLI like so: ghost start

If you install the CLI and try to start Ghost:

Working directory is not a recognisable Ghost installation

Thanks

Scheduled Posts Never Go Live

Hello! Scheduled posts used to work with Ghost 2.0 on Heroku - Since upgrading to Ghost 3.0.0 and later 3.2.0 scheduled posts never go live and cause an error (see below).

Is this a known issue? Any suggestions on how to get scheduled posts working on Heroku? Thanks!

Error Message via
Screen Shot 2019-12-19 at 11 44 53 AM
the Heroku Logs

Default installation is crashing with ERROR Unknown Request error: Probe Error: bad status code: 403 for an image request

Hello! I just deployed Ghost to Heroku, and I'm using the default setup with Cloudinary. I haven't made any changes to the repo.

I'm seeing this error in my logs:

2020-04-19T04:40:08.047310+00:00 app[web.1]: [2020-04-19 04:40:08] INFO "GET /ghost/" 200 54ms
2020-04-19T04:40:10.534456+00:00 app[web.1]: [2020-04-19 04:40:10] ERROR Unknown Request error.
2020-04-19T04:40:10.534468+00:00 app[web.1]:
2020-04-19T04:40:10.534496+00:00 app[web.1]: Unknown Request error.
2020-04-19T04:40:10.534498+00:00 app[web.1]:
2020-04-19T04:40:10.534501+00:00 app[web.1]: "https://static.ghost.org/v1.0.0/images/ghost-logo.svg"
2020-04-19T04:40:10.534501+00:00 app[web.1]:
2020-04-19T04:40:10.534502+00:00 app[web.1]: Error ID:
2020-04-19T04:40:10.534502+00:00 app[web.1]: da2a1e40-81f7-11ea-888a-b1044b0a2497
2020-04-19T04:40:10.534503+00:00 app[web.1]:
2020-04-19T04:40:10.534503+00:00 app[web.1]: Error Code:
2020-04-19T04:40:10.534503+00:00 app[web.1]: IMAGE_SIZE_URL
2020-04-19T04:40:10.534504+00:00 app[web.1]:
2020-04-19T04:40:10.534504+00:00 app[web.1]: ----------------------------------------
2020-04-19T04:40:10.534504+00:00 app[web.1]:
2020-04-19T04:40:10.534505+00:00 app[web.1]: InternalServerError: Unknown Request error.
2020-04-19T04:40:10.534506+00:00 app[web.1]: at new InternalServerError (/app/node_modules/ghost-ignition/lib/errors/index.js:77:23)
2020-04-19T04:40:10.534507+00:00 app[web.1]: at /app/node_modules/ghost/core/server/lib/image/image-size.js:175:31
2020-04-19T04:40:10.534507+00:00 app[web.1]: at tryCatcher (/app/node_modules/bluebird/js/release/util.js:16:23)
2020-04-19T04:40:10.534508+00:00 app[web.1]: at Promise._settlePromiseFromHandler (/app/node_modules/bluebird/js/release/promise.js:547:31)
2020-04-19T04:40:10.534508+00:00 app[web.1]: at Promise._settlePromise (/app/node_modules/bluebird/js/release/promise.js:604:18)
2020-04-19T04:40:10.534509+00:00 app[web.1]: at Promise._settlePromise0 (/app/node_modules/bluebird/js/release/promise.js:649:10)
2020-04-19T04:40:10.534509+00:00 app[web.1]: at Promise._settlePromises (/app/node_modules/bluebird/js/release/promise.js:725:18)
2020-04-19T04:40:10.534509+00:00 app[web.1]: at _drainQueueStep (/app/node_modules/bluebird/js/release/async.js:93:12)
2020-04-19T04:40:10.534510+00:00 app[web.1]: at _drainQueue (/app/node_modules/bluebird/js/release/async.js:86:9)
2020-04-19T04:40:10.534510+00:00 app[web.1]: at Async._drainQueues (/app/node_modules/bluebird/js/release/async.js:102:5)
2020-04-19T04:40:10.534511+00:00 app[web.1]: at Immediate.Async.drainQueues [as _onImmediate] (/app/node_modules/bluebird/js/release/async.js:15:14)
2020-04-19T04:40:10.534511+00:00 app[web.1]: at runCallback (timers.js:705:18)
2020-04-19T04:40:10.534511+00:00 app[web.1]: at tryOnImmediate (timers.js:676:5)
2020-04-19T04:40:10.534512+00:00 app[web.1]: at processImmediate (timers.js:658:5)
2020-04-19T04:40:10.534512+00:00 app[web.1]: at process.topLevelDomainCallback (domain.js:126:23)
2020-04-19T04:40:10.534513+00:00 app[web.1]:
2020-04-19T04:40:10.534513+00:00 app[web.1]: ProbeError: bad status code: 403
2020-04-19T04:40:10.534513+00:00 app[web.1]: at Request.<anonymous> (/app/node_modules/probe-image-size/http.js:46:19)
2020-04-19T04:40:10.534514+00:00 app[web.1]: at Request.emit (events.js:198:13)
2020-04-19T04:40:10.534514+00:00 app[web.1]: at Request.EventEmitter.emit (domain.js:448:20)
2020-04-19T04:40:10.534514+00:00 app[web.1]: at Request.onRequestResponse (/app/node_modules/request/request.js:1066:10)
2020-04-19T04:40:10.534515+00:00 app[web.1]: at ClientRequest.emit (events.js:203:15)
2020-04-19T04:40:10.534515+00:00 app[web.1]: at ClientRequest.EventEmitter.emit (domain.js:448:20)
2020-04-19T04:40:10.534516+00:00 app[web.1]: at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:565:21)
2020-04-19T04:40:10.534516+00:00 app[web.1]: at HTTPParser.parserOnHeadersComplete (_http_common.js:111:17)
2020-04-19T04:40:10.534516+00:00 app[web.1]: at TLSSocket.socketOnData (_http_client.js:451:20)
2020-04-19T04:40:10.534517+00:00 app[web.1]: at TLSSocket.emit (events.js:198:13)
2020-04-19T04:40:10.534517+00:00 app[web.1]: at TLSSocket.EventEmitter.emit (domain.js:448:20)
2020-04-19T04:40:10.534517+00:00 app[web.1]: at addChunk (_stream_readable.js:288:12)
2020-04-19T04:40:10.534518+00:00 app[web.1]: at readableAddChunk (_stream_readable.js:269:11)
2020-04-19T04:40:10.534518+00:00 app[web.1]: at TLSSocket.Readable.push (_stream_readable.js:224:10)
2020-04-19T04:40:10.534519+00:00 app[web.1]: at TLSWrap.onStreamRead (internal/stream_base_commons.js:94:17)
2020-04-19T04:40:10.534519+00:00 app[web.1]:

Many of the requests seem to be timing out after 30 seconds because the server can't fetch the image at https://static.ghost.org/v1.0.0/images/ghost-logo.svg. Maybe a related issue: TryGhost/Ghost#9231

I also tried upgrading my dynos to 1x Standard, but it's still happening.

Has anyone else run into this?

Testing Locally with heroku local

I'm looking to test the code locally with heroku local so I can test changes made before pushing to a branch. I keep running into issues though, most recently below.

$ heroku local
7:38:39 PM web.1 |  > [email protected] start D:\Projects\demon-lace
7:38:39 PM web.1 |  > node server.js
7:38:39 PM web.1 |  D:\Projects\demon-lace\node_modules\ghost\core\shared\config\utils.js:103
7:38:39 PM web.1 |          delete database.connection.host;
7:38:39 PM web.1 |                          ^
7:38:39 PM web.1 |  TypeError: Cannot read property 'connection' of undefined
7:38:39 PM web.1 |      at exports.Provider.sanitizeDatabaseProperties (D:\Projects\demon-lace\node_modules\ghost\core\shared\config\utils.js:103:25)
7:38:39 PM web.1 |      at Object.loadNconf (D:\Projects\demon-lace\node_modules\ghost\core\shared\config\index.js:52:11)
7:38:39 PM web.1 |      at Object.<anonymous> (D:\Projects\demon-lace\node_modules\ghost\core\shared\config\index.js:83:27)
7:38:39 PM web.1 |      at Module._compile (internal/modules/cjs/loader.js:1063:30)
7:38:39 PM web.1 |      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
7:38:39 PM web.1 |      at Module.load (internal/modules/cjs/loader.js:928:32)
7:38:39 PM web.1 |      at Function.Module._load (internal/modules/cjs/loader.js:769:14)
7:38:39 PM web.1 |      at Module.require (internal/modules/cjs/loader.js:952:19)
7:38:39 PM web.1 |      at require (internal/modules/cjs/helpers.js:88:18)
7:38:39 PM web.1 |      at Object.<anonymous> (D:\Projects\demon-lace\node_modules\ghost\core\server\index.js:14:16)
7:38:39 PM web.1 |      at Module._compile (internal/modules/cjs/loader.js:1063:30)
7:38:39 PM web.1 |      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
7:38:39 PM web.1 |      at Module.load (internal/modules/cjs/loader.js:928:32)
7:38:39 PM web.1 |      at Function.Module._load (internal/modules/cjs/loader.js:769:14)
7:38:39 PM web.1 |      at Module.require (internal/modules/cjs/loader.js:952:19)
7:38:39 PM web.1 |      at require (internal/modules/cjs/helpers.js:88:18)
7:38:39 PM web.1 |  npm
7:38:39 PM web.1 |   ERR! code ELIFECYCLE
7:38:39 PM web.1 |  npm ERR! errno 1
7:38:39 PM web.1 |  npm
7:38:39 PM web.1 |  ERR! [email protected] start: `node server.js`
7:38:39 PM web.1 |  npm ERR! Exit status 1
7:38:39 PM web.1 |  npm ERR!
7:38:39 PM web.1 |  npm ERR! Failed at the [email protected] start script.
7:38:39 PM web.1 |  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
7:38:39 PM web.1 |  npm ERR! A complete log of this run can be found in:
7:38:39 PM web.1 |  npm ERR!
7:38:39 PM web.1 |       C:\Users\Adam\AppData\Roaming\npm-cache\_logs\2020-12-02T00_38_39_550Z-debug.log
[DONE] Killing all processes with signal  SIGINT
7:38:39 PM web.1 Exited with exit code null

I'm a bit of a novice when it comes to front-end work, especially node. Anyone else run into this with this setup? Is there an easy way to just run ghost local or heroku local with this?

How to customize the deployed app

I tried deploying the app and it works fine, I am just wondering how could I customized the deployed app locally then will push the changes to heroku. I tried to clone the heroku git url but it says 'empty repository', Any help on this. Thanks!

Build failed

image

I think the file "yarn.lock" has to be removed to make it work

Mailgun have changed their Free Account terms

Hi Swastik!

When I tried to add a custom domain to my recently created Mailgun account, it forced me to upgrade. However, once I have introduced my credit card information to proceed, it was rejected in order to make the upgrade directly through Heroku.

On Heroku, I reviewed my app's Resources and found out the next available upgrade is the Concept plan, with 50k emails for US$19/month. That amount of emails is enough for several customers, justifying the use of just one Mailgun account.

Mailgun still offers a more reasonable pay-as-you-go Flex plan for starters, with a tier of free 1000 emails/month (any additional for US$0.80), but it is not available for Mailgun accounts generated from Heroku.

Regarding this issue, I have a couple of questions:

1 - Is there a way to configure/integrate Ghost-on-Heroku with an external Mailgun account, in order to take advantage of their new Flex and Concept plans?

2 - I found this open-source mail server: Postal. As far as I can see, It requires an Ubuntu 16.04 server, Ruby 2.3, MySQL, RabbitMQ, Node.js and Git. I am not very familiar with Heroku so I would like to have your concept of the feasibility to implement this mail server on Heroku.

I am considering replacing Mailgun after receiving this email:

[PDF removed as it reveals users email address] -------- transcript below -----

Hi there,

Mailgun is adjusting our plans and pricing to more accurately reflect the value users get from the service and to make room for some great new deliverability features we just released.

Throughout 2019, we were hard at work adding and improving our email capabilities and optimizing our support to help your business grow. While many of these updates were made behind the scenes, the truth is that Mailgun can do a lot more than it could two years ago when we last updated our plans.

What does this mean for you?
On March 1, 2020, we will automatically transition your account to the new Flex plan, a pay-as-you-go plan comparable to the Concept plan you’re currently on. You’ll receive your first invoice under the new plan on April 1 if your amount due is greater than $0.50. According to your usage in December, your invoice under the new price per message of $0.0008 would have been $0 for December. It’s a modest change, but we wanted to be transparent about it.

What’s changing with the Flex plan?
Flex offers you the same pay-per-use model you were used to on the Concept plan. The main differences are that we are no longer offering 10,000 free emails or 100 free validations per month, and our support options now include limited ticket support as well as enhanced self-service Q&As so you can find answers faster. Additionally, while your existing routes will still be functional, new routes will not be supported on this plan.

What other options do I have?
We have several other plans available with additional features and service levels, including a new subscription plan called Foundation that starts at $35 per month. This plan provides access to new deliverability tools like Inbox Placement so you can effortlessly increase your deliverability and email ROI.

Looking for validations, inbound routing, or more support? Foundation is a great starter plan. If this is something you’re interested in, check out your plan options.

We’ll send a couple more reminders between now and March 1st, but if you have any questions about what this means for you, we’re here to help. Please submit a support ticket, and we’ll follow up with you shortly.

Best,
The Mailgun Team

Internal Server Error on Image upload to S3

Hi @SNathJr

Nice work with maintaining this package.

I just deployed it to Heroku with S3. Initially I was getting Resource Not Found as I named the bucket incorrectly in config var, but now I am getting 'Internal Server Error, cannot upload image'

What can be the issue? I have double checked all vars.

Also, until you figure out #9 , Perhaps add steps for people on how to add (paid) theme to themes folder and then commit & deploy.

Thanks.

Deploy button not working

Hello,

I've tried deploying the app with the Heroku button, however it fails to build:

-----> Node.js app detected
       
-----> Creating runtime environment
       
       NPM_CONFIG_LOGLEVEL=error
       NODE_ENV=production
       NODE_MODULES_CACHE=true
       NODE_VERBOSE=false
       
-----> Installing binaries
       engines.node (package.json):  10.15.X
       engines.npm (package.json):   unspecified (use default)
       engines.yarn (package.json):  unspecified (use default)
       
       Resolving node version 10.15.X...
       Downloading and installing node 10.15.3...
       Using default npm version: 6.4.1
       Resolving yarn version 1.x...
       Downloading and installing yarn (1.16.0)...
       Installed yarn 1.16.0
       
-----> Installing dependencies
       Installing node modules (yarn.lock)
       yarn install v1.16.0
       [1/4] Resolving packages...
       error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.
       info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
-----> Build failed
 !     Outdated Yarn lockfile
       Your application contains a Yarn lockfile (yarn.lock) which does not
       match the dependencies in package.json. This can happen if you use npm
       to install or update a dependency instead of Yarn.
       Please run the following command in your application directory and check
       in the new yarn.lock file:
       $ yarn install
       $ git add yarn.lock
       $ git commit -m "Updated Yarn lockfile"
       $ git push heroku master
    
       https://kb.heroku.com/why-is-my-node-js-build-failing-because-of-an-outdated-yarn-lockfile
 !     Push rejected, failed to compile Node.js app.
 !     Push failed

I have also tried forking and running yarn install which returns:

yarn install v1.15.2
[1/5] 🔍  Validating package.json...
[2/5] 🔍  Resolving packages...
[3/5] 🚚  Fetching packages...
warning [email protected]: The engine "ghost" appears to be invalid.
warning [email protected]: The engine "ghost-api" appears to be invalid.
warning [email protected]: The engine "cli" appears to be invalid.
[4/5] 🔗  Linking dependencies...
[5/5] 🔨  Building fresh packages...
[-/5] ⢀ waiting...
[-/5] ⢀ waiting...
[5/5] ⢀ ghost
[-/5] ⢀ waiting...
error /Users/tiferrei/Developer/ghost-on-heroku/node_modules/ghost: Command failed.
Exit code: 1
Command: cp node_modules/@tryghost/members-theme-bindings/build/members-theme-bindings.js core/server/public/
Arguments:

Any ideas?

Thanks,
Tiago

Thank you!

Hello @SNathJr @JaneJeon,

This is @AsciAshish here. FIrst of all, thank you so much for this awesome project. I went through a few issues as I faced them during my deploy and your support helped a lot. Keep up the good work!

NGINX 502 Error. Bad Gateway

Hi.

I'm trying to deploy Ghost. But I got an error according to the Database connection. I'm using PostgreSQL Database with

DATABASE_URL=postgres://postgres:SOME_PASSWORD@dokku-postgres-lolipop:5432/lolipop

So I extracted host, user, password, database from this DATABASE_URL without success.

How do I fix it ?

Liebling theme is not working properly

I am trying to use ghost theme liebling

In package.json , added

liebling": "github:eddiesigner/liebling#v.0.6.4,

In copy-themes.sh file, added
liebling

After new push, it shows the theme in the installed theme list:
image

but when I activate it, it doesn't display correctly on the blog and it shows errors in the console:
image

This is happening only with the Liebling theme. All other themes are working properly.

Any suggestions on how to fix it?

Postgres support

Is your feature request related to a problem? Please describe.
Hey guys! I love this repository, it has helped me significantly.

The issue I am facing is all of the MySQL add-ons for Heroku limit the storage to 5MB which is obviously very little and can at most handle 1 blog post.

Describe the solution you'd like
The Heroku Postgres add-on allows up to 1GB for free so I am wondering if we can build out the functionality to support Postgres as well as MySQL so that we can remain in the free DB tier.

Describe alternatives you've considered
I have created this issue and I am willing to implement the changes as well.

Changing repository in app.json and in package.json to my fork of this repo makes heroku not deploy

Hi Swastik

This is a great contribution, so thanks for this!

I'm trying to understand how things work in this deployment to Heroku but not luck (trying to understand whether I'll be able to maintain things myself going forward)

When I fork your repo and change the repository in app.json and in package.json to my fork of this repo makes Heroku not deploy, I get an error in the script and scaling dynos phase. Why? Why can't I use my own repo (fork from yours)?

Everything works though if I push your deploy to Heroku button on your repo.

My intention with this question is to understand things further ahead of blindly building my blog on something I'm not fully understanding :) Hope this is ok.

Updating Ghost to 3.41.5

Describe your problem
When I try to run the following commands:

npm upgrade ghost
git add package.json package-lock.json
git commit -m 'Update dependencies'
git push heroku master

I am not able to get a successful build when I push to Heroku

Describe the things you have tried so far
I've tried searching how to resolve the conflicts but to no avail. I think there is an issue with some of the theming
Attaching the build log

-----> Installing dependencies
       Installing node modules
       npm ERR! Error while executing:
       npm ERR! /usr/bin/git ls-remote -h -t ssh://[email protected]/sethlilly/Vapor.git
       npm ERR! 
       npm ERR! Host key verification failed.
       npm ERR! fatal: Could not read from remote repository.
       npm ERR! 
       npm ERR! Please make sure you have the correct access rights
       npm ERR! and the repository exists.
       npm ERR! 
       npm ERR! exited with error code: 128

Have you checked for similar issues?
Yes, couldn't find any on this repo or the Ghost repo

Add stale bot

Too often, @SNathJr you have to manually close issues when it's already been resolved and the original author doesn't respond.

We should add stalebot to this repo to automatically close out any issues that hasn't had any activity in, say, a week.

Also we should probably add "support" template on top of "bug" template and point anybody who doesn't know what they're doing to the "support" template instead of the bug one. Hell, we might even want to replace "bug" with "support". Thoughts?

Ghost 3.0 Crashes on New Deploy w Subdirectory

Hello, I just discover this repo (thank you!)..

I'm attempting to launch a new/clean deploy to heroku using the "Deploy to Heroku" button seen here: https://elements.heroku.com/buttons/snathjr/ghost-on-heroku

After deploying setting APP_PUBLIC_URL to: https://mysite.io/blog

I then load:

https://mysitehere.herokuapp.com/ghost

And the app crashes (see the error log below) --- Is anything else seeing this and/or have ideas on what the issue could be? Thanks

Starting process with command `npm start --production
[email protected] start /app
node server.js
Ghost is running in production...

/app/node_modules/ghost/core/server/services/auth/session/middleware.js:62
         req.session.user_id = req.user.id;
                             ^
TypeError: Cannot set property 'user_id' of undefined
    at /app/node_modules/ghost/core/server/services/auth/session/middleware.js:62:29
    at session (/app/node_modules/express-session/index.js:196:71)
    at getSession (/app/node_modules/ghost/core/server/services/auth/session/middleware.js:48:12)
   at Object.createSession (/app/node_modules/ghost/core/server/services/auth/session/middleware.js:52:5)
    at /app/node_modules/ghost/core/server/api/canary/session.js:35:34
    at /app/node_modules/express-brute/index.js:60:9
    at process._tickCallback (internal/process/next_tick.js:61:11)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node server.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.




An error was encountered when contacting the add-on partner to create mailgun:starter: Account already exists

Describe the bug
When trying to deploy on Heroku from a brand new Heroku account, the deployment fails at Configure environment with the below error message
An error was encountered when contacting the add-on partner to create mailgun:starter: Account already exists for [email protected]

To Reproduce

  1. Create a new Heroku Account
  2. Add billing information to avoid Heroku asking for it later
  3. Deploy using https://elements.heroku.com/buttons/snathjr/ghost-on-heroku

Expected behavior
No account can already exist

Screenshots
Screenshot 2020-11-12 at 13 27 23

How are you deploying this?
Deploy button https://elements.heroku.com/buttons/snathjr/ghost-on-heroku

How to point "My Site" to my domain instead of localhost?

After I click to see my site I get the following result:
image

If I see the url, the link tries to open I get: http://localhost:2368/. I already have deployed my app and configured my domain and s3 bucket. But I still getting this localhost error. Shouldn't this go to my blog url: http://blog.startupshare.xyz ?

I saw that I can change this configuration in the code. But, I couldn't find this on https://github.com/SNathJr/ghost-on-heroku , And I don't know how the heroku button knows which repository to use. I would like to have control on how to update my heroku project deployed using heroku button, but I could not figure out how.

Can somebody help me?

Can't update theme, changes to *.hbs files do not render consistently

Describe the bug
I cannot update the theme (nothing at all, not even a simple removal of the link to Facebook on footer).

To Reproduce

  1. Fork this repo, let's call the fork "Ghostified"
  2. Fork the theme https://github.com/TryGhost/Lyra, let's call that fork "GhostifiedTheme"
  3. Do first changes like adjusting the footer removing the facebook link (just comment out line 35 in default.hbs) in "GhostifiedTheme"
  4. Commit changes to "GhostifiedTheme"
  5. Point to "GhostifiedTheme" inside package.json in "Ghostified" (look for dependencies --> lyra)
  6. run npm install --production to update package-lock.json
  7. Go to Heroku --> Manual deploy --> Deploy Branch
  8. Your changes will have successfully propagated to production, The Facebook link will have disappeared

This is when things NO longer propagate:

  1. Do additional changes to "GhostifiedTheme", like comment out line 36 in default.hbs to also remove the Twitter link
  2. like previously: Commit changes to "GhostifiedTheme"
  3. like previously: run npm install --production to update package-lock.json
  4. this won't make package-lock.json point to the latest commit on "GhostifiedTheme", so run npm update lyra, package-lock.json will now point to the latest commit on "GhostifiedTheme"
  5. Go to Heroku --> Manual deploy --> Deploy Branch
  6. Your changes will NO longer propagate to production, The Twitter link will not have disappeared (Please note: the Facebook link has not returned - from the top part of this "To Reproduce" -, it persisted )

Expected behavior
Be able to change the theme via my forked theme of a supported Ghost Theme (i.e. Lyra). In other words, to be able to customise "GhostifiedTheme" and have the changes propagate

How are you deploying this?
Deployment on Heroku from fork of this repo

How to configure email SMTP service?

Hello there!

I had unsuccessfully tried to configure email SMTP service to invite collaborators but it seems it is not under Ghost but Heroku's domain.

Has someone achieved to send email invitations using this repo?

Thanks in advance!

Getting new SQL errors out of the blue from the site I set up using this project

Describe the bug
Hey there! I love the work you've done on this. I've been running a blog using a free Heroku dyno for the last 6 months or so, and adding content to it regularly. However, starting on May 1st, I am no longer able to spin up my instance. It crashes when trying to boot up, with this error message:

Error: ER_TABLEACCESS_DENIED_ERROR: INSERT command denied to user

I haven't changed anything. This just started happening out of the blue. I tried redeploying the Dyno, but it's not working anymore. The site is down and I have no idea how to recover it.

How are you deploying this?
Originally I did the one-click deployment, until things broke earlier this week. Since then (and AFTER the problem started happening) I tried cloning the repo and upgrading Ghost from 3.2.0 to 3.14.0, and deployed it that way... but that didn't fix anything! :-(

Sendgrid no longer an SMTP option?

I started a new ghost blog on Heroku a few months ago. For email, I changed the configuration to Sendgrid as I already have an account.

I've created a new blog, but I can't find any information on how to set up Sendgrid for the new blog. It's like the info has been scrubbed from the internet!!

Has something changed that means using Sendgrid is no longer possible?

Thanks for any help you can provide.

Issue with using Cloudinary after deploy from GitHub

Would be helpful to confirm if others are having same issue or if this is just to do with the deployment process that I am using. In summary these are the step when deploying:

  1. Create an empty repository for new website.
  2. Clone this repository to local.
  3. Copy the contents of the cloned repository to the empty repository.
  4. And then commit.

Issue occurs where after the website is deployed from GitHub then unable to use app because it fails with this issue.


/app/content/adapters/storage/ghost-storage-cloudinary:1
../../../node_modules/ghost-storage-cloudinary/
^

SyntaxError: Unexpected token .

Notes:

  1. Cloudinary works as expected until the first deploy from GitHub.
  2. This issue has only just started occurring.
  3. Downgrade Ghost to 3.0.3 does not resolve.
  4. The issue occurs when using 1a897f8c6888dc8362bbd1d0e22aa9e43aa7b44d on Heroku stack heroku-18
  5. Only way to conitnue using app is to remove CLOUDINARY_URL.
  6. Also experiencing a similar issue with s3.

Ghost latest version

Hi,
How can I upgrade to Ghost v.2.25.4?
I see your repo is holding Ghost at v.2.21.0

Regards,

Neil

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

Change the "from address" for transactional emails

Is your feature request related to a problem? Please describe.
I'm frustrated to have transactional emails coming from [email protected]. When running a blog, nowadays, one is not supposed to push people away with a "no reply", but to welcome them

Also, one should not be using their main domain to send out transactional emails, but a subdomain like alerts.mydomain.com, given this would protect the reputation of their main email mydomain.com

Describe the solution you'd like
Change the "from address" for transactional emails from [email protected] to for instance: [email protected]

Even better:
Change the "from address" for transactional emails from [email protected] to for instance: [email protected] <-- this (adding a subdomain) is OPTIMAL

Describe alternatives you've considered
This seems to be possible by changing the configuration in config.production.json
see ghost docs

One however can't change that inside heroku given its ephemeral filesystem, this setting has not been surfaced inside config vars in Heroku's settings, so unsure what to do

When it comes adding a subdomain, I have no idea even if a change in config.production.json would work, so surfacing the variables in Heroku's config vars may or may not help... but again, this would be the optimal solution for this feature request

Additional context
Once again, being able to add a subdomain would be optimal.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.