Ghost 0.7.0 review – Dude, where’s my dashboard?

Ghost 0.7 with the Casper theme
Ghost 0.7 with the Casper theme

It’s been about two years since my last test run with the Ghost blogging software, and though the initial Ghost release was promising their biggest sales pitch from the Kickstarter campaign was missing. I’m talking of course about the ubercool Ghost Dashboard that would have blown the grim WordPress Dashboard out of the water.

Fast forward two years and the Dashboard has been scrapped altogether. The reasoning behind this decision is explained on the official Ghost blog.

Anyhow, this is not gonna be some rant about the faith of the Dashboard as I couldn’t really care less about it. It was a nice looking mockup, but just thinking of the excessive need for third party API integration gives me the shivers.

Ghost 0.7 has been tested on the following software stack:
Slackware Current 64-bit
Apache 2.4.16
Node 0.12.7


Ghost 0.7 installation
Ghost 0.7 installation

The installation process consists of entering your server settings in a configuration file and filling out a simple webform to set up your default account. Compared to WordPress, the ease of installation has now come to a draw.

However, since Ghost is running on Node.js you’ll need to check with your hosting provider whether they support it or not. Especially on shared hosting Node.js availability is unfortunately pretty scarce at the moment.


It’s time to get excited about Ghost again. Ghost 0.7 looks and feels like it’s ready for the big leagues. The administration interface is straightforward and clean from unnecessary clutter. And even though I’ve spent two years away from the platform, I never came to a point where I was screaming for the user manual. The writing process is as simple as ever using the markdown editor, a pleasant way of writing unlike the mess that is traditional WYSIWYG editors.

How does it measure to WordPress? Well let me put it this way. With WordPress I always write the original article using Libre Office before moving on to battle the WordPress editor every step of the way until the post is finally published.


Ghost 0.7 - Managing content
Ghost 0.7 – Managing content

The “out of the box” feature list for Ghost is getting rather impressive. I use several third party plugins on my WordPress installation to achieve the same level of functionality.  Included in the default installation are:

  • Content search
  • Navigation menu editor
  • Tag management
  • Meta data editor
  • Sitemap.xml
  • RSS feed
  •, Twitter Cards, and Open Graph support
  • Code injection (header and footer)
  • Responsive design

So long WordPress and thanks for all the fish?

I’m definitely back on the Ghost train but leaving WordPress will take some time and effort. Most importantly I’d want to preserve my site structure and permalinks, and not spend an eternity on migrating content between the two platforms.

Since I’m hosting my blog on a Raspberry Pi 2, I also need to evaluate performance and reliability of Node.js running behind an Apache server on a RPi2 before relaunching.

Get your Ghost on, visit

How to add failed logins from Logwatch as firewall rules using Iptables

Just for the record: collecting failed logins from Logwatch and feeding them to the firewall is by no means a viable strategy against brute force attacks or other intrusion attempts. There are better means to mitigate these kind of security concerns in real time.

Anyhow, sometimes you face the more cautious crackers that only make a single intrusion attempt per IP address (daily rotation) and thus are able to “fool” the system for an extended period of time. In that regard, using the Logwatch report might be a quick and dirty alternative to analyzing server logs. By using this approach, it’s important to make sure not to harvest customer IP addresses by including valid logins or known safe IP ranges.

Lets look at a snippet from a Logwatch file which we’ll be using to extract the hostile IPs from.

-- pam_unix Begin --
    Authentication Failures:       
       contact@domain.tld rhost= : 1 Time(s)
       test@domain.tld rhost= : 1 Time(s)
       test1@domain.tld rhost= : 1 Time(s)
       test2@domain.tld rhost= : 1 Time(s)
       testuser@domain.tld rhost= : 1 Time(s)
    Unknown Entries:
       check pass; user unknown: 4249 Time(s) 
-- pam_unix End -- 

-- proftpd-messages Begin --
 Failed FTP Logins: 
   Invalid Username:   
     demo: : 1 Time(s) : 1 Time(s) : 1 Time(s) : 1 Time(s) : 1 Time(s) 
   Incorrect Password: : admin - 1 Time(s) : admin - 1 Time(s) : admin - 1 Time(s) : admin - 1 Time(s) : admin - 1 Time(s) : admin - 1 Time(s) : admin - 1 Time(s) : admin - 1 Time(s) 
-- proftpd-messages End --

I’ll copy this information into a local file called logwatch.txt
The following grep expression will extract the IPs from logwatch.txt and create a new file (crackers.txt) containing a list of sorted and unique IPs:

grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' logwatch.txt | sort | uniq > crackers.txt

# Contents of crackers.txt

Next I’ll modify the crackers.txt by using sed to construct the firewall rules to be saved as

sed 's/.*/iptables -A INPUT -s & -j DROP/' crackers.txt >

# Contents of
iptables -A INPUT -s -j DROP
iptables -A INPUT -s -j DROP
iptables -A INPUT -s -j DROP
iptables -A INPUT -s -j DROP

Feed em to the firewall and wait for the first batch of angry customers to call and inform you that your email services are down (I already said this was a bad idea..).

How to fix connectivity issues with the Asus USB-N13 Wireless Adapter on Windows 10

The Windows Update service will provide you with drivers for the Asus USB-N13 adapter, but in my experience, none of these drivers function reliably. They all suffer from the “limited connection disease” thus forcing me to reattach the dongle and play an endless game of connect and disconnect.

Asus USB-N13
Asus USB-N13 limited connection

I’ve tried resetting the TCP/IP stack and I have browsed through the error messages from the event log, but with helpful error descriptions like the one shown below, I’ve gotten nowhere (problem 0x15 = device is not ready)

Device USB\VID_0B05&PID_17AB\00e04c000001 had a problem starting.
Driver Name: oem188.inf
Class Guid: {4d36e972-e325-11ce-bfc1-08002be10318}
Service: RtlWlanu
Lower Filters:
Upper Filters: vwifibus
Problem: 0x15
Status: 0x0

I eventually resolved to download the latest driver pack from Realtek’s website. Well, by latest I’m referring to the drivers they released for Windows 8 back in 2012. Interestingly enough though, those drivers are able to sustain me with a stable wireless connection.

To avoid further issues down the road I’ve configured Windows Update to keep its paws off driver updates, as Windows Update will without mercy upgrade the USB-N13 driver to “the best version for your system”.

I would have needed to use an excessive amount of screenshots to document the complete process, so I’ve opted to record a video showing the steps instead.

Click this link to watch the video on YouTube