Kategorien
Content Management Systeme Infrastruktur Shared Hosting

GRAV Flat File CMS mit Git Synchronisierung

Das dateibasierte Content Management System GRAV habe ich im Blog bisher zweimal erwähnt (hier und hier). Das letzte Mal im Jahr 2016.

Als ich mich mit Yunohost etwas eingehender beschäftigte, ist mir aufgefallen, dass deren Website (yunohost.org) ebenfalls mit dem CMS GRAV erstellt wurde. Besonders gut gefiel mir die Dokumentation mit Suchfunktion und der Möglichkeit über Github Inhalte und Änderungen zu Inhalten vorschlagen zu können.

Als ich den Artikel über WordPress HTML Archive schrieb, musste ich wieder an GRAV denken. Das System kommt ohne Datenbank aus und baut die einzelnen Seiten daher extrem schnell auf. Es ist etwas wartungsaufwendiger als reine HTML Seiten, da es noch PHP benötigt. Es ist allerdings nicht so wartungsintensiv wie beispielsweise WordPress, liegt also ein wenig „zwischen den Stühlen“.

Grund genug mal wieder bei GRAV vorbeizuschauen. Mittlerweile ist das System bei der Versionsnummer 1.7. angekommen und bietet ein Menge interessanter Features.

Installation bei Novatrend

Bei Novatrend lässt sich GRAV entweder über SFTP, die Kommandozeile oder über unser Installations-Tool Softaculous installieren. In der GRAV Doku sind weitere Methoden beschrieben https://learn.getgrav.org/17/basics/installation. Ich nutze im weiteren Verlauf die Softaculous Installations-Variante. Die Art der Installation ist nur „Geschmacksache“. Das Ergebnis ist immer das gleiche.

Vor der Installation sollte klar sein, unter welcher Subdomain GRAV installiert werden soll. Ich lege mir im cPanel eine Subdomain an und erstelle ein Let’s Encrypt Zertifikat.

cPanel -> Unterdomain
cPanel -> Let’s Encrypt™ SSL

Im Softaculous Installer lege ich auch den Ort, den Namen des Administrators und Backup-Einstellungen fest.

cPanel -> Softaculous -> GRAV
Einstellungen zur Installation

Wenn ich nun den entsprechenden URL aufrufe sehe ich die GRAV Startseite mit einer Erfolgsmeldung.

Der Administrationsbereich von GRAV liegt unter /admin. Mit den bei der Installation vergebenen Daten kann ich mich anmelden …

Anmeldung zum Administrationsbereich

… und lande im GRAV Dashboard. Das Dashboard erinnert ein wenig an WordPress, ist aber „einfacher“ gestaltet.

GRAV Dashboard

Auch wenn es keine Datenbank gibt, so gibt es doch die Möglichkeit das System über das Dashboard im Browser zu administrieren, Accounts anzulegen und Inhalte zu erzeugen. GRAV kommt mit einem Account, zwei Beispielseiten, acht installierten Plugins und einem Theme. In den Einstellungen einzelner Seite gibt es einen Normal und einen Expert Modus.

Normal-Ansicht einer Seite mit Wysiwyg Editor

Im Expert Modus erscheint ein sogenannter „Frontmatter“ oder Header Block über dem Editor. Hier kann man Optionen eintragen, die ausführlich in der GRAV Doku beschrieben sind https://learn.getgrav.org/17/content/headers.

Expert Ansicht einer Seite

Die Oberfläche ist weitestgehend selbsterklärend. Wenn man mal nicht weiter weiss, hilft garantiert die sehr gute GRAV Doku.

Git-Anbindung

Was mich bei der Yunohost.org Website faszinierte, war die Möglichkeit, einzelne Seiten der Dokumentation editieren zu können.

Die Herausforderung bei solchen „Edit“-Buttons ist ja immer die Authentifizierung. Auf der einen Seite möchte man, dass jeder mitarbeiten kann, auf der anderen Seite hat man schnell ein SPAM Problem, wenn es zu offen gehandhabt wird.

Die zweite Herausforderung bei jeder Website ist die Versionsverwaltung. Änderungen sollten dokumentiert werden und müssen manchmal auch wieder rückgängig gemacht werden.

Das GRAV Git Sync Plugin und das GRAV GitHub Plugin lösen dieses Dilemma auf sehr elegante Weise.

Plugins im GRAV Dashboard

Nach der Installation und Konfiguration lassen sich die Seiten bei entsprechenden Zugriffsberechtigungen entweder über das GRAV Dashboard und die Terminal Kommandozeile editieren. Das ist gut und komfortabel für die bekannten Teilnehmer:innen am jeweiligen Projekt.

Darüberhinaus sind die Seiten aber auch offen für Änderungsvorschläge von jedem GitHub Account. Das Charmante an dieser Konstruktion ist, dass die Änderungen in GitHub bereits durch die zu ändernde Person erfolgt ist und „nur“ noch von einer berechtigten Person des Projekts freigegeben werden muss. Das spart unglaublich viel Zeit. Diskussionen über Änderungen sind auf GitHub ebenfalls möglich.

Ich nehme hier GitHub nur als ein Beispiel, die Verbindung klappt auch mit GitLab oder jedem anderen Git Service mit Webhooks.

Ein weiterer Vorteil der Git-Anbindung ist eine komplette Versionierung der Website. Jede Änderung, auch die über das GRAV Dashboard lässt sich auf diesem Weg nachvollziehen und natürlich auch rückgängig machen.

Beispiel GRAV Dokumentation

In der GRAV Dokumentation wird dieses Feature ebenfalls benutzt.

Beispiel Yunohost

Bei Yunohost wird die Mehrsprachigkeit von GRAV und die Git-Synchronisierung genutzt.

GitHub Anbindung einrichten

Die GitHub Anbindung besteht aus zwei GRAV Plugins, die über das Dashboard oder die Kommandozeile installiert werden können.

Plugin Bereich mit Git Sync und GitHub Plugin

Das Git-Sync Plugin muss mit deinem GitHub Account verbunden werden. Das geht über deinen Account-Namen und dein Git-Passwort oder ein Token (das Token ist die bessere Wahl, denn es ist einfach widerrufbar). Die Vorgehensweise ist in diesem Blog Post gut beschrieben https://learn.hibbittsdesign.org/learn2withgitsync/git-sync-plugin-config.

Fazit

Allein durch die oben beschriebene Funktionalität ist GRAV ein sehr interessantes System für Dokumentationen und Projekt-Websites aller Art. Da GRAV auch Mehrsprachigkeit unterstützt, lassen sich auch Übersetzungen von existierenden Dokumentationen sehr elegant, dezentral und unabhängig von den „offiziell“ in das Projekt involvierten Personen erstellen. Wenn das Projekt interessant genug ist, werden sich Personen finden, die helfen!

Links

Von hagengraf

Ich erstelle bequeme und benutzerfreundliche Orte in virtuellen und physischen Umgebungen.

3 Antworten auf „GRAV Flat File CMS mit Git Synchronisierung“

Erwähnungen

  • hagengraf

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert