Installation des GhostPi

Wie auf der zum GhostPi zugehörigen Seite erwähnt, läuft auf meinem GhostPi die Blogging-Software Ghost. Wie man einen Raspberry Pi von Grund auf mit dieser Software bestückt, bringe ich in diesem kleinen doch etwas ausführlicheren Tutorial zum Ausdruck.


Voraussetzungen

Zum Betreiben eines Raspberry Pis mit Node.js und Ghost benötigen wir natürlich gewisse Dinge:

Zur Installation der SD-Karte und dem Verkabeln des Raspberry Pis möchte ich an dieser Stelle eigentlich nichts schreiben.
Auch auf die Installation eines Betriebssystems mit NOOBS oder eines Diskimages würde ich verzichten und stattdessen auf die Hilfeseiten von raspberrypi.org verweisen.

Konfiguration von Raspbian

Raspbian kann gleich Out-of-the-box betrieben werden, aber ich habe noch ein paar kleine Änderungen am System vorgenommen.

Nach dem ersten Booten erscheint die Konfiguration automatisch auf dem Bildschirm, wenn man den Raspberry Pi per HDMI an einen Monitor angeschlossen hat. Alternativ kann man sich auch direkt per SSH auf den Raspberry Pi verbinden und die Konfiguration mit

sudo raspi-config

aufrufen.

Konfigurationsüberblick

Die erste Option Expand Filesystem ist generell zu empfehlen. Damit wird sichergestellt, dass ihr auch wirklich die volle Größe der SD-Karte zur Verfügung habt. Das kommt daher, dass die Diskimages für kleinere SD-Karten ausgelegt sind und daher der zusätliche Speicher erst zugewiesen werden muss.

Empfehlenswert ist außerdem das Passwort für den Benutzer pi zu ändern (Option 2).

Unter Option 7 kann der Raspberry Pi mühelos übertaktet werden. Auch das ist durchaus empfehlenswert, wenn man noch etwas Power aus dem kleinen Gerät herausholen möchte. Ich habe hier die Option "Turbo" gewählt und fahre damit noch super.

Mit "Advanced Options" (Option 8) kommt man auf die zweite Seite, wo ich noch den Hostnamen geändert habe und außerdem den RAM für die Grafikausgabe auf das Minimum von 16 MB reduziert habe (Memory Split).

Abschließend dann mit "Finish" die Konfiguration beenden und den Raspberry Pi neu starten.

Zusätzlich habe ich meinem Raspberry Pi noch eine feste IP vergeben. Mit

sudo nano /etc/network/interfaces

wird der Texteditor geöffnet und man findet in etwa das vor, wie auf dem folgenden Bild.

Inhalt von /etc/network/interfaces

Hier muss die Zeile iface eth0 inet dhcp durch folgenden Block ersetzt werden:

iface eth0 inet static
    address 192.168.178.223
    netmask 255.255.255.0
    gateway 192.168.178.1

Die oben stehen Angaben müssen natürlich bei euch nicht so aussehen, sondern auf euer Netzwerk angepasst werden.

Danach sollte der Raspberry Pi erneut mit

sudo reboot

neugestartet werden.

Aktualisierung des Systems

Um die aktuellsten Updates und Sicherheitspatches für euer System zu bekommen, führt ihr folgenden Befehl aus:

sudo apt-get update && sudo apt-get dist-upgrade

Aktualisierung des Systems

Dabei werden die aktuellen Informationen zu verfügbaren Updates geladen und möglicherweise eine ganze Menge Updates vorgeschlagen.

Bestätigung der Aktualisierung

Bestätigt die Updateaufforderung und diese werden installiert.

Auch die Firmware des Raspberry Pi wird rege weiterentwickelt. Aus diesem Grund lohnt sich auch das Aufspielen der aktuellsten Firmware mittels

sudo rpi-update

sudo rpi-update

Danach noch ein Neustart mit sudo reboot und der Raspberry Pi ist auf dem neuesten Stand.

Installation von Node.js

Der einfachste Weg Node.js auf dem Raspberry Pi zu installieren, führt über ein Debian-Package. Mit den Schritten

cd ~
sudo wget http://node-arm.herokuapp.com/node_latest_armhf.deb
sudo dpkg -i node_latest_armhf.deb

wird das aktuelle Paket heruntergeladen und installiert. node -v ergibt bei mir zum Zeitpunkt des Schreibens v0.10.29.

Installation von Ghost

Ghost kann ähnlich einfach wie Node.js installiert werden. Ladet das aktuelle Paket als Zip-Datei herunter, entpackt es und führt die Installation durch:

cd ~
wget https://ghost.org/zip/ghost-latest.zip
unzip ghost-latest.zip -d blog
cd blog/
sudo npm install --production

Damit ist Ghost im Verzeichnis /home/pi/blog installiert.

Ghost arbeitet mit einer sqlite Datenbank und deswegen muss sqlite3 noch installiert werden:

sudo apt-get install sqlite3

Kopiert die mitgelieferte Konfigurationsdatei und erstellt daraus eure eigene.

cp config.example.js config.js
nano config.js

Im Bereich production {} solltet ihr folgende Änderungen durchführen:

url: 'http://meinedomain.de',
mail: {
    transport: 'SMTP',
    options: {
        service: 'Mailgun',
        auth: {
            user: 'postmaster@abc.mailgun.org',
            pass: '0123456789abc'
        }
    }
},
database: {
    client: 'sqlite3',
    connection: {
        filename: path.join(__dirname, '/content/data/ghost.db')
    },
    debug: false
},
server: {
    host: '192.168.178.223'
    port: '80'
}

Weitere Alternativen für den Mailversand sind hier aufgelistet.
Ersetzt außerdem die Angaben zu URL und dem Host (IP-Adresse des Raspberry Pi).

Schließt nano mit Ctrl + X und bestätigt das Speichern.

Der Node.js Server kann nun einfach mit

sudo npm start --production

gestartet werden. Damit ist euer Blog auf dem Raspberry Pi nun unter der von euch angegebenen IP-Adresse erreichbar. Die Admin-Oberfläche erhaltet ihr unter http://<ghostpiip>/ghost.

Beendet den Node.js Server wieder mit Ctrl + C.

Damit euer Node.js Server auch läuft, wenn ihr nicht per SSH oder direkt auf dem Raspberry Pi angemeldet seid oder auch automatisch nach einem Neustart des Raspberry Pi startet, empfiehlt es sich ein entsprechendes Skript zu starten.

Dazu muss zuerst forever installiert werden.

sudo npm install forever -g

Danach erstellt ihr ein Init-Skript

sudo nano /etc/init.d/ghost

mit dem Inhalt

#! /bin/sh
# /etc/init.d/ghost

case "$1" in
    start)
        echo "Starting ghost"
        sudo NODE_ENV=production forever start /home/pi/blog/index.js
        ;;
    stop)
        echo "Stopping ghost"
        sudo forever stop /home/pi/blog/index.js
        ;;
    *)
        echo "Usage /etc/init.d/ghost {start|stop}"
        exit 1
        ;;
esac

exit 0

Das Skript muss noch ausführbar gemacht werden:

sudo chmod 755 /etc/init.d/ghost

Damit das Init-Skript auch tatsächlich beim Systemstart ausgeführt wird, muss noch der Befehl

sudo update-rc.d ghost defaults

eingegeben werden.

Startet also den Node.js Server mit

sudo /etc/init.d/ghost start

und ihr könnt euch von der Konsole abmelden und euren Blog schreiben.