Ghost CMS

Dieser Beitrag handelt von der Software Ghost CMS (Content Management System). Zu Beginn werden CMS im Allgemeinen betrachtet und im Hinblick auf Ghost CMS genauer aufgeführt. Es wird auf die Struktur und den Vergleich zu anderen Systemen eingegangen und das Betreiben und die Installation erläutert.

Was ist ein CMS?

Als Content Management System (CMS) wird Software bezeichnet, die zur gemeinschaftlichen Erstellung, Bearbeitung, Organisation und Darstellung digitaler Inhalte verwendet wird. So werden mittels dieser Programme Beiträge für Blogs und anderen Formaten generiert. Anwendung finden CMS in Webseiten und anderen Medienformaten. Meist besitzt diese Art von Software graphische Benutzeroberflächen.

Auch benötigen Autoren, die Beiträge erstellen, meist keine, bis wenige Programmier- oder HTML-Kenntnisse. Die Daten der Beiträge können dabei über Datenbanken abgerufen und generiert werden.

Neben den Proprietären CMS wie Medium gibt es Open-Source Systeme wie WordPress oder auch Ghost. Auf die Unterschiede wird im späteren Vergleich genauer eingegangen.

Welche Aufgaben erfüllt ein CMS?

Natürlich müssen diese Systeme bestimmte Kriterien erfüllen um ihren Zweck gerecht zu werden. Diese Kriterien beinhalten unter anderem eine barrierefreie Darstellung und ein semantisches Ordnen der Inhalte. Auch muss gewährleistet sein, dass Content in andere Arbeitsumgebungen importiert und Exportiert werden kann. Hierbei ist ein effizienter Umgang mit großen Content-Mengen von Nöten. Bei der Darstellung ist ein responsives Webdesign wichtig, um eine optimale User Experience auf jedem Gerät zu gewährleisten.

Neben der Darstellung müssen Rollen an verschiedene Nutzer vergeben und identifiziert werden können.

Was ist das Ghost CMS?

Bei dem System Ghost CMS handelt es sich um eine Open-Source-System mit einer kostenfreien Kernanwendung. Auch ein kostenpflichtiges Preismodell des “Pro” Hosting ist vorhanden. Sie fokussiert sich sehr auf die Erstellung und Verwaltung von Inhalten und bietet wenige Freiheiten um darüber hinaus genutzt zu werden. Weitere Features sind jedoch eine einfache Verwaltung von Mitgliedern, inklusive einem Abonnement-System, und die Erstellung von Email-Newslettern.

Die Software des ehemaligen Kickstarter-Unternehmens basiert auf Node.js und ermöglicht ein einfaches Selfhosting durch Docker oder das Ghost command line interface.

Wo wird das Ghost CMS eingesetzt?

Im Kern ist Ghost eine Plattform für Blogger und andere Personen die ihren Fokus auf die Veröffentlichung von Inhalten richten. Sie eignet sich allerdings auch sehr gut zum Erstellen von Fotografie- und Podcastwebseiten, Zeitschriften, Guides, Dokumentationen und Firmenwebseiten. Hierbei wird bewusst auf die eingeschränkte Funktionalität zurückgegriffen, um den Fokus auf die Veröffentlichung von Inhalten zu legen. Viele Tech-Firmen wie die Mozilla Foundation, DuckDuckGo und DigitalOcean nutzen bereits diese Software, um Inhalte außerhalb ihres Kernbereiches zu veröffentlichen.

 

Architektur des Ghost CMS

Ghost Architecture

Die Architektur ist bei Ghost CMS ist in 5 Bereiche aufgebaut. Die so genannte Client App heißt “Ghost Admin” und wird zur Erstellung und Bearbeitung von Inhalten und Einstellungen der gesamten Website verwendet. Separat dazu existiert das Frontend, welches standardmäßig mit der Templating Engine „Handlebars“ betrieben wird. Als Schnittstelle für die Kommunikation mit sowohl der Client App, als auch dem Frontend, existiert der „Ghost Core“. Dieser zentrale Server verwaltet jegliche Daten und wird mittels einer JSON API angesteuert.

Die Datenbank, in diesem Fall mit Objektrationaler Abbildung, speichert verschiedenste textbasierte Inhalte. Neben dem ORM-Layer gibt es den “Storage Adapter”. Hierbei handelt es sich um den Datenspeicher für große Dateien wie Bilder, Videos oder Audio-Dateien. Die Besonderheit bei Ghost CMS ist das Betreiben als Headless CMS um ein eigenes Frontend bauen zu können.

Vergleich verschiedener CMS

Verglichen mit dem System “Medium” ist Ghost CMS wie zuvor benannt ein Open-Source-System. So ist der der Source Code für die Öffentlichkeit frei zugänglich. Doch gibt es bei Medium nur ein kostenpflichtiges Abo-Modell. Auch besitzt diese Software ein gesperrtes und eingeschränktes Design. Der Marktanteil liegt bei Medium unter einem Prozent des gesamten World Wide Web.

Ghost CMS kann frei und kostenpflichtig genutzt werden und besitzt freie Anpassungsmöglichkeiten. Auch hier liegt der Marktanteil bei unter einem Prozent. Im Vergleich zu der Software “Wordpress”, dem CMS mit dem größten Marktanteil der Welt (ca. 60 Prozent), ist Ghost ebenfalls Open-Source und bietet freie Anpassungsmöglichkeiten. Bei beiden System ist eigenes Hosting möglich.

Um zu verdeutlichen wie weit WordPress verbreitet ist, wurden ca. 33% aller erstellten Webseiten des Internets mit Hilfe von WordPress erstellt.

Welche weiteren Typen gibt es noch?

Neben den klassischen Content Management Systemen wie WordPress und Medium zählen auch E-Commerce-Systeme wie “Shopify” und “PrestaShop” zu dieser Kategorie. Diese Seiten ermöglichen das Erstellen und Administrieren von Online-Shops nach dem Baukastenprinzip.

Entwicklung mit Ghost und WordPress

Im Folgenden werden Ghost und WordPress aus der Sicht eines Entwicklers in verschiedenen Gesichtspunkten untersucht und verglichen.

Im Rahmen des Projektes wurde dafür die WordPress Seminar Webseite, auf der Sie sich wahrscheinlich gerade befinden, zunächst lokal neu aufgesetzt und bezüglich ihrer Struktur untersucht. In einem weiteren Schritt wurde das Ghost CMS lokal installiert und konfiguriert und anschließend die Daten aus der WordPress Installation importiert. Auf diese Weise können die beiden Content Management System optimal verglichen werden.

Installation

Bezüglich der Installation haben die beiden CMS zunächst einen sehr grundlegenden Unterschied – sie verwenden unterschiedliche Programmiersprachen. Bei beiden Systemen wird jedoch die gleiche Datenbank (MySQL) bevorzugt und die Installation beider Systeme ist mit docker-compose sehr einfach möglich.

Ghost:    Node.js

WordPress: PHP

Lokale Entwicklung

Ghost

  • ausgereiftes command line tool, das Ghost CLI
  • produziert funktionierende Installation inkl. Webserver und Datenbank
  • bietet weitere nützliche Commands für Setup & Updates

WordPress

  • Webserver mit PHP und MySQL muss selbst aufgesetzt werden
  • MySQL muss manuell für die WordPress Installation konfiguriert werden
  • wird häufig durch MAMP/XAMPP oder Docker realisiert

Deployment

Ghost

  • minimales Setup von nginx und MySQL
  • Ghost CLI und Server übernehmen den Großteil der Konfiguration

WordPress

  • ähnliches Setup zur lokalen Entwicklungsumgebung, häufig feines Setup der Linux Instanz

Häufig bieten Hosting-Betreiber auch One-Click-Installationen an, bei diesen ist so gut wie gar kein Setup notwendig, aber meist wird dadurch die Kontrolle über das System zu einem gewissen Grad abgegeben.

Struktur/Architektur

In Ghost sind die Server Dateien “versteckt” in den node_modules, Modifizierungen an dem Server sind dadurch, abgesehen von einer Fork des Source Codes, nicht wirklich möglich.

Der Server stellt jedoch ausgereifte Schnittstellen zur Verfügung, die eigene und externe Integrationen und Erweiterungen ermöglichen. Dafür zur Verfügung stehen:

Admin API: Jegliche Funktionalitäten des Ghost Admin können auch manuell über die Admin API durchgeführt werden. Dazu gehören zum Beispiel die Erstellung von Posts oder die Verwaltung von Tags.

Content API: Jeglicher von Ghost verwalteter Inhalt kann über diese Schnittstelle abgerufen werden und somit Ghost als ein Headless CMS betrieben oder für Einbettungen in anderen Webseiten verwendet werden. Dies sind öffentliche Daten wie die Posts und statischen Seiten.

Webhooks: Webhooks senden Daten als Reaktion auf bestimmte Ereignisse an eine vorher vom Benutzer spezifizierte Adresse. So kann zum Beispiel in Antwort auf das Update eines Posts ein Befehl eines eigenen Servers ausgeführt werden.

 

In WordPress sind alle Dateien des Servers im Ordner der Installation zugänglich und auch editierbar, was eine vollständige Anpassung der Installation erlaubt.

Üblicherweise werden hierfür jedoch Plugins verwendet um eine übersichtlichere Struktur und bessere Verwaltung zu erreichen. Mit diesen Plugins können ebenfalls alle Aspekte der WordPress Installation (Frontend & Backend) verändert werden. Daher ist WordPress so unglaublich flexibel und kann sogar als Webshop eingerichtet werden.

Theming

Beide Systeme haben einen themes Ordner in dem Themes installiert bzw. abgelegt werden können. Diese werden auch auf Marktplätzen verkauft.

Das CSS und JS für das Frontend werden jeweils kompiliert und können mit eigenen Buildchains nach Belieben konfiguriert werden.

Ein Unterschied besteht jedoch in der Verwendung der Templating Engine:

Ghost: Handlebars.js

WordPress: PHP

Ghost Seminar Webseite

Die Ghost Seminar Webseite wurde mit Hilfe von docker-compose aufgesetzt und ist nur im VPN der HTWK Leipzig zu erreichen.

Für die lokale Entwicklung einer Ghost Webseite empfehlen wir jedoch unbedingt das Ghost CLI zu verwenden, da man dadurch den vollen Zugriff auf die Dateien der Installation hat. Bei der Verwendung von Docker verschwinden diese natürlich im Container.

 

Die URL und die Login-Daten für die Ghost-Instanz sind wie folgt:

 

Für die Installation mit docker-compose wurde folgende Dockerfile verwendet:

‣ Click to expand
version: '3.1'
services:
  ghost:
    image: ghost:4-alpine
    restart: always
    depends_on:
      - "db"
    ports:
      - 2368:2368
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: example
      database__connection__database: ghost
      url: http://141.57.20.69:2368
      # contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
      #NODE_ENV: development

  db:
    image: mysql:5.7
    #restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
 

Eine Beispiel-Anfrage an die Admin API mit cURL sähe wie folgt aus, wobei der API_KEY durch den Admin API Key einer selbst erstellten Integration ersetzt werden muss.

curl -H "Authorization: Ghost API_KEY" \
-H "Content-Type: application/json" \
-d '{"posts":[{"title":"Hello world"}]}' \
"http://141.57.20.69:2368/ghost/api/v3/admin/posts"

 

Quellen

https://ghost.org/alternatives/

https://ghost.org/docs/

https://www.contentmanager.de/cms/open-source-cms/fuenf-dinge-die-ihr-cms-heute-koenen-sollte/

https://www.ionos.de/digitalguide/hosting/cms/cms-vergleich/

https://www.wpbeginner.com/showcase/best-cms-platforms-compared/

https://medium.com/membership

https://wordpress.com/de/

https://wpengine.com/blog/wordpress-vs-medium-infographic/

 

Alle Quellen wurden zuletzt am 26.01.2022 abgerufen