Ok - so these are the niggles I have with the Ghost blogging platform... April 2018

Don't get me wrong - I love love love Ghost, but they still don't make it easy sometimes...

Hostess with the most-est

  1. No hosting multi-blog ghost sites documentation that I can find?
  2. No 'Securing your Ghost' documentation - discovered PRIVACY.md
  3. No backups WTF! Yes - you heart that correctly, AFAIK no way to backup your sh*t. [1]

Things that they have made huge strides on

  • Upgrading minor versions - This is pretty cool
    cd /var/www
    sudo npm install -g ghost-cli@latest  
    for f in ghost morgs.totahi.com normus.totahi.com www.old-chapel-house.com www.holfordfarm.com ; do cd $f; echo $f; ghost update --no-prompt ; cd ..; done
  • But, argh - you end up with LOTS of copies of ghost itself.
289M    ghost/versions
289M    morgs.totahi.com/versions
289M    normus.totahi.com/versions
289M    www.holfordfarm.com/versions
289M    www.old-chapel-house.com/versions
  • Is everything up? These are great
ghost ls
cd ghost-root;ghost log;

You know nothing! aka the Jon Snow show...

So here's what I have learned - just tidbits:

  • permissions
    • the root-ghost folder must be owned by non-root user
    • the content folder and children must be owned by ghost.ghost
  • upgrades
    • it asks for a password - why? not sure, no hint as to what the password is... my account is sudo-no-password, and no hint I can find
      • I hate typing in passwords when there is no apparent need - it's a security-anti-pattern training folks to give away their secrets for free.
  • the file-system implementation looks like it works happily with links
    • ghost-root
      • content -> I assume I have to back this up
        • themes
          • casper -> a link to current/content/themes/casper
        • logs -> logfiles
          • should be moved to var/log
          • log naming is good - won't collide with other blog-logs
      • versions -> contain the current and historic versions of ghost software
      • current -> links to a version - fullpath, sigh
      • system -> back this up too - maybe source-control
        • nginx-root -> document root for nginx webserver
          • used by certbot (aka letsencrypt) --webroot
        • files
          • ghost_normus-totahi-com.service -> systemd service startup/restart etc
          • normus.totahi.com.conf -> nginx site config

Making a spectre of myself

  • How to you change the spell check feature
    • add custom words - chur bro :)
    • ignore words 'with quotes' - sigh!
    • set language to something British?
    • see suggestions?

Hmmm - well I found a ghost-blog post that says that 16 days ago, the Ghost editor was upgraded to use the browser spell-check... so maybe these are Doctor Google issues? Will hold this thought until I can do more research...

Rental Woes

So being multi-tenanted, I want to consolidate the ghost versions into /usr/share/ghost/versions so I:

    # test the site - all ok using local versions folder
    cd /var/www/www.normus.com
    sudo mkdir /usr/share/ghost
    sudo cp -rp versions /usr/share/ghost
    sudo chown -R normus.normus /usr/share/ghost/versions
    mv versions versions.dist
    sudo ln -s /usr/share/ghost/versions
    ghost restart
    # test the site... 
    # all looks good using shared versions folder

and I guess we should test an upgrade...

    ghost update
    # kaboom - for some reason, doesn't like the permissions on versions.dist
    mv versions.dist /tmp
    ghost update
    # all ok - hoorah!


and then the remainder of the blog-sites...

cd /var/www/www.old-chapel-house.com
mv versions /tmp/versions-och
ln -s /usr/share/ghost/versions
ghost restart

Burning logs

So I found: https://github.com/trentm/node-bunyan#stream-type-rotating-file - woohoo, indicates that there might possibly be log-goodness hidden somewhere deep? A project for another day...

Niggle somewhat scratched - I do enjoy venting.

  1. by backup - I mean automatically at 02:00am when I am dreaming of electric sheep, and in a format that can be readily restored when my user asks to ressurect a post they saved a month ago at 6:30 - and then accidentally deleted last week. ↩︎