Zum Inhalt springen →

Wie man Wordpress ersetzen kann - mit Go und SQLite!

Okay, eins vorweg. Die Arbeit hat größtenteils Codex gemacht, weswegen die KI 90% des Textes geschrieben hat. Ich habe aber den Text überarbeitet und natürlich waren ja alle Prompts von mir ;-). 

Inspiriert durch den - Vorfall kam ich ins nachdenken. Mit mir viele andere. Einige sagten, man könnte eine Webseite einfach mit Go und SQLite erstellen. 

Also wollte ich mal ausprobieren, ob mein -Blog in eine Webseite auf Basis von und verwandeln kann. Inzwischen ist daraus eine eigene kleine Blogsoftware geworden. Mit Redaktion, Kommentaren und einer Verbindung zu , die in beide Richtungen funktioniert.

Zeitaufwand für mich netto: 10 Minuten - für Codex ca. 3 Stunden netto.

Angefangen haben wir mit einer Kopie des bisherigen Blogs. Beiträge, Bilder, Kategorien und Schlagwörter sollten erhalten bleiben. Auch die vertraute Optik war zunächst wichtig. Schließlich hängt an so einem Blog einiges an Geschichte. Danach kamen kleinere Änderungen an Abständen, Bildern, Navigation und Darstellung hinzu. Inzwischen gibt es auch einen Hell- und Dunkelmodus, der sich nach der lokalen Uhrzeit richtet und sich per Schaltfläche umstellen lässt.

Damit ich künftig selbst Beiträge veröffentlichen kann, hat Codex eine einfache Redaktion gebaut. Dort kann ich schreiben, Bilder einfügen, Entwürfe speichern und Beiträge veröffentlichen. Die Oberfläche ist bewusst übersichtlich gehalten. Für mein privates Blog brauche ich vor allem einen angenehmen Ort zum Schreiben.

Der Editor des Blogs im Admininterface


Ein Screenshot vom Redaktionssystem


Technisch läuft das Ganze als Go-Anwendung auf meinem vorhandenen Webspace. Der Webserver startet die Anwendung über seine CGI-Schnittstelle, wenn eine entsprechende Anfrage ankommt. Die Anwendung liest die benötigten Inhalte aus SQLite und erzeugt daraus die fertige HTML-Seite. Im Browser kümmern sich etwas JavaScript und CSS um Dinge wie das Menü, den Designwechsel oder die Kommentarformulare.

SQLite speichert die Daten in einer lokalen Datenbankdatei. Ein zusätzlicher Datenbankserver ist dafür nicht erforderlich. Die eigentliche Bloganwendung kommt inzwischen ohne WordPress aus. Regelmäßige Backups bleiben natürlich trotzdem wichtig.

Besonders spannend finde ich die Mastodon-Verbindung. Wenn ich einen neuen Blogartikel entsprechend freigebe, wird sein vollständiger Text auf Mastodon veröffentlicht. Passt er nicht in einen einzelnen Beitrag, entsteht automatisch ein nummerierter Thread. Die Teile antworten aufeinander, und im ersten Teil steht der Link zum Blog. Der Text wird dabei möglichst an Absatz- oder Satzgrenzen aufgeteilt.

Admininterface für Mastodonanbindung


Auch die andere Richtung funktioniert: Eigene öffentliche Mastodon-Beiträge mit werden als Artikel übernommen. Das erste Satzzeichen trennt dabei Überschrift und Beitragstext. Ein abschließender Punkt verschwindet aus der Überschrift, Frage- und Ausrufungszeichen bleiben erhalten. Eigene Thread-Fortsetzungen werden an den Artikel angehängt. Die Nummerierungen der einzelnen Teile braucht man im zusammengeführten Blogartikel dann nicht mehr.

Damit daraus keine Endlosschleife wird, merkt sich die Software, woher ein Beitrag stammt. Ein von Mastodon importierter Artikel wird deshalb nicht wieder dorthin zurückgeschickt. Auch bereits versendete Thread-Teile werden gespeichert, damit eine unterbrochene Übertragung fortgesetzt werden kann.

Für diesen Austausch ruft ein beim Hoster eingerichteter Cronjob regelmäßig die Synchronisierung auf. Darüber werden neue Beiträge und öffentliche Antworten abgeglichen. Antworten aus dem zugehörigen Mastodon-Diskussionszweig erscheinen unter dem Artikel als Kommentare.

Seit heute kann man zusätzlich direkt im Blog kommentieren. Name, E-Mail-Adresse und Kommentar sind Pflichtfelder. Die E-Mail-Adresse bleibt privat, der Kommentar erscheint sofort. In der Redaktion kann ich Kommentare ausblenden, als Spam markieren oder löschen. Im Hintergrund gibt es außerdem Schutz gegen gefälschte Formulareinsendungen, zu häufiges Absenden und doppelte Kommentare.

Ein paar kleinere Dinge machen den Alltag ebenfalls angenehmer: Hashtags verweisen auf die passenden Schlagwortseiten des Blogs. Bilder passen sich an die verfügbare Breite an. YouTube-Videos werden erst nach einem Klick geladen. Und wer einfach mitlesen möchte, kann die Beiträge weiterhin per RSS abonnieren. Impressum und Datenschutzerklärung haben wir passend zu den Funktionen überarbeitet.

Ich lerne dabei selbst noch eine Menge. Über , über Webhosting und darüber, was alles hinter einem scheinbar einfachen Blog steckt. Bislang macht es vor allem tierisch Spaß, die eigene Webseite Schritt für Schritt nach den eigenen Vorstellungen weiterzubauen.

Veröffentlicht in Tech

7 Kommentare

  1. @G00NZ00 Da der Auslöser php2shell war, stellt sich dann zwangsläufig die Frage, ob Du nun, hinterher, sicherer aufgestellt bist als vorher.
    Ferndiagnose: Vermutlich nicht. Du hast jetzt eine proprietäre Software, die mutmaßlich Sicherheitslücken hat, die einfach bestehen bleiben. Die zugrundeliegende Programmiersprache wurde gewechselt, aber alle Sprachen haben beizeiten ihre Lücken.
    Einziger Vorteil: Dadurch dass Du keine Standardsoftware mehr einsetzt, bis Du kein einfaches Ziel für Ausnutzung von bekannten Lücken ebendieser.

    Antwort auf Mastodon ↗

  2. @Ascendor Ja, das stimmt soweit. PHP2Shell war der Auslöser, aber der Grund ist ein Spieltrieb gewesen. Natürlich auch weil ich schauen möchte, welche Gefahren aber auch Vorteile das alles hat. Ich betreue auch gewerbliche Webseite die noch auf Wordpress bleiben. Wenn Du Sicherheitshinweise für meine Sicherheitslücken hast, die mir helfen können das abzudichten nehme ich die gern.

    Antwort auf Mastodon ↗

  3. @G00NZ00 Habe ich nicht, denn ich kenne Deine Software ja nicht. Vor- und Nachteil von proprietärer Software. Aber selbst wenn ich sie kennen würde, böte ich keine Gratis-Audits an ;-)
    Mein Punkt war eher: Standardsoftware hat den Vorteil, dass sich jemand darum kümmert.

    (Und den Nachteil, dass sie ein lohnendes Ziel für Angriffe ist)

    Antwort auf Mastodon ↗

  4. @Ascendor Ja, hatte ich ja jetzt auch ausgeführt und da bin ich komplett deiner Meinung. Dennoch schade dass Du mir keine kostenlose Sicherheitsberatung anbietest :-) .

    Antwort auf Mastodon ↗

  5. @Ascendor ... Beim Wartungsproblem und der Sicherheit gebe ich dir also grundsätzlich recht. Allerdings haben wir auch die Anwendung vereinfacht und WordPress samt PHP-Plugins aus dem neuen Blogbetrieb entfernt. Dazu kommen konkrete Schutzmaßnahmen für Anmeldung, Formulare, Datenbankzugriffe und Uploads. Der mögliche Vorteil besteht deshalb durchaus in einer kleineren Angriffsfläche und nicht ausschließlich darin, unbekanntere Software einzusetzen. (1/2)

    Antwort auf Mastodon ↗

  6. Die Verantwortung für regelmäßige Sicherheitsprüfungen und Updates liegt jetzt stärker bei mir. Das ist der entscheidende Punkt deiner Kritik, den ich ernst nehme. (2/2)

    Antwort auf Mastodon ↗

  7. Ein kleiner Nachtrag. Nach einigen Sicherheitshinweisen habe ich Codex ebenfalls um die Überwachung des Projekts gebeten. Er scannt nun regelmäßig nach Sicherheitslücken und kann diese, nach einer Freigabe von mir, einfach umsetzen. Er hat insgesamt 4 Lücken und Updates gefunden, die er behoben hat. Ich habe also auch sowas wie einen Auto-Updater mit Codex.

    Antwort auf Mastodon ↗

Schreibe einen Kommentar

Name, E-Mail-Adresse und Kommentar sind erforderlich. Dein Name und dein Kommentar werden hier im Blog veröffentlicht; deine E-Mail-Adresse bleibt privat. Der Kommentar erscheint sofort. Datenschutz