Ghost-Blog auf einem Uberspace anlegen [Tutorial] (UPDATE)

Seit dem 14. Oktober 2013 ist die Open-Source-Blogging-Plattform Ghost öffentlich zugänglich und kann bei der Blog-Erstellung - zumindest im privaten Bereich - alternativ zu den großen Blog- bzw. Content Management-Systemen wie Wordpress oder Joomla! herangezogen werden.

Da die Plattform damit noch sehr jung ist und auf der Node.js-Technologie basiert, ist die Installation von Ghost bisher (noch) nicht bei allen Hostern möglich.
Die Konten bei Uberspace, einem deutschen Webhosting-Anbieter aus Mainz, lassen sich in vielerlei Hinsicht an die Bedürfnisse ihrer Nutzer anpassen und sind einer der Wenigen (Stand: 20.10.2013), auf denen sich Ghost relativ schnell und reibungslos installieren lässt, wenn man gewisse Grundkenntnisse im Aufsetzen von Blogs mitbringt. Im Folgenden werde ich die Installation eines neuen Ghost-Blogs bei Uberspace.de Schritt für Schritt beschreiben.

Vorbereitung & Voraussetzungen

Ich werde in meiner Anleitung auf die Ghost-Version v0.3.3 eingehen, die man hier herunterladen kann. Bevor man mit der eigentlichen Installation von Ghost beginnen kann, sollte man die folgenden Voraussetzungen erfüllen:

  • Ein neuer Uberspace-Account sollte hier angelegt werden
  • Man sollte sich in den Uberspace-Dokumentationen über SSH-Verbindungen, Node.js und Ghost etwas schlau gemacht haben, um die Zusammenhänge zu verstehen
  • Die Bedienung einer Linux-Shell via Terminal (Mac OS / Linux) oder PuTTY (Windows) sollte genauso bekannt sein wie das Arbeiten mit einem FTP-Client wie beispielsweise FileZilla.
  • Macht Dir noch einen Kaffee oder ähnliches und plan Dir etwas Zeit ein für die Anpassung

Node.js-Version prüfen bzw. aktualisieren

Damit Ghost auf deinem Uberspace installiert werden kann, muss Node.js mind. in Version 0.10.x installiert sein, was auf einigen Servern bei Uberspace bereits vorinstalliert ist, auf anderen erst noch aktualisiert werden muss.
Zur Überprüfung der aktuell installierten Node.js-Version auf deinem Server, gibst Du nach dem Login via SSH folgenden Befehl ein

$ node -v
v0.10.3

Sollte eine Version kleiner 0.10.x angezeigt werden, kannst du wie folgt schauen, welche aktuelleren Versionen auf dem Server zur Verfügung stehen

cd /package/host/localhost/
ls

und aktivierst diese so:

echo 'export PATH=/package/host/localhost/nodejs-           0.10.3/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile

Ob die Aktualisierung geklappt hat, kann mit einem

node -v.

nochmals überprüft werden.

Node Package Manager installieren

Im nächsten Schritt muss der Node Package Manager auf das Homeverzeichnis vorkonfiguriert werden, was anhand der folgenden Befehlskette geschieht:

  cat > ~/.npmrc <<__EOF__
  prefix = $HOME
  umask = 077
  __EOF__

Installation von Ghost

UPDATE 17.12.2014: Aufgrund der sich nun häufenden Updates der Ghost Blogging Platform, empfehle ich Dir momentan strikt die Befolgung des Tutorials zu Ghost bei uberspace, das schnellstmöglich bei Änderungen angepasst wird.

Hinweis: Es wird von Uberspace selbst ausdrücklich empfohlen, Ghost nicht in das Hauptverzeichnis (/~/html/) zu installieren, sondern in einen Unterordner, da sonst "von außen" auf die Datenbank zugegriffen werden könnte.

Dafür legst Du wie folgt einen Unterordner an. Ich habe mich für /home/USER/nodejs/ghost entschieden und werde im weiteren Verlauf des Tutorial mit diesem arbeiten. Im Rootverzeichnis gibst du dafür folgendes via Shell ein:

mkdir -p ~/nodejs/ghost
cd ~/nodejs/ghost

Ghost hochladen und entpacken

In das eben erstellte Verzeichnis /nodejs/ghost/ werden nun die zuvor auf Ghost.org heruntergeladenen und entpackten Ghost-Dateien via FTP hochgeladen oder alternativ über die Shell heruntergeladen und dorthin entpackt:

wget https://en.ghost.org/zip/ghost-0.3.3.zip
unzip ghost-0.3.3.zip

Module installieren

Im nächsten Schritt sollte - wie von Uberspace empfohlen - noch das TMP-Dir randomisiert werden, was wie folgt funktioniert:

export TMPDIR=`mktemp -d /tmp/XXXXXX`

Aus den XXXXXX werden Zufallsbuchstaben und -ziffern generiert, daher bitte nicht abändern an dieser Stelle.

Ob dieser Schritt funktioniert hat, kann mit anschließendem

echo $TMPDIR

abgefragt werden.

Nun installierst Du die Module in deinem Ghost-Ordner mit folgendem Befehl:

npm install --production

Nach ca. einer halben Minute bis Minute sollte der Installationsprozess vorüber sein.

config.js-Datei für Ghost erstellen

Nun erstellst Du aus der mitgelieferten config.example.js-Datei eine config.js-Datei (ebenfalls in deinem Ghost-Verzeichnis):

cp config.example.js config.js

config.js-Datei anpassen

Die config.js-Datei kann nun via FTP-Client bearbeitet werden und sollte letztendlich im Teil ### Production dem folgenden Muster entsprechend angepasst werden:

production: {
url: 'http://username.server.uberspace.de/', 
mail: {} // for email configuration see <a href='http://docs.ghost.org/mail/'>http://docs.ghost.org/mail/</a>
},
database: {
    client: 'sqlite3',
    connection: {
        filename: path.join(__dirname, '/content/data/ghost.db')
    },
    debug: false
},
server: {
    host: '127.0.0.1',
    port: 'xxxxx'
}
},

Anstatt xxxxx trägst Du bitte eine Portnummer zwischen 61000 und 65535 ein. Das ist notwendig um Probleme mit bereits verwendeten Ports auszuschließen.

.htaccess-Datei anlegen

Im nächsten Schritt musst Du im Unterordner /home/USER/html eine .htaccess-Datei anlegen und in diese das folgende eintragen:

RewriteEngine On
RewriteRule http://sub.domain.tld/$1 http://localhost:xxxxx/$1

Anstelle von xxxxx trägst Du deine gewählte Portnummer aus dem vorausgegangenen Schritt ein.

Ghost zum ersten Mal starten

Um Ghost zu starten, wechselt Du nun mit den folgenden zwei Zeilen in dein Ghost-Verzeichnis und startest das Blog-System zum ersten Mal:

cd ~/nodejs/ghost/
npm start --production

War der Start erfolgreich, wird in der Shell "Ghost is running..." angezeigt.

Bild von Ghost-Shell aktiv

Dein Blog sollte nun über deine Uberspace-Adresse http://username.server.uberspace.de abrufbar sein und kann unter http://username.server.uberspace.de/ghost/signup eingerichtet werden.

Der Ghost-Signup-Screen

Leider würde Ghost wieder deaktiviert werden, sobald Du deine SSH-Verbindung beendest, daher musst Du in einem zusätzlichen Schritt noch dafür sorgen, dass Ghost dauerhaft läuft.

Update (30.10.2013) + Update (17.12.2014):

Ghost dauerhaft aktivieren über daemontools

Vom Uberspace-Team wurde mir empfohlen anstatt der bisher vorgeschlagenen Variante, Ghost mit Forever dauerhaft zu aktivieren, das mit daemontools zu tun.

Das hat den Vorteil, dass dein Ghost automatisch - z.B. nach einem Server-Reboot - wieder gestartet wird (mit Forever hätte man den Service manuell wieder starten müssen).

  • Um Ghost als Service anzulegen, gibst Du in deinem Ghost-Verzeichnis die folgenden Zeilen ein:

    test -d ~/service || uberspace-setup-svscan
    uberspace-setup-service ghost env NODE_ENV=production node ~/ghost/index.js 2>&1
    
  • Im Anschluss daran musst Du die Datei ~/service/ghost/run noch folgendermaßen anpassen:

    sed -i -e 's/exec/cd ~\/ghost\/\nexec/' ~/etc/run-ghost/run
    
  • Nun kannst Du deinen Ghost-Service mit dem Befehl

    svc -u ~/service/ghost
    

starten und bist fertig mit der dauerhaften Installation deiner Ghost Blogging Platform.

Das u steht dabei für up - um deinen Blog wieder zu deaktivieren gibts du stattdessen ein d (down)

    svc -d ~/service/ghost

ein und für einen Neustart (z.B. nach Themeanpassung):

    svc -du ~/service/ghost

Ghost dauerhaft aktivieren (mit Forever)

Um Ghost dauerhaft verfügbar zu machen, benutzen wir Forever. Dazu gib bitte folgende Zeile in deinem Hauptverzeichnis, um Forever mithilfe des Node Package Managers zu erstellen:

npm install -g forever

Nun wechselt man ins Ghost-Verzeichnis und startet dort mit Forever Ghost über die index.js-Datei:

forever start index.js

Ghost wird nun standardmäßig im Development-Modus gestartet, daher muss man noch

NODE_ENV=production forever start index.js

eingeben, um den Production-Modus zu starten.
Die Ghost Blogging-Plattform sollte nun dauerhaft auf deinem Uberspace laufen.

Das Ghost-Setup

Über deinen Browser kannst Du nun mit der Einrichtung deines neuen Ghost-Blogs beginnen, indem Du http://username.server.uberspace.de/ghost/signup eingibst und dort deinen Account anlegst oder Dir schon einmal das Beispiel unter http://username.server.uberspace.de/ ansehen.

Ghost_setup

So sieht Ghost nach der Installation aus

Damit hast du Ghost jetzt erfolgreich auf deinem Uberspace installiert und ich sage "Herzlichen Glückwunsch!"

Credits

Ein dickes Dankeschön für die Hilfe beim Aufsetzen und Anpassen von Ghost, möchte ich gerne an die @ubernauten, @vogti und howtoinstallghost.com aussprechen. Ohne Euch wäre ich weder beim Installieren meiner Ghost-Instanz noch beim Recherchieren für diesen Artikel so fix vorangekommen.

Weiterführende Links:

Fragen, Feedback, Alternativen?

Ich habe mich bemüht, die durchzuführenden Schritte so knapp und verständlich wie möglich wiederzugeben - ohne IT-Fachmann zu sein oder den Rahmen sprengen zu wollen und hoffe, ich konnte Dir helfen, die Ghost Blogging Plattform erfolgreich auf deinem Uberspace zu installieren.

Mir ist bewusst, dass es noch einige alternative Arten der Installation von Ghost gibt (beispielsweise auf Ubuntu, Nginx and MySQL-Basis - Dank an Gregg), aber da die Installation in einer so frühen Phase (v.0.3.3) schnell und ohne allzu großes Vorwissen umsetzbar sein soll(te), habe ich mich für diese Variante entschieden.

Ich freue mich auf dein Feedback, deine Verbesserungsvorschläge oder Belehrungen hierzu und werde diese auch gerne hier aufnehmen.

Falls bei Dir etwas nicht funktionieren sollte, kontaktiere mich gerne über die Kommentarfunktion oder via Twitter - das kann man natürlich auch jederzeit tun, wenn alles reibungslos läuft ;-)


comments powered by Disqus