Erfahrungen mit Autorensystemen/CMS für statische Websites

SynthGate

SynthGate

Brizzel und Tzwitscher (TM)
Da ich demnächst gedenke, 2-3 Websites aufzusetzen, über die ganzen Nachteile mit dynamischen Websites bzgl. des Pflegeaufwandes mehr als genug gelesen habe, spiele ich derzeit mit dem Gedanken, dafür ein System zu nehmen, das aus Markup-Texten die entsprechenden statischen Websites (gern auch noch mehr als Websites, PDF wäre auch sehr praktisch) erstellen kann.

Bisher etwas genauer angesehen habe ich Hugo, das in dem zugehörigen Showcase recht ansprechend aussehende offenbart. Bevor ich mich endgültig entscheide, wollte ich mich über schon eventuell vorhandene Erfahrungen (jenseits vom allgegenwärtigen Wordpress!) informieren, falls diese bei euch existieren.

Hier ist meine Liste der Voraussetzugen (wird eventuell noch angepasst und verlängert):
  • Eingabeformat: Markup/Markdown Plaintext
  • Sollte sehr wartungsarm sein, erzeugt statische Websites ohne irgendwelche anfälligen Skriptsprachen, wie Javascript, PHP etc. (folglich auch kein anfälliger Wordpress-PHP-Kram)
  • Erzeugt auch PDFs
  • Kann Bilder und Videos einbinden
  • Unterstützt Hierarchien und Verschachtelungen dateiseitig als auch auf der Website
  • Einfache Installation (Executable oder Installer) ohne tausende von Dependencies selbst installieren zu müssen
  • Unterstützt alle verbreiteten PC-OS (Linux, Windows, MacOS)
  • Unterstützung von I18N bzw. mehrsprachigen Ausgaben
  • Lizenz, die keine weiteren Kosten im Falle einer privaten Nutzung verursacht und dennoch eine kommerzielle Nutzung zulässt
  • Kein Datenbank-System notwendig
  • Kein Rollensystem notwendig
  • Unterstützung von Meta-Daten für Suchmaschinen
  • Unterstützung von Templates für das Design der Website/Ausgabe
 
Zuletzt bearbeitet:
Hab mir selbst mit node.js einen Parser für eine umfangreichere Projektdokumentation geschrieben, der eine Ordnerstruktur ausliest und aus den Ordnernamen einerseits ein Inhaltsverzeichnis und ferner aus den Bildern und Textdateien in diesen Ordnern die späteren Kapitel erstellt und das alles einmal als ein PDF für einen A4-Aktenordner und eben auch als eine schnell durchsuchbare statische Webseite mit CSS und Sprungmarken rendert.

Ansonsten ist Angular vielleicht noch interessant, da die wiederverwendbaren Komponenten sehr mächtig sind. Statisch rendern geht hier ebenfalls.
 
Wenn ich meinen Senf loswerden darf:
Mit Host Europe als Hoster habe ich viele Jahre sehr gute Erfahrungen gemacht. Im Vergleich vielleicht etwas teurer, aber ich war immer zufrieden.

Sie selbst empfehlen Hugo, Jekyll, Gatsby, Metalsmith, Middleman und Pelican.

 
Schaue ich mir mal an, obwohl ich meinen kleinen Hoster schon seit Jahren habe und den auch ungern verlassen würde.

Große Ziele sind auch begehrte Angriffsziele, auch wenn das hier aufgrund der Natur der Sache vermutlich nicht so schnell zutreffen würde.
 
Und wenn ich mir allein die CVEs zu PHP ansehe
Deine Motivation ist auf jeden Fall valide. Jede CVE ist eine zu viel wenn man Wartungsaufwand und Angriffsfläche reduzieren will, denn Patchen ist nicht optional. Jedoch will ich als "Branchen-Insider" ein paar Dinge klarstellen.

1. Die Anzahl der vorhandenen CVEs allein lässt keinen Schluss auf die Produktsicherheit zu. Man schaue sich mal die Zahlen beim Linux Kernel an. Die Definition dort ist, dass ein großer Teil der Bugs als Sicherheitsproblem eingestuft wird weil der Kernel nunmal die kritischste Kompetente im System ist. Weiterhin wird am Kernel massivst aktiv von verschiedensten Akteuren nach Schwachstellen gesucht. Letztendlich ist der Linux Kernel trotzdem ein sicheres Produkt, gemessen daran wie oft er tatsächlich als Einfallstor oder Teil einer Exploit Chain genutzt wird. Man stelle das alles nun mal gegenüber mit hmm… Windows. Oder dem Adobe Flash Player 😉 Und diese Produkte sind sogar Closed Source! (Womit weniger Transparenz herrscht)

2. In der Praxis spielen PHP Schwachstellen global betrachtet kaum eine Rolle wenn es um Angriffe geht. Als erstes muss die Schwachstelle überhaupt sinnvoll ausnutzbar sein. Es gab z. B. mal einen Buffer Overflow im Passwort Feld für die Datenbankverbindung des MySQL Treibers. Die Wahrscheinlichkeit dass ein Angreifer das nutzen kann ist verschwindend gering. Ein weiterer Grund dafür ist, dass die Schwachstellen meistens eine Form der Memory Corruption sind. Das Ausnutzen solcher Schwachstellen ist schwierig geworden dank diverser Maßnahmen in modernen Compilern und Betriebssystemen. Es braucht schon einiges an Skill um so ein Exploit zu bauen. Mit einem Exploit ist es außerdem in der Regel nicht getan, da die Version und Konfiguration von PHP, libc, Kernel und/oder anderen Komponenten auf dem Zielsystem ggf. Anpassungen erforderlich machen.

Viele Software die mit PHP gebaut wurde steht im Fokus der Angriffe. Bei WP vom Verhältnis her vor allem 3rd Party Plugins die oft eine ehr bescheidene Qualität haben. Deren Entwickler würden aber auch in jeder anderen Sprache mindestens genauso schlechten Code produzieren.

Zu guter letzt sei für alle nochmals gesagt: das alles soll nicht die Wichtigkeit von Patchen und Hardening (Angriffsfläche reduzieren) relativieren. Man kann nicht sagen mit was für Angreifern man es zu tun hat. Man weiß nicht wie sich die Lage entwickeln wird. Die PHP Entwickler könnten die Lust verlieren und die Qualität des Codes nimmt rapide ab. Oder es werden mal wieder 0-Day Exploits irgendwelcher Geheimdienste geleaked. Oder es gibt neue Techniken die Angriffe generell vereinfachen. Oder oder oder.
 
Ja, vielen Dank, aber in deinem letzten Absatz zählst du ja schon selbst einige Gründe auf, die mich letztlich zu meiner Entscheidung geführt haben, bei der ich auch zu bleiben gedenke. Denn der Ansatz ist immer noch ganz einfach:

Content vor Wartung und gleichzeitig möglichst nahezu NULL Angriffsfläche.

Kein Mensch benötigt wirklich für echten Content den ganzen Klimbim, den man heutzutage so als "moderne Website" betitelt. Wenn man sich zum Beispiel die Homepage von Florian Anwander ansieht (diese nehme ich mal beispielhaft, weil es eine der letzten gewesen ist, die ich besucht hatte), stehen da sehr viele nützliche und interessante Fakten. Ein Webdesigner würde vielleicht sagen: da muss aber .... Nein! Muss nicht! Das sagst du nur, weil es dein Job ist und du damit Geld verdienst und wir in einem längst dysfunktionalem Wirtschaftssystem leben, dass genau davon lebt. Das ist ein komplett anderes Thema, dem ich mich noch an anderer Stele zu widmen Gedenke, aber das ist ein generelles Grundproblem, wie unsere Gesellschaft aufgebaut ist und deshalb mehr als nur teilweise auch dysfunktional ist. Die Bürokratie ist eine der schlimmeren Ausprägungen davon. Mir kommt es auf die Infos an, nicht auf Klimbim.

1. Stimmt, aber ich versuche die 0 irgendeiner anderen Anzahl vorzuziehen, finde ich mathematisch betrachtet geschickter. Das ist so ähnlich, wie die Entscheidung für freie Software (nicht im Sinne von kostenlos, sondern so, wie Richard Stallmannn es immer propagiert hat). Oder ein "sicheres Atomkraftwerk". Mathematisch ist jede Wahrscheinlichkeit ungleich Null eben doch möglich, egal wie unwahrscheinlich sie sein mag, das kann ja von vielen Faktoren abhängen. Im Falle des Atomkraftwerks zum Beispiel auch von der Anzahl von "willigen Terroristen".

2. In Zeiten, in denen ein Computer faktisch Wegwerfware ist, sind die Möglichkeiten auf diesem Gebiet unendlich groß. Somit ist auch nur etwas Geld und viel Wille notwendig, um vorhandene Schwächen zu finden, die es i.d.R. auch gibt. Es gab da mal diesen schönen Exploit, bei dem man aus der VM ausbrechen konnte. Wenn solcher Aufwand getrieben wird, wird auch anderer Aufwand getrieben. Ob etwas eine Rolle spielt, oder nicht, damit möchte sich mein Gehirn genau 0 Sekunden im Jahr beschäftigen.

Trotzdem danke für deinen qualitativ gehaltvollen Beitrag, was ja im Internet beileibe nicht die Regel ist.
 
Wenn man sich zum Beispiel die Homepage von Florian Anwander ansieht (diese nehme ich mal beispielhaft, weil es eine der letzten gewesen ist, die ich besucht hatte), stehen da sehr viele nützliche und interessante Fakten.
Danke für das Lob!

Um ein bisschen prahlen ein paar Zahlen vom gestrigen Tag:
  • Einzelaufruf von HTML Seiten, ungefiltert (sogenannte Pageimpressions) 10099
  • Wenn ich die Bots rausnehme: 2794 HTML-Seiten (plus ~2000 Bild- oder Audio-Dateien)
  • Anzahl der Quell-IPs, sprich, Anzahl der vermutlichen individuellen Benutzer: 445
  • Davon rufen 253 exakt eine Seite (typische Google-Treffer)
  • 88 Besucher rufen 3 oder mehr Seiten auf
  • Dazu kommen nochmal 289 direkte Aufrufe von Bildern oder Audiofiles (also Aufrufe, die nicht Folge der Einbettung in einer meiner HTML-Seiten sind).
Wie gesagt: das Ergebnis eines ganz normalen Tages.

Die komplette Site ist mit vi erstellt, um (statische) Audio-Playlisten und Bildgalerien zu erstellen, benutze ich jeweils ein shellscript.
Das einzige was nur irgendwie dynamisch auf meinen Seiten ist, ist ein JavaScript, das auf mobil-Clients abprüft und dann einen entsprechend andere Schriftgröße setzt, bzw Bildgrößen anders macht.


Ich würde sagen: "Content rules"
 
Zuletzt bearbeitet:
Genau, Vi(m) und Content, und (e)links als Browser der Zukunft nicht zu vergessen. :)

Nur weil der Zufall gerade Streiche mit mir spielt, und mir Dinge vor die Hütte wirft, die ich eigentlich gar nicht mehr betrachten wollte, um zu einer Entscheidung zu kommen, die aber dennoch auf den ersten Blick sehr verlockend klingen: ein neuer Mitbewerber hat den Thread betreten. (Und nach 30sekündiger Sichtung erscheint mir die Kombination sehr schmackhaft, aber ich schaue nochmal genauer hin.)


Das muss Liebe sein :) :

 
Zuletzt bearbeitet:
Ja, vielen Dank, aber in deinem letzten Absatz zählst du ja schon selbst einige Gründe auf, die mich letztlich zu meiner Entscheidung geführt haben, bei der ich auch zu bleiben gedenke. Denn der Ansatz ist immer noch ganz einfach:

Content vor Wartung und gleichzeitig möglichst nahezu NULL Angriffsfläche.

Kein Mensch benötigt wirklich für echten Content den ganzen Klimbim, den man heutzutage so als "moderne Website" betitelt. Wenn man sich zum Beispiel die Homepage von Florian Anwander ansieht (diese nehme ich mal beispielhaft, weil es eine der letzten gewesen ist, die ich besucht hatte), stehen da sehr viele nützliche und interessante Fakten. Ein Webdesigner würde vielleicht sagen: da muss aber .... Nein! Muss nicht! Das sagst du nur, weil es dein Job ist und du damit Geld verdienst und wir in einem längst dysfunktionalem Wirtschaftssystem leben, dass genau davon lebt. Das ist ein komplett anderes Thema, dem ich mich noch an anderer Stele zu widmen Gedenke, aber das ist ein generelles Grundproblem, wie unsere Gesellschaft aufgebaut ist und deshalb mehr als nur teilweise auch dysfunktional ist. Die Bürokratie ist eine der schlimmeren Ausprägungen davon. Mir kommt es auf die Infos an, nicht auf Klimbim.

1. Stimmt, aber ich versuche die 0 irgendeiner anderen Anzahl vorzuziehen, finde ich mathematisch betrachtet geschickter. Das ist so ähnlich, wie die Entscheidung für freie Software (nicht im Sinne von kostenlos, sondern so, wie Richard Stallmannn es immer propagiert hat). Oder ein "sicheres Atomkraftwerk". Mathematisch ist jede Wahrscheinlichkeit ungleich Null eben doch möglich, egal wie unwahrscheinlich sie sein mag, das kann ja von vielen Faktoren abhängen. Im Falle des Atomkraftwerks zum Beispiel auch von der Anzahl von "willigen Terroristen".

2. In Zeiten, in denen ein Computer faktisch Wegwerfware ist, sind die Möglichkeiten auf diesem Gebiet unendlich groß. Somit ist auch nur etwas Geld und viel Wille notwendig, um vorhandene Schwächen zu finden, die es i.d.R. auch gibt. Es gab da mal diesen schönen Exploit, bei dem man aus der VM ausbrechen konnte. Wenn solcher Aufwand getrieben wird, wird auch anderer Aufwand getrieben. Ob etwas eine Rolle spielt, oder nicht, damit möchte sich mein Gehirn genau 0 Sekunden im Jahr beschäftigen.

Trotzdem danke für deinen qualitativ gehaltvollen Beitrag, was ja im Internet beileibe nicht die Regel ist.

Ich wollte Deine Entscheidungen in keinster Weise in Frage stellen. Mir ging es nur um Ergänzende Informationen, weil ich recht weit verbreite Mythen (Quantität von CVEs lassen auf das Sicherheitsniveau schließen, PHP ist unsicher) nicht unkommentiert lassen will. 🙂
 
Meine Aussage sollte auch vielmehr sein: jeder unnötige Ballast, ist angreifbarer Ballast ,anstatt PHP ist unsicher .
 

Danke. Aber der erste Blick sagt mir, die anderen sind flexibler, auch wenn ich Python mag, oder früher mochte, da es viele gute Ansätze hatte (Verbindung von funktional, prozedural und OOP war nur einer davon, hat er leider nicht ganz durchgezogen, der Guido.) Ist es Absicht, dass das Menü auf der linken Seite mit hochscrollt? Ist das eine Limitierung von Sphinx? Das würde mich persönlich sehr stören, ist mir sofort beim ersten Hochscrollen aufgefallen. Aber vermutlich ist die Website einfach nicht entsprechend aufgeteilt?
 
Danke. Aber der erste Blick sagt mir, die anderen sind flexibler, auch wenn ich Python mag, oder früher mochte, da es viele gute Ansätze hatte (Verbindung von funktional, prozedural und OOP war nur einer davon, hat er leider nicht ganz durchgezogen, der Guido.) Ist es Absicht, dass das Menü auf der linken Seite mit hochscrollt? Ist das eine Limitierung von Sphinx? Das würde mich persönlich sehr stören, ist mir sofort beim ersten Hochscrollen aufgefallen. Aber vermutlich ist die Website einfach nicht entsprechend aufgeteilt?
Python ist ja nur die Sprache, in der Sphinx selbst geschrieben ist. Der Inhalt selbst wird in reST geschrieben. (Textformat ganz ähnlich zu Mark-Down) Ich habe mich für Sphinx entschieden, weil man es leicht mit eignen Plugins erweitern kann und so z.B. neue Befehle zur Markup-Sprache hinzufügen kann.

Das das Menü mit hochscrollt liegt einfach an meinem Theme, ich mag das halt so. Man kann sich Themen leicht selbst erstellen, ich habe meins von einem Standard-Thema abgeleitet. Der Quellcode für mein Theme ist hier: https://gitlab.com/amesser-group/misc/bastelmap

Die oben verlinkte sphinxdoc Webseite ist übrigens ebenfalls mit Sphinx erstellt, dort scrollt das Menü nicht mit. Den gesamten Quellcode dieser sphinx-doc Web-Seite findest du hier: https://github.com/sphinx-doc/sphinx/tree/master/doc. Hier ist eine Seite wo man sich mal ein paar Themes anschauen kann: https://sphinx-themes.org/

Der Ursprung von Sphinxdoc liegt in der Dokumentation von Python-Modulen. Es hat sich aber inzwischen sehr viel weiter entwickelt. Es gibt auch Systeme die auf Sphinx basieren und speziell für Webseiten gemacht sind z.B. https://getpelican.com/ (Damit hatte ich ursprünglich angefangen)
 
Sorry fürs Privatgespräch
Vi? echt? nicht mal ViM? Respekt.
Naja, das ist wohl schon ViM (der letzte echte vi dürfte auf meine HPUX 712er vor 18 Jahren gewesen sein), aber bis auf die Cursorsteuerung während dem Insert-Modus nutze ich kein ViM-spezifisches Feature. Ich schalte zB immer Auto-Indentation oder Syntax-Highlighting ab, weil das nur nervt.
Nutzt du irgendwelche Frameworks dazu oder ist alles von Hand gemacht.
Alles von Hand. Das einzige, was ich in letzter Zeit nicht von Hand gemacht hab, sind die etwas komplexeren Tabellen in den Modulbedienungsanleitungen, mit mehrfach geschachtelten Rowspans und Colspans. Die hab ich in einer Confluence-Installation gebaut, auf die ich Zugriff habe, und hab dann den HTMl-Quellcode in meine Seite rüberkopiert. Aber der Rest ist Handarbeit.
 


Neueste Beiträge

News

Zurück
Oben