New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to start Ghost in production mode with this repo/image? #2

Closed
jsspalding opened this Issue Mar 7, 2015 · 42 comments

Comments

Projects
None yet
@jsspalding

jsspalding commented Mar 7, 2015

I have tried the following with no success:

Here is the error when trying to 'docker run' the image:

ghost@0.5.9 start /usr/src/ghost
node index

ERROR: Unable to access Ghost's content path:
EACCES, permission denied '/usr/src/ghost/content/apps/283e85be3ed7c1c0'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

@tianon

This comment has been minimized.

Show comment
Hide comment
@tianon

tianon Mar 13, 2015

Member

When I was doing the initial pass at this image, I played a little with production mode but in my own testing found that it required some hand-tweaking of the configuration file (which is stored in the database directory /var/lib/ghost --

' "$GHOST_SOURCE/config.example.js" > "$GHOST_CONTENT/config.js"
).

http://support.ghost.org/config/#about-environments has some good information about both modes and why development mode is the default.

Of course, if there are things we can do in the image to make production mode simpler to use, we're definitely open to suggestions. 👍

Member

tianon commented Mar 13, 2015

When I was doing the initial pass at this image, I played a little with production mode but in my own testing found that it required some hand-tweaking of the configuration file (which is stored in the database directory /var/lib/ghost --

' "$GHOST_SOURCE/config.example.js" > "$GHOST_CONTENT/config.js"
).

http://support.ghost.org/config/#about-environments has some good information about both modes and why development mode is the default.

Of course, if there are things we can do in the image to make production mode simpler to use, we're definitely open to suggestions. 👍

@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Mar 16, 2015

I am getting this error too, the links above didn't help with troubleshooting. Still trying to work through it.

johnjelinek commented Mar 16, 2015

I am getting this error too, the links above didn't help with troubleshooting. Still trying to work through it.

@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Mar 16, 2015

ahh, the issue is that it's trying to access /usr/src/ghost/content/apps/ instead of /var/lib/ghost/apps/. Maybe the entrypoint needs to symlink that.

johnjelinek commented Mar 16, 2015

ahh, the issue is that it's trying to access /usr/src/ghost/content/apps/ instead of /var/lib/ghost/apps/. Maybe the entrypoint needs to symlink that.

@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Mar 16, 2015

I figured it out. Be sure to add this in your config.js to your production property:

        paths: {
            contentPath: path.join(process.env.GHOST_CONTENT, '/')
        }

johnjelinek commented Mar 16, 2015

I figured it out. Be sure to add this in your config.js to your production property:

        paths: {
            contentPath: path.join(process.env.GHOST_CONTENT, '/')
        }
@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Mar 16, 2015

It's strange that the paths property is set in development, but not in production.

johnjelinek commented Mar 16, 2015

It's strange that the paths property is set in development, but not in production.

@jsspalding

This comment has been minimized.

Show comment
Hide comment
@jsspalding

jsspalding Mar 16, 2015

Thanks you, @johnjelinek ! I'm using Ghost Pro now but I will try this on my VPS.

jsspalding commented Mar 16, 2015

Thanks you, @johnjelinek ! I'm using Ghost Pro now but I will try this on my VPS.

@yosifkit

This comment has been minimized.

Show comment
Hide comment
@yosifkit

yosifkit Mar 16, 2015

Member

That seems strange that there is not a default paths section in the production config. It should be possible for an awk line to insert a paths section with this information. Would this be necessary or do people bring their own config and they will just need a note on the docs about the required path section?

Member

yosifkit commented Mar 16, 2015

That seems strange that there is not a default paths section in the production config. It should be possible for an awk line to insert a paths section with this information. Would this be necessary or do people bring their own config and they will just need a note on the docs about the required path section?

@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Mar 16, 2015

It might actually be a bug/enhancement for ghost to address.


Sent from Mailbox

On Mon, Mar 16, 2015 at 4:45 PM, yosifkit notifications@github.com
wrote:

That seems strange that there is not a default paths section in the production config. It should be possible for an awk line to insert a paths section with this information. Would this be necessary or do people bring their own config and they will just need a note on the docs about the required path section?

Reply to this email directly or view it on GitHub:
#2 (comment)

johnjelinek commented Mar 16, 2015

It might actually be a bug/enhancement for ghost to address.


Sent from Mailbox

On Mon, Mar 16, 2015 at 4:45 PM, yosifkit notifications@github.com
wrote:

That seems strange that there is not a default paths section in the production config. It should be possible for an awk line to insert a paths section with this information. Would this be necessary or do people bring their own config and they will just need a note on the docs about the required path section?

Reply to this email directly or view it on GitHub:
#2 (comment)

@tianon

This comment has been minimized.

Show comment
Hide comment
@tianon

tianon Mar 16, 2015

Member
Member

tianon commented Mar 16, 2015

@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Mar 16, 2015

It was a little weird having to change my directory structure from what I
had previously with the dockerfile/ghost container. It wasn't too big of
a change though.

On Mon, Mar 16, 2015 at 5:37 PM, Tianon Gravi notifications@github.com
wrote:

IMO, it would probably help if we documented clearly that "/var/lib/ghost"
is where the data is stored, and that the configuration file is sourced
from there as well.

Then, documenting how to change the configuration for switching a blog over
to production mode should be more straightforward (or pointing to the
configuration existing in that directory and directing users to upstream's
documentation from there).


Reply to this email directly or view it on GitHub
#2 (comment).

johnjelinek commented Mar 16, 2015

It was a little weird having to change my directory structure from what I
had previously with the dockerfile/ghost container. It wasn't too big of
a change though.

On Mon, Mar 16, 2015 at 5:37 PM, Tianon Gravi notifications@github.com
wrote:

IMO, it would probably help if we documented clearly that "/var/lib/ghost"
is where the data is stored, and that the configuration file is sourced
from there as well.

Then, documenting how to change the configuration for switching a blog over
to production mode should be more straightforward (or pointing to the
configuration existing in that directory and directing users to upstream's
documentation from there).


Reply to this email directly or view it on GitHub
#2 (comment).

@darthbinamira

This comment has been minimized.

Show comment
Hide comment
@darthbinamira

darthbinamira Mar 19, 2015

@tianon 👍 for mentioning /var/lib/ghost - took me awhile to know it was taking from there while i was copying my custom config.js to /usr/src/ghost. oops

thanks @johnjelinek for the paths tip. weird thing is that when I removed everything in config.js except for the production config, it still wasn't working. so I had to put everything back to get it to work.

darthbinamira commented Mar 19, 2015

@tianon 👍 for mentioning /var/lib/ghost - took me awhile to know it was taking from there while i was copying my custom config.js to /usr/src/ghost. oops

thanks @johnjelinek for the paths tip. weird thing is that when I removed everything in config.js except for the production config, it still wasn't working. so I had to put everything back to get it to work.

@sandrokeil

This comment has been minimized.

Show comment
Hide comment
@sandrokeil

sandrokeil Apr 6, 2015

@JoSpalding I run this image in production mode with the following docker-compose.yml. There is no need for pull request #5

ghost:
  image: ghost
  ports:
    - 2368:2368
  environment:
    - NODE_ENV=production

sandrokeil commented Apr 6, 2015

@JoSpalding I run this image in production mode with the following docker-compose.yml. There is no need for pull request #5

ghost:
  image: ghost
  ports:
    - 2368:2368
  environment:
    - NODE_ENV=production
@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek commented Apr 6, 2015

👍

@jsspalding

This comment has been minimized.

Show comment
Hide comment
@jsspalding

jsspalding Apr 6, 2015

Thanks for the tip @sandrokeil !

jsspalding commented Apr 6, 2015

Thanks for the tip @sandrokeil !

@jsspalding jsspalding closed this Apr 6, 2015

@frdmn

This comment has been minimized.

Show comment
Hide comment
@frdmn

frdmn Apr 23, 2015

Same issue over here:

$ docker run --name="docker-ghost"  -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

> ghost@0.6.0 start /usr/src/ghost
> node index

ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/b19a6ce607ff34c3'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

My file structure:

❯  docker-ghost git:(master) ✗ ls -la
total 40
drwxr-xr-x   9 friedmann  wheel   306 23 Apr 10:44 .
drwxrwxrwt  17 root       wheel   578 23 Apr 11:00 ..
drwxr-xr-x  13 friedmann  wheel   442 23 Apr 11:00 .git
-rw-r--r--   1 friedmann  wheel   384 23 Apr 08:52 .gitignore
-rw-r--r--   1 friedmann  wheel   483 23 Apr 08:23 LICENSE
-rw-r--r--   1 friedmann  wheel   981 23 Apr 10:58 Makefile
-rw-r--r--   1 friedmann  wheel   697 23 Apr 08:23 README.md
-rw-r--r--   1 friedmann  wheel  3774 23 Apr 10:58 config.js
drwxr-xr-x@  7 friedmann  wheel   238 23 Apr 08:25 content

And my config.js: http://paste.frd.mn/eqaca

Any ideas? Thanks in advance!

frdmn commented Apr 23, 2015

Same issue over here:

$ docker run --name="docker-ghost"  -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

> ghost@0.6.0 start /usr/src/ghost
> node index

ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/b19a6ce607ff34c3'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

My file structure:

❯  docker-ghost git:(master) ✗ ls -la
total 40
drwxr-xr-x   9 friedmann  wheel   306 23 Apr 10:44 .
drwxrwxrwt  17 root       wheel   578 23 Apr 11:00 ..
drwxr-xr-x  13 friedmann  wheel   442 23 Apr 11:00 .git
-rw-r--r--   1 friedmann  wheel   384 23 Apr 08:52 .gitignore
-rw-r--r--   1 friedmann  wheel   483 23 Apr 08:23 LICENSE
-rw-r--r--   1 friedmann  wheel   981 23 Apr 10:58 Makefile
-rw-r--r--   1 friedmann  wheel   697 23 Apr 08:23 README.md
-rw-r--r--   1 friedmann  wheel  3774 23 Apr 10:58 config.js
drwxr-xr-x@  7 friedmann  wheel   238 23 Apr 08:25 content

And my config.js: http://paste.frd.mn/eqaca

Any ideas? Thanks in advance!

@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Apr 24, 2015

@frdmn: you're missing this property in your production section of the config:

paths: {
            contentPath: path.join(__dirname, '/content/')
        }

see above.

johnjelinek commented Apr 24, 2015

@frdmn: you're missing this property in your production section of the config:

paths: {
            contentPath: path.join(__dirname, '/content/')
        }

see above.

@frdmn

This comment has been minimized.

Show comment
Hide comment
@frdmn

frdmn Apr 24, 2015

@johnjelinek Same issue with the appended path section: http://paste.frd.mn/kiyub

❯  docker-ghost git:(master) ✗ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

> ghost@0.6.0 start /usr/src/ghost
> node index

ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/3f5a4717b0d009f6'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

frdmn commented Apr 24, 2015

@johnjelinek Same issue with the appended path section: http://paste.frd.mn/kiyub

❯  docker-ghost git:(master) ✗ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

> ghost@0.6.0 start /usr/src/ghost
> node index

ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/3f5a4717b0d009f6'

Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.
@johnjelinek

This comment has been minimized.

Show comment
Hide comment
@johnjelinek

johnjelinek Apr 24, 2015

What does your docker run look like?


Sent from Mailbox

On Fri, Apr 24, 2015 at 1:42 AM, Jonas Friedmann notifications@github.com
wrote:

❯  docker-ghost git:(master) ✗ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost
> ghost@0.6.0 start /usr/src/ghost
> node index
ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/3f5a4717b0d009f6'
Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

Reply to this email directly or view it on GitHub:
#2 (comment)

johnjelinek commented Apr 24, 2015

What does your docker run look like?


Sent from Mailbox

On Fri, Apr 24, 2015 at 1:42 AM, Jonas Friedmann notifications@github.com
wrote:

❯  docker-ghost git:(master) ✗ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost
> ghost@0.6.0 start /usr/src/ghost
> node index
ERROR: Unable to access Ghost's content path:
  EACCES, permission denied '/usr/src/ghost/content/apps/3f5a4717b0d009f6'
Check that the content path exists and file system permissions are correct.
Help and documentation can be found at http://support.ghost.org.

Reply to this email directly or view it on GitHub:
#2 (comment)

@frdmn

This comment has been minimized.

Show comment
Hide comment
@frdmn

frdmn Apr 24, 2015

@johnjelinek You can see the command argument in my previous comment. At the moment (to check the stdout) I use:

$ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

But in production:

$ docker run --name="docker-ghost" --restart=always -d -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

frdmn commented Apr 24, 2015

@johnjelinek You can see the command argument in my previous comment. At the moment (to check the stdout) I use:

$ docker run --name="docker-ghost" -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost

But in production:

$ docker run --name="docker-ghost" --restart=always -d -p 8091:2368 -v /tmp/docker-ghost:/var/lib/ghost -e NODE_ENV=production ghost
@rarkins

This comment has been minimized.

Show comment
Hide comment
@rarkins

rarkins May 4, 2015

Same problem here. To "solve", I run it once in development mode, update the files (e.g. config.js as described above) and then run again with NODE_ENV=production. This definitely should be solved so that path is added to the default config.js that's created.

rarkins commented May 4, 2015

Same problem here. To "solve", I run it once in development mode, update the files (e.g. config.js as described above) and then run again with NODE_ENV=production. This definitely should be solved so that path is added to the default config.js that's created.

@kumavis

This comment has been minimized.

Show comment
Hide comment
@kumavis

kumavis Jul 21, 2015

I was excited about the docker image, but that was excessively unintuitive.
for others, here's my config as a reference:

I'm providing PUBLIC_URL and PORT, others are injected by the image

// # Ghost Configuration
// Setup your Ghost install for various [environments](http://support.ghost.org/config/#about-environments).

// Ghost runs in `development` mode by default. Full documentation can be found at http://support.ghost.org/config/

const path = require('path')
const PUBLIC_URL = process.env.PUBLIC_URL
const PORT = process.env.PORT || '2368'
const GHOST_CONTENT = process.env.GHOST_CONTENT
const GHOST_SOURCE = process.env.GHOST_SOURCE


console.log('using this config!')
console.log('GHOST_CONTENT:', GHOST_CONTENT) //  /var/lib/ghost
console.log('GHOST_SOURCE:', GHOST_SOURCE)   //  /usr/src/ghost



var config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: PUBLIC_URL,
        paths: {
            contentPath: GHOST_CONTENT,
        },
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(GHOST_CONTENT, '/data/ghost.db'),
            },
            debug: true,
        },

        server: {
            host: '0.0.0.0',
            port: PORT,
        }
    }
}

module.exports = config

I'm using VIRTUAL_HOST and VIRTUAL_PORT outside of Ghost, not needed.

blog:
  image: library/ghost
  environment:
    VIRTUAL_HOST: "blog.metamask.io"
    VIRTUAL_PORT: "9000"
    PORT: "9000"
    NODE_ENV: "production"
    PUBLIC_URL: "https://blog.metamask.io"
  volumes:
    - /var/data/blog:/var/lib/ghost
  ports:
    - "9000"

kumavis commented Jul 21, 2015

I was excited about the docker image, but that was excessively unintuitive.
for others, here's my config as a reference:

I'm providing PUBLIC_URL and PORT, others are injected by the image

// # Ghost Configuration
// Setup your Ghost install for various [environments](http://support.ghost.org/config/#about-environments).

// Ghost runs in `development` mode by default. Full documentation can be found at http://support.ghost.org/config/

const path = require('path')
const PUBLIC_URL = process.env.PUBLIC_URL
const PORT = process.env.PORT || '2368'
const GHOST_CONTENT = process.env.GHOST_CONTENT
const GHOST_SOURCE = process.env.GHOST_SOURCE


console.log('using this config!')
console.log('GHOST_CONTENT:', GHOST_CONTENT) //  /var/lib/ghost
console.log('GHOST_SOURCE:', GHOST_SOURCE)   //  /usr/src/ghost



var config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: PUBLIC_URL,
        paths: {
            contentPath: GHOST_CONTENT,
        },
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(GHOST_CONTENT, '/data/ghost.db'),
            },
            debug: true,
        },

        server: {
            host: '0.0.0.0',
            port: PORT,
        }
    }
}

module.exports = config

I'm using VIRTUAL_HOST and VIRTUAL_PORT outside of Ghost, not needed.

blog:
  image: library/ghost
  environment:
    VIRTUAL_HOST: "blog.metamask.io"
    VIRTUAL_PORT: "9000"
    PORT: "9000"
    NODE_ENV: "production"
    PUBLIC_URL: "https://blog.metamask.io"
  volumes:
    - /var/data/blog:/var/lib/ghost
  ports:
    - "9000"
@RomkeVdMeulen

This comment has been minimized.

Show comment
Hide comment
@RomkeVdMeulen

RomkeVdMeulen Aug 5, 2015

Thanks @kumavis! That was a big help.

👍

RomkeVdMeulen commented Aug 5, 2015

Thanks @kumavis! That was a big help.

👍

@thizzle

This comment has been minimized.

Show comment
Hide comment
@thizzle

thizzle Oct 18, 2015

Spent quite a bit of time batting with this image as well. Thanks for the thorough summary, @kumavis – helped get me to the finish line.

thizzle commented Oct 18, 2015

Spent quite a bit of time batting with this image as well. Thanks for the thorough summary, @kumavis – helped get me to the finish line.

@brentybh

This comment has been minimized.

Show comment
Hide comment
@brentybh

brentybh Nov 21, 2015

Thanks! +10087

brentybh commented Nov 21, 2015

Thanks! +10087

@FSerg

This comment has been minimized.

Show comment
Hide comment
@FSerg

FSerg Dec 15, 2015

@kumavis Thanks a lot!

FSerg commented Dec 15, 2015

@kumavis Thanks a lot!

@youxiachai

This comment has been minimized.

Show comment
Hide comment
@youxiachai

youxiachai commented Feb 23, 2016

@kumavis Thanks!

@stephan-nordnes-eriksen

This comment has been minimized.

Show comment
Hide comment
@stephan-nordnes-eriksen

stephan-nordnes-eriksen Jul 11, 2016

I was having issues with this and i found this: #15

Specifically the comment from @mustafaakin which states this:

I have modified the Dockerfile to allow production and it seems to work:

 RUN chown -R user:user /usr/src/ghost/
 CMD ["npm", "start", "--production"]

I skipped the CMD part, but running the chown -R user:user /usr/src/ghost/ solved the problem for me.

stephan-nordnes-eriksen commented Jul 11, 2016

I was having issues with this and i found this: #15

Specifically the comment from @mustafaakin which states this:

I have modified the Dockerfile to allow production and it seems to work:

 RUN chown -R user:user /usr/src/ghost/
 CMD ["npm", "start", "--production"]

I skipped the CMD part, but running the chown -R user:user /usr/src/ghost/ solved the problem for me.

@totmann

This comment has been minimized.

Show comment
Hide comment
@totmann

totmann Nov 30, 2016

Thanks for the solutions!

totmann commented Nov 30, 2016

Thanks for the solutions!

@dwin

This comment has been minimized.

Show comment
Hide comment
@dwin

dwin Jan 6, 2017

This issue still existed for me. The above fix, (#2 (comment)) worked for me.

dwin commented Jan 6, 2017

This issue still existed for me. The above fix, (#2 (comment)) worked for me.

@babatundebusari

This comment has been minimized.

Show comment
Hide comment
@babatundebusari

babatundebusari Feb 15, 2017

is this issue resolved? or why is it closed?
I am still getting the same issue

babatundebusari commented Feb 15, 2017

is this issue resolved? or why is it closed?
I am still getting the same issue

@weipah

This comment has been minimized.

Show comment
Hide comment
@weipah

weipah Mar 4, 2017

I don't see why the fix in 2nd Comment is still not part of the default config? Will it do any harm if present for other scenarios?

This issue is two years old now and still there is no well documented workaround on the docker hub.

weipah commented Mar 4, 2017

I don't see why the fix in 2nd Comment is still not part of the default config? Will it do any harm if present for other scenarios?

This issue is two years old now and still there is no well documented workaround on the docker hub.

@SISheogorath

This comment has been minimized.

Show comment
Hide comment
@SISheogorath

SISheogorath Mar 5, 2017

For non-existent configs it's solved and part of the image. Existing config has to edit like this. If you want it documented open a pull request for documentation. Should be possible in less than 5 minutes. Check the entrypoint script.

SISheogorath commented Mar 5, 2017

For non-existent configs it's solved and part of the image. Existing config has to edit like this. If you want it documented open a pull request for documentation. Should be possible in less than 5 minutes. Check the entrypoint script.

@weipah

This comment has been minimized.

Show comment
Hide comment
@weipah

weipah Mar 14, 2017

Seems not fixed for non-existent, because the entry-point script copies from the sample config which does not include the paths entry discussed in 2nd comment. At least for 0.11.7 that is the case.

weipah commented Mar 14, 2017

Seems not fixed for non-existent, because the entry-point script copies from the sample config which does not include the paths entry discussed in 2nd comment. At least for 0.11.7 that is the case.

@JREAM

This comment has been minimized.

Show comment
Hide comment
@JREAM

JREAM Mar 31, 2017

Can someone share their config? I can't run this locally, I stumped.
My config must be wrong. I removed test also, I had problems prior to that though.

  • Docker version 17.03.1-ce, build c6d412e
  • ghost:0.11.7

I tried @kumavis suggestion which does help (just dont declare config twice if ya do).
I am getting the variables below too.

Run

docker run  -p 8080:2368 -v $PWD/:/var/lib/ghost ghost:0.11.7
npm info it worked if it ends with ok
npm info using npm@2.15.11
npm info using node@v4.8.1
npm info prestart ghost@0.11.7
npm info start ghost@0.11.7

> ghost@0.11.7 start /usr/src/ghost
> node index

using this config!
GHOST_CONTENT: /var/lib/ghost
GHOST_SOURCE: /usr/src/ghost
ERROR: Cannot find the configuration for the current NODE_ENV: development

Ensure your config.js has a section for the current NODE_ENV value and is formatted properly.
[...]
$ tree -L 1
.
├── apps
├── config.js
├── content
├── data
├── images
├── readme.md
└── themes

./config.js

// # Ghost Configuration

// Ghost runs in `development` mode by default.
// Full documentation can be found at http://support.ghost.org/config/

const path = require('path')
const PUBLIC_URL = process.env.PUBLIC_URL
const PORT = process.env.PORT || '2368'
const GHOST_CONTENT = process.env.GHOST_CONTENT
const GHOST_SOURCE = process.env.GHOST_SOURCE


console.log('using this config!')
console.log('GHOST_CONTENT:', GHOST_CONTENT) //  /var/lib/ghost
console.log('GHOST_SOURCE:', GHOST_SOURCE)   //  /usr/src/ghost

// var path = require('path'),
//     config;

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: 'http://blog.jream.com',
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(process.env.GHOST_CONTENT, '/data/ghost.db')
            },
            debug: false
        },

        server: {
            host: '0.0.0.0',
            port: '2368'
        },

        paths: {
            contentPath: path.join(__dirname, '/content/'),
        }
    },

    // ### Development **(default)**
    development: {
        // The url to use when providing links to the site, E.g. in RSS and email.
        // Change this to your Ghost blog's published URL.
        url: 'http://localhost:2368',

        // Example refferer policy
        // Visit https://www.w3.org/TR/referrer-policy/ for instructions
        // default 'origin-when-cross-origin',
        // referrerPolicy: 'origin-when-cross-origin',

        // Example mail config
        // Visit http://support.ghost.org/mail for instructions
        // ```
        //  mail: {
        //      transport: 'SMTP',
        //      options: {
        //          service: 'Mailgun',
        //          auth: {
        //              user: '', // mailgun username
        //              pass: ''  // mailgun password
        //          }
        //      }
        //  },
        // ```

        // #### Database
        // Ghost supports sqlite3 (default), MySQL & PostgreSQL
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(process.env.GHOST_CONTENT, '/data/ghost-dev.db')
            },
            debug: false
        },
        // #### Server
        // Can be host & port (default), or socket
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '0.0.0.0',
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        },
        // #### Paths
        // Specify where your content directory lives
        paths: {
            contentPath: path.join(__dirname, '/content/'),
        }
    },
};

JREAM commented Mar 31, 2017

Can someone share their config? I can't run this locally, I stumped.
My config must be wrong. I removed test also, I had problems prior to that though.

  • Docker version 17.03.1-ce, build c6d412e
  • ghost:0.11.7

I tried @kumavis suggestion which does help (just dont declare config twice if ya do).
I am getting the variables below too.

Run

docker run  -p 8080:2368 -v $PWD/:/var/lib/ghost ghost:0.11.7
npm info it worked if it ends with ok
npm info using npm@2.15.11
npm info using node@v4.8.1
npm info prestart ghost@0.11.7
npm info start ghost@0.11.7

> ghost@0.11.7 start /usr/src/ghost
> node index

using this config!
GHOST_CONTENT: /var/lib/ghost
GHOST_SOURCE: /usr/src/ghost
ERROR: Cannot find the configuration for the current NODE_ENV: development

Ensure your config.js has a section for the current NODE_ENV value and is formatted properly.
[...]
$ tree -L 1
.
├── apps
├── config.js
├── content
├── data
├── images
├── readme.md
└── themes

./config.js

// # Ghost Configuration

// Ghost runs in `development` mode by default.
// Full documentation can be found at http://support.ghost.org/config/

const path = require('path')
const PUBLIC_URL = process.env.PUBLIC_URL
const PORT = process.env.PORT || '2368'
const GHOST_CONTENT = process.env.GHOST_CONTENT
const GHOST_SOURCE = process.env.GHOST_SOURCE


console.log('using this config!')
console.log('GHOST_CONTENT:', GHOST_CONTENT) //  /var/lib/ghost
console.log('GHOST_SOURCE:', GHOST_SOURCE)   //  /usr/src/ghost

// var path = require('path'),
//     config;

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: 'http://blog.jream.com',
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(process.env.GHOST_CONTENT, '/data/ghost.db')
            },
            debug: false
        },

        server: {
            host: '0.0.0.0',
            port: '2368'
        },

        paths: {
            contentPath: path.join(__dirname, '/content/'),
        }
    },

    // ### Development **(default)**
    development: {
        // The url to use when providing links to the site, E.g. in RSS and email.
        // Change this to your Ghost blog's published URL.
        url: 'http://localhost:2368',

        // Example refferer policy
        // Visit https://www.w3.org/TR/referrer-policy/ for instructions
        // default 'origin-when-cross-origin',
        // referrerPolicy: 'origin-when-cross-origin',

        // Example mail config
        // Visit http://support.ghost.org/mail for instructions
        // ```
        //  mail: {
        //      transport: 'SMTP',
        //      options: {
        //          service: 'Mailgun',
        //          auth: {
        //              user: '', // mailgun username
        //              pass: ''  // mailgun password
        //          }
        //      }
        //  },
        // ```

        // #### Database
        // Ghost supports sqlite3 (default), MySQL & PostgreSQL
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(process.env.GHOST_CONTENT, '/data/ghost-dev.db')
            },
            debug: false
        },
        // #### Server
        // Can be host & port (default), or socket
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '0.0.0.0',
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        },
        // #### Paths
        // Specify where your content directory lives
        paths: {
            contentPath: path.join(__dirname, '/content/'),
        }
    },
};
@weipah

This comment has been minimized.

Show comment
Hide comment
@weipah

weipah Apr 12, 2017

@JREAM
There is no need to remove testing. You can just delete your current config and restart the container to get a fresh config. Then add the paths part as mentioned before.

I think there is no comma after contentPath line and also my config shows a different path:

paths: {
            contentPath: path.join(process.env.GHOST_CONTENT, '/')
        }

weipah commented Apr 12, 2017

@JREAM
There is no need to remove testing. You can just delete your current config and restart the container to get a fresh config. Then add the paths part as mentioned before.

I think there is no comma after contentPath line and also my config shows a different path:

paths: {
            contentPath: path.join(process.env.GHOST_CONTENT, '/')
        }
@stevenaldinger

This comment has been minimized.

Show comment
Hide comment
@stevenaldinger

stevenaldinger Apr 22, 2017

Thanks so much to @tianon for making it super clear /var/lib/ghost is where it had to be. I installed in /var/www/ghost cause that's what the install guide said to do :/ Appreciate the hard work anyway guys, thanks for making this available

stevenaldinger commented Apr 22, 2017

Thanks so much to @tianon for making it super clear /var/lib/ghost is where it had to be. I installed in /var/www/ghost cause that's what the install guide said to do :/ Appreciate the hard work anyway guys, thanks for making this available

@stevenaldinger

This comment has been minimized.

Show comment
Hide comment
@stevenaldinger

stevenaldinger Apr 22, 2017

@JREAM you still struggling? Are you a .js dev? Your config looks super wonky. You've got process.env.GHOST_CONTENT half the time and __dirname joined for the rest, kinda assuming thats your issue. Here's a working config, make sure to chown to ghost or whatever user you're running as and make sure config.js is in var/lib/ghost/config.js. Don't hesitate to message me if you need a hand. Had to upload a .txt cause .js isn't supported.
config.txt

stevenaldinger commented Apr 22, 2017

@JREAM you still struggling? Are you a .js dev? Your config looks super wonky. You've got process.env.GHOST_CONTENT half the time and __dirname joined for the rest, kinda assuming thats your issue. Here's a working config, make sure to chown to ghost or whatever user you're running as and make sure config.js is in var/lib/ghost/config.js. Don't hesitate to message me if you need a hand. Had to upload a .txt cause .js isn't supported.
config.txt

@iShawnWang

This comment has been minimized.

Show comment
Hide comment
@iShawnWang

iShawnWang Nov 19, 2017

What's going on here ?
It's still not solved !!!

:(

iShawnWang commented Nov 19, 2017

What's going on here ?
It's still not solved !!!

:(

@weipah

This comment has been minimized.

Show comment
Hide comment
@weipah

weipah Nov 19, 2017

What exactly do you mean? There is a newer image already.

weipah commented Nov 19, 2017

What exactly do you mean? There is a newer image already.

@iShawnWang

This comment has been minimized.

Show comment
Hide comment
@iShawnWang

iShawnWang Nov 19, 2017

I just deployed a latestghost:alpine image with Host Volume /var/lib/ghost/content and when I try to upload a new Publication cover,
I got this error :

2017-11-20 02:10:24:�[31m
2017-11-20 02:10:24:�[31mNAME: InternalServerError�[39m
2017-11-20 02:10:24:�[31mCODE: EACCES�[39m
2017-11-20 02:10:24:�[31mMESSAGE: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mlevel:�[39m�[37mnormal�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mInternalServerError: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'
2017-11-20 02:10:24:    at new GhostError (/var/lib/ghost/versions/1.17.3/core/server/errors.js:9:26)
2017-11-20 02:10:24:    at prepareError (/var/lib/ghost/versions/1.17.3/core/server/middleware/error-handler.js:40:19)
2017-11-20 02:10:24:    at Layer.handle_error (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/layer.js:71:5)
2017-11-20 02:10:24:    at trim_prefix (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:315:13)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:284:7
2017-11-20 02:10:24:    at Function.process_params (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:335:12)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:275:10)
2017-11-20 02:10:24:    at Layer.handle_error (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/layer.js:67:12)
2017-11-20 02:10:24:    at trim_prefix (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:315:13)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:284:7
2017-11-20 02:10:24:    at Function.process_params (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:335:12)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:275:10)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:635:15
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:260:14)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/route.js:127:14)
2017-11-20 02:10:24:    at onAPIError (/var/lib/ghost/versions/1.17.3/core/server/api/index.js:286:13)
2017-11-20 02:10:24:    at tryCatcher (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/util.js:16:23)
2017-11-20 02:10:24:    at Promise._settlePromiseFromHandler (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:512:31)
2017-11-20 02:10:24:    at Promise._settlePromise (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:569:18)
2017-11-20 02:10:24:    at Promise._settlePromise0 (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:614:10)
2017-11-20 02:10:24:    at Promise._settlePromises (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:689:18)
2017-11-20 02:10:24:    at Async._drainQueue (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/async.js:133:16)
2017-11-20 02:10:24:
2017-11-20 02:10:24:Error: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'
2017-11-20 02:10:24:    at Error (native)�[39m
2017-11-20 02:10:24:�[39m
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:02] "GET /ghost/" �[32m200�[39m 7ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/users/me/?include=roles" �[32m200�[39m 42ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/private/" �[32m200�[39m 15ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 33ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/notifications/" �[32m200�[39m 26ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/timezones/" �[32m200�[39m 19ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 30ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/api/v0.1/configuration/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/api/v0.1/configuration/private/" �[32m200�[39m 17ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 34ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/users/me/?include=roles" �[32m200�[39m 57ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/notifications/" �[32m200�[39m 16ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/configuration/timezones/" �[32m200�[39m 17ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 30ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /public/ghost-sdk.min.js?v=71a3c02404" �[32m200�[39m 13ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /" �[32m200�[39m 213ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/built/screen.css?v=2ab82c0260" �[32m200�[39m 3ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /public/ghost-sdk.min.js?v=2ab82c0260" �[32m200�[39m 0ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/js/jquery.fitvids.js?v=2ab82c0260" �[32m200�[39m 2ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/js/infinitescroll.js?v=2ab82c0260" �[32m200�[39m 5ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:19] "GET /content/images/2017/07/Unknown.jpeg" �[32m200�[39m 2677ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:23] "GET /content/images/2017/07/hello-2015466_1920.jpg" �[32m200�[39m 6161ms
2017-11-20 02:10:24:�[31mERROR�[39m [2017-11-19 18:07:24] "GET /favicon.png" �[31m500�[39m 30ms
2017-11-20 02:10:24:�[31m
2017-11-20 02:10:24:�[31mNAME: InternalServerError�[39m
2017-11-20 02:10:24:�[31mCODE: ENOENT�[39m
2017-11-20 02:10:24:�[31mMESSAGE: Could not read image: /var/lib/ghost/content/images/2017/11/UNADJUSTEDNONRAW_small.png�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mlevel:�[39m�[37mnormal�[39m

and then search engine lead me to here.
I was struggling, because I don't know how to solve this issue, or may be this actually not related to issue #2

@weipah

iShawnWang commented Nov 19, 2017

I just deployed a latestghost:alpine image with Host Volume /var/lib/ghost/content and when I try to upload a new Publication cover,
I got this error :

2017-11-20 02:10:24:�[31m
2017-11-20 02:10:24:�[31mNAME: InternalServerError�[39m
2017-11-20 02:10:24:�[31mCODE: EACCES�[39m
2017-11-20 02:10:24:�[31mMESSAGE: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mlevel:�[39m�[37mnormal�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mInternalServerError: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'
2017-11-20 02:10:24:    at new GhostError (/var/lib/ghost/versions/1.17.3/core/server/errors.js:9:26)
2017-11-20 02:10:24:    at prepareError (/var/lib/ghost/versions/1.17.3/core/server/middleware/error-handler.js:40:19)
2017-11-20 02:10:24:    at Layer.handle_error (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/layer.js:71:5)
2017-11-20 02:10:24:    at trim_prefix (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:315:13)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:284:7
2017-11-20 02:10:24:    at Function.process_params (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:335:12)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:275:10)
2017-11-20 02:10:24:    at Layer.handle_error (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/layer.js:67:12)
2017-11-20 02:10:24:    at trim_prefix (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:315:13)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:284:7
2017-11-20 02:10:24:    at Function.process_params (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:335:12)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:275:10)
2017-11-20 02:10:24:    at /var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:635:15
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/index.js:260:14)
2017-11-20 02:10:24:    at next (/var/lib/ghost/versions/1.17.3/node_modules/express/lib/router/route.js:127:14)
2017-11-20 02:10:24:    at onAPIError (/var/lib/ghost/versions/1.17.3/core/server/api/index.js:286:13)
2017-11-20 02:10:24:    at tryCatcher (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/util.js:16:23)
2017-11-20 02:10:24:    at Promise._settlePromiseFromHandler (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:512:31)
2017-11-20 02:10:24:    at Promise._settlePromise (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:569:18)
2017-11-20 02:10:24:    at Promise._settlePromise0 (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:614:10)
2017-11-20 02:10:24:    at Promise._settlePromises (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/promise.js:689:18)
2017-11-20 02:10:24:    at Async._drainQueue (/var/lib/ghost/versions/1.17.3/node_modules/bluebird/js/release/async.js:133:16)
2017-11-20 02:10:24:
2017-11-20 02:10:24:Error: EACCES: permission denied, open '/var/lib/ghost/content/images/2017/11/allef-vinicius-180699-1.jpg'
2017-11-20 02:10:24:    at Error (native)�[39m
2017-11-20 02:10:24:�[39m
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:02] "GET /ghost/" �[32m200�[39m 7ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/users/me/?include=roles" �[32m200�[39m 42ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/private/" �[32m200�[39m 15ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 33ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/notifications/" �[32m200�[39m 26ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/configuration/timezones/" �[32m200�[39m 19ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:03] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 30ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/api/v0.1/configuration/" �[32m200�[39m 4ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:08] "GET /ghost/api/v0.1/configuration/private/" �[32m200�[39m 17ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 34ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/users/me/?include=roles" �[32m200�[39m 57ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/notifications/" �[32m200�[39m 16ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/configuration/timezones/" �[32m200�[39m 17ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:09] "GET /ghost/api/v0.1/settings/?type=blog%2Ctheme%2Cprivate" �[32m200�[39m 30ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /public/ghost-sdk.min.js?v=71a3c02404" �[32m200�[39m 13ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /" �[32m200�[39m 213ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/built/screen.css?v=2ab82c0260" �[32m200�[39m 3ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /public/ghost-sdk.min.js?v=2ab82c0260" �[32m200�[39m 0ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/js/jquery.fitvids.js?v=2ab82c0260" �[32m200�[39m 2ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:16] "GET /assets/js/infinitescroll.js?v=2ab82c0260" �[32m200�[39m 5ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:19] "GET /content/images/2017/07/Unknown.jpeg" �[32m200�[39m 2677ms
2017-11-20 02:10:24:�[36mINFO�[39m [2017-11-19 18:07:23] "GET /content/images/2017/07/hello-2015466_1920.jpg" �[32m200�[39m 6161ms
2017-11-20 02:10:24:�[31mERROR�[39m [2017-11-19 18:07:24] "GET /favicon.png" �[31m500�[39m 30ms
2017-11-20 02:10:24:�[31m
2017-11-20 02:10:24:�[31mNAME: InternalServerError�[39m
2017-11-20 02:10:24:�[31mCODE: ENOENT�[39m
2017-11-20 02:10:24:�[31mMESSAGE: Could not read image: /var/lib/ghost/content/images/2017/11/UNADJUSTEDNONRAW_small.png�[39m
2017-11-20 02:10:24:
2017-11-20 02:10:24:�[37mlevel:�[39m�[37mnormal�[39m

and then search engine lead me to here.
I was struggling, because I don't know how to solve this issue, or may be this actually not related to issue #2

@weipah

@weipah

This comment has been minimized.

Show comment
Hide comment
@weipah

weipah Nov 19, 2017

Yeah, this looks rather like a permissions issue and is not related to the original here.
You should open a new issue then.

weipah commented Nov 19, 2017

Yeah, this looks rather like a permissions issue and is not related to the original here.
You should open a new issue then.

@iShawnWang

This comment has been minimized.

Show comment
Hide comment
@iShawnWang

iShawnWang Nov 19, 2017

Ok ~ thanks

iShawnWang commented Nov 19, 2017

Ok ~ thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment