Mein Blog // Digitales Archiv

Gedanken, Projekte und technische Notizen

Ich habe kurzerhand meinen Blog von WriteFreely auf eine Eigenentwicklung umgestellt: MD-Blog (das MD steht natürlich für Markdown). Der Auslöser war ein fehlgeschlagenes Update des alten Systems – am Ende war es aber der perfekte Anstoß, um alles radikal zu vereinfachen und die volle Kontrolle über das Design zu gewinnen.

Das Herzstück sind einfache Markdown-Dateien im data/-Ordner, die zur Laufzeit in modernes HTML umgewandelt werden. Das Ergebnis ist blitzschnell, kommt ohne Datenbank aus und sieht dank eigenem Design-System (inklusive Dark Mode) jetzt genau so aus, wie ich es mir vorgestellt habe. Sogar ein moderner Mastodon-Share-Button ist jetzt direkt mit an Bord.

Falls ihr Interesse am Code oder dem schlanken Setup habt, meldet euch gerne über Mastodon bei mir!

Eigentlich ist die Idee hinter #Winboat hervorragend, doch die Umsetzung scheint aktuell noch etwas instabil zu sein. Seit der Installation Anfang des Jahres lief das System zwar, doch heute hat die Software komplett den Dienst verweigert.

Das Image meldete plötzlich unzureichenden Arbeitsspeicher (RAM). Ich habe noch versucht, das Problem manuell zu beheben, was das System jedoch leider endgültig unbrauchbar gemacht hat. Anstatt weitere Zeit in die Fehlersuche zu investieren, bin ich direkt auf das Dockurr Windows-Image umgestiegen – dieses bildet ohnehin die technische Basis von Winboat.

Fehlermeldung

1. Vorbereitung

Da ich Podman verwende, habe ich zunächst die erforderlichen Verzeichnisse auf meinem Host-System erstellt. So bleibt die Datenintegrität gewahrt, falls der Container neu erstellt werden muss:

mkdir -p $HOME/Windows/System
mkdir -p $HOME/Windows/Shared

2. Der Startbefehl

Wichtiger Hinweis: Ersetze in den Variablen -e USERNAME und -e PASSWORD die Platzhalter durch deine persönlichen Zugangsdaten.

podman run -d \
  --name windows \
  -p 8006:8006 \
  --device=/dev/kvm \
  --cap-add NET_ADMIN \
  -e RAM_SIZE="8G" \
  -e USERNAME="Carsten" \
  -e PASSWORD="1234" \
  -e LANGUAGE="German" \
  -v $HOME/Windows/System:/storage:Z \
  -v $HOME/Windows/Shared:/shared:Z \
  --stop-timeout 120 \
  dockurr/windows

Sobald der Container aktiv ist, kannst du die Windows-Instanz direkt über deinen Browser aufrufen:

http://127.0.0.1:8006

Laufender Container

3. Zusammenfassung

Den oben genannten Befehl musste ich lediglich einmal ausführen. Im täglichen Betrieb lässt sich die Windows-Umgebung nun ganz komfortabel über diese Kurzbefehle steuern:

  • Starten: podman start windows
  • Stoppen: podman stop windows (oder direkt innerhalb von Windows herunterfahren)
  • Status prüfen: podman ps -a

Weiterführende Links:

Ich habe mir einen eigenen Blog installiert — vor allem, um #NixOS besser kennenzulernen. Überraschenderweise ging das alles ziemlich unkompliziert.

WriteFreely passt dafür richtig gut: minimalistisch, schnell eingerichtet und ohne viel Ballast. Perfekt, um einfach loszulegen und nebenbei etwas zu lernen. Die Konfiguration ist angenehm übersichtlich. Ein paar Optionen gesetzt, Verzeichnis vorbereitet, Reverse Proxy davor — fertig.

So sieht meine aktuelle NixOS-Konfiguration dafür aus:

{ config, pkgs, ... }:

{
  services.writefreely = {
    enable = true;
    host = "blog.burningboard.org"; 
    settings = {
      server = {
        port = 8080;
        min_log_level = "debug";
      };
      app = {
        host = "https://blog.burningboard.org";
        single_user = true;
        landing = "/read";
        wf_modesty = true;
        federation = true;
        public_stats = true;
        theme = "write";
      };
    };
    stateDir = "/opt/writefreely";
  };

  # Fix für die ActivityPub-Schlüsselgenerierung: Föderation erfordert openssl
  systemd.services.writefreely.path = [ pkgs.openssl ];

  # Automatisches Erstellen des Datenverzeichnisses mit den korrekten Berechtigungen
  systemd.tmpfiles.rules = [
    "d /opt/writefreely 0700 writefreely writefreely -"
  ];

  services.caddy.virtualHosts."blog.burningboard.org".extraConfig = ''
    reverse_proxy 127.0.0.1:8080 {
      header_up Host {host}
      header_up X-Real-IP {remote_host}
      header_up X-Forwarded-For {remote_host}
      header_up X-Forwarded-Proto {scheme}
    }
  '';
}

Das war's schon im Wesentlichen. NixOS macht es wirklich einfach, solche Dienste sauber zu konfigurieren und reproduzierbar zu halten.