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:
- Raspberry Pi
- (micro) SD-Karte
- Betriebssystem
- Node.js
- Ghost
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.
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.
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
Dabei werden die aktuellen Informationen zu verfügbaren Updates geladen und möglicherweise eine ganze Menge Updates vorgeschlagen.
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
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.