13 comments

[ 2.6 ms ] story [ 43.8 ms ] thread
I'm intrigued by whether Ghost can pull off moving into the longform content space, since just a little while back Medium published that post about cutting back on their efforts.
Medium and Ghost have two different goals, AFAIK. I'd say they I see Ghost closer to the Wordpress ethos. For media companies lack of control over look and feel in Medium has been a friction point, I think Ghost offers a lot more flexibility in that sense, but I haven't check ghost or ghost.org recently, tbh.

Not sure Medium is cutting back on efforts, though, as much as they are trying for a new business model that doesn't rely so much on advertising.

As long as it doesn't work on OpenBSD it's a no-go for me.

I have considered using static-site generators but honestly I love the user interfaces of blogging platforms like ghost.

I use svbtle for now though, until I find something that I can actually run on my servers.

As far as I'm aware Ghost runs fine on OpenBSD, we've certainly had users running it on OpenBSD in the past. If there's a specific problem that's preventing it from running for you please open an issue :)
I read the same blog when I had issues, and I've had it on more than one openbsd machine 5.9 and 6.0

    phobos :: ~/Ghost »  npm install --production
    npm WARN prefer global forever@0.15.3 should be installed with -g           
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/amperize requires image-size@'0.5.0' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/image-size,        
    npm WARN unmet dependency which is version 0.5.1                            
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/ghost-gql requires lodash@'3.10.1' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/lodash,            
    npm WARN unmet dependency which is version 4.17.4                           
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/knex-migrator requires bluebird@'3.4.6' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/bluebird,          
    npm WARN unmet dependency which is version 3.4.7                            
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/knex-migrator requires debug@'2.2.0' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/debug,             
    npm WARN unmet dependency which is version 2.6.0                            
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/amperize/node_modules/nock/node_modules/chai/node_modules/deep-eql requires type-detect@'0.1.1' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/amperize/node_modules/nock/node_modules/chai/node_modules/type-detect,
    npm WARN unmet dependency which is version 1.0.0                            
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/brute-knex/node_modules/ghost-ignition requires debug@'2.2.0' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/debug,             
    npm WARN unmet dependency which is version 2.6.0                            
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/brute-knex/node_modules/ghost-ignition requires prettyjson@'1.1.3' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/prettyjson,        
    npm WARN unmet dependency which is version 1.2.1                            
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/ghost-editor/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core requires
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/bluebird,          
    npm WARN unmet dependency which is version 3.4.7                            
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/ghost-editor/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core requires
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/lodash,            
    npm WARN unmet dependency which is version 4.17.4                           
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/passport-ghost/node_modules/ghost-ignition requires debug@'2.2.0' but will load
    npm WARN unmet dependency /home/dijit/Ghost/node_modules/debug,             
    npm WARN unmet dependency which is version 2.6.0                            
    npm WARN unmet dependency /home/...
Personally I run FreeBSD, not OpenBSD, but I decided to try installing Ghost on OpenBSD 6.0 in a VirtualBox VM.

1. Downloaded install60.iso from one of the OpenBSD mirror sites.

2. Created VM with virtual network adapter attached to host network interface bridged (which I only ever rarely do so it also requires that I `doas service vboxnet onestart`) and installed OpenBSD on it. This took only a few minutes, I was impressed by how quick the installer config steps for OpenBSD were.

3. Ejected install CD ISO and rebooted.

4. Attempted to install Ghost.

  # uname -a
  OpenBSD web-test.my.domain 6.0 GENERIC#2148 amd64

  # pkg_add node
  Can't find node
:/

Instructions probably presume that one is familiar with OpenBSD. That's fair. Been a while since last time I used it but it's a well documented system so finding out what to do did not take much time; I needed to copy the sample pkg config file and uncommented the installpath for a country near me.

  # cp /etc/examples/pkg.conf /etc/

  # vi /etc/pkg.conf
Continued.

  # pkg_add node sqlite3-tcl curl

  # pkg_add unzip
  Ambiguous: choose package for unzip
  a       0: <None>
          1: unzip-6.0p9
          2: unzip-6.0p9-iconv
  Your choice: 1
  unzip-6.0p9: ok
Although not needed for the task of installing Ghost, I added git, bash, tree and vim while here.

  # pkg_add git bash tree

  # pkg_add vim
  Ambiguous: choose package for vim
  a       0: <None>
          1: vim-7.4.1467p1-gtk2
          2: vim-7.4.1467p1-gtk2-lua
          3: vim-7.4.1467p1-gtk2-perl-python-ruby
          4: vim-7.4.1467p1-gtk2-perl-python3-ruby
          5: vim-7.4.1467p1-no_x11
          6: vim-7.4.1467p1-no_x11-lua
          7: vim-7.4.1467p1-no_x11-perl-python-ruby
          8: vim-7.4.1467p1-no_x11-perl-python3-ruby
          9: vim-7.4.1467p1-no_x11-ruby
  Your choice: 5
  vim-7.4.1467p1-no_x11: ok
And switched the shell for the non-privileged user I created during install.

  # chsh -s /usr/local/bin/bash web
In a real production environment I think it would probably be better to run the server under the OpenBSD-provided "www"-user and to run the database under a separate user and then to pledge(2) the web server so that it could only read web files and communicate with the database and pledge(2) the database so that it could only communicate with the web server and read/write the db files. Something like that. Anyway as I said, I just want to test Ghost on OpenBSD quickly so I'm not going to dive into pledge(2) since that would take extra time that I don't want to spend right now.

Created directory for web files.

  # mkdir -p /var/www/blog/

  # chown web:www /var/www/blog/
Switched to said user and then proceeded.

  $ curl -LOk https://ghost.org/zip/ghost-latest.zip

  $ cd /var/www/blog/

  $ unzip ~/ghost-latest.zip

  $ rm ~/ghost-latest.zip
Created config from sample file and edited it.

  $ cp config.example.js config.js

  $ vim config.js
The only change I made was to set the production URL to www-ghost.example.com instead of my-ghost-blog.com and I changed the listen address from 127.0.0.1 to 0.0.0.0.

On my host machine I added an entry in /etc/hosts pointing www-ghost.example.com to the IP of the OpenBSD VM.

Completed install of Ghost and ran it.

  $ npm install sqlite3 --sqlite=/usr/local

  $ npm install --production

  $ npm install forever

  $ NODE_ENV=production ./node_modules/forever/bin/forever start index.js
And then there we have it, both the blog itself http://i.imgur.com/2rBhtdl.png a...
Is that a Ghost issue or a nodejs issue? I understand that it can be made to work on FreeBSD. What's the problem that prevents it from working on OpenBSD?
I moved my blog to Ghost a couple years ago and I've been happy with the change. It is notable for not getting in my way. I feel like Ghost enables my writing more than anything else, and it's a really quick platform. Quick to draft, quick to publish, quick to load, etc. It used to be pretty feature-bare, but as they've added in features (which has been great), Ghost has stayed more or less an enabler of my writing and not gotten in my way. I'm excited to see what this program brings to the platform.
Ghost uses bookshelf as its ORM, which is becoming a less and less maintained project every month. ORM is a vast part of its core, it's not easy to replace that. I'm beginning to worry about its future.
I don't know what the status of Bookshelf is but I do note that there are still regular contributions to the project.

As a rule Ghost tries to have write permission to core dependencies including bookshelf so there is no danger of it or any other package threatening the future of the project.

Besides, the beauty of an open source stack is there's always the ability to fork - worse comes to worst.