Gruniversal Blog

Technisches und Persönliches

Matomo ohne Consent-Layer

Für das neulich beschriebene ErWiN-Projekt stand die Frage im Raum, wie ich dafür Benutzerstatistiken mit Matomo erhalten könnte. Diese sollten möglichst wenig störend sein und trotzdem natürlich DSGVO-konform.

Ich hatte mich auf der Website der Employees for Future zuletzt für einen Consent-Layer im WordPress entschieden, allerdings ist so ein Layer letztlich natürlich trotzdem irgendwie nervig und ein Teil der Nutzer wird sich auf Grund der Funktionsweise gegen einen Opt-In entscheiden, was die Menge an auswertbaren Daten natürlich verringert.

Gibt es da vielleicht noch einen besseren Weg? Ja, gibt es, aber auch der hat seinen Preis. Warum ich ihn trotzdem gut finde, beschreibe ich in diesem Artikel.

MediaWiki Projekt: ErWiN

In diesem Artikel möchte ich erläutern, wie es dazu kam, dass ich mich für ein Projekt nachhaltig mit MediaWiki auseinander gesetzt habe, was dabei heraus gekommen ist und was ich dabei gelernt habe.

Alles begann im letzten Jahr während einer coronabedingten Auftragsflaute in meinem Unternehmen, die mir über mehrere Monate Kurzarbeit bescherte. Was zunächst ganz erholsam und dank Kurzarbeitergeld auch finanziell abbildbar klang, führte mich doch recht bald zu einer wichtigen Frage: Was fängt man mit soviel Freizeit an?

Nachdem ich mich zunächst mit allerlei Sport und haushaltsnahen Tätigkeiten, wie z.B. Bärlauchpesto herstellen, beschäftigt habe, entschied ich mich kurzentschlossen ein neues Projekt mit MediaWiki zu starten.

WordPress Plugin: WPFront User Role Editor

Für eins der von mir betreuten Projekte bin ich nun etwas detaillierter mit dem Thema Rollen und Rechte bei WordPress in Kontakt gekommen. Konkret ging es um die Frage, wie man Seiten nur für bestimmte Benutzer editierbar macht.

Wie immer suchte ich nach einer schnellen und praktikablen Lösung und dachte, sowas müsse doch im WordPress Core schon irgendwie enthalten sein. Dies ist jedoch leider nicht der Fall, daher begann die Suche nach einem passenden Plugin.

Mit dem WPFront User Role Editor bin ich letztlich fündig geworden.

Webcam Logitech C310 HD

Während Corona hat die Anzahl der Webkonferenzen deutlich zugenommen und im Home-Office habe ich nach wie vor keinen Laptop sondern einen schicken Kasten-Rechner unterm Schreibtisch stehen, der von Hause aus keine Webcam mitbringt.

Also war bin ich seit März auf der Suche nach einer Webcam, was bisher daran scheiterte, dass diese europaweit praktisch ausverkauft waren. Offenbar gibt es noch andere Kasten-Rechner-Nutzer da draußen :)

Kürzlich hat es dann mit der Lieferung geklappt und so nenne ich jetzt ein Logitech C310 HD mein Eigentum. Aber läuft die auch wie gehofft problemlos unter Linux?

Ein besseres FTP-Backup

Wie ich im März in meinem Artikel zum automatischen FTP-Download beschrieben habe, gibt es für mich die Notwendigkeit regelmäßig den Stand der WordPress-Instanzen vom Server lokal zu ziehen.

Dafür habe ich auch ein kleines Makefile mit wget-Aufruf erstellt und in der Nachbetrachtung festgestellt, dass das Script noch ein paar Verbesserungswünsche offen lässt.

Heute habe ich mich mal dran gesetzt und die das Makefile ein klein wenig aufpoliert, so dass es nun noch nützlicher ist.

Bootfähigen USB Stick für Windows 10 Installation unter Linux Mint erstellen

Für einen älteren Laptop habe ich kürzlich eine kleine Rettungsaktion durchgeführt und dabei u.a. die Festplatte gegen eine SSD ausgetauscht. Nun brauchte das Gerät natürlich wieder ein Betriebssystem und die Wahl des Nutzers fiel auf Windows 10 Pro.

Da das entsprechende ISO-Image nicht auf eine DVD passt, musste ich einen bootfähigen USB-Stick erstellen, der das ISO transportieren kann. Aber läuft das eigentlich unter Linux? Welches Toolset braucht man dafür?

Nach der Lektüre verschiedener Beiträge (u.a. vom LinuxMagazin) hab ich es dann mit einer Kombination aus Gnome Disks und Unetbootin versucht.

Alternative CDDB Server

Ich gehöre zu der Generation, die noch CDs kauft und diese dann über Tools wie z.B. Ripper X in MP3 umwandelt, damit ich die Musik flexibel unterwegs bzw. an verschiedenen Geräten hören kann.

Um die erstellten MP3s nicht manuell benennen zu müssen, nutze ich bisher gern die CDDB-Funktion in Ripper X. Hierbei wird auf Basis der Längen der Tracks in der “Compact Disc Database” nachgeschlagen, um welche CD es sich handelt und die entsprechenden Titel und Interpret-Informationen zurückgeliefert. Die MP3s werden dann automatisch entsprechend benannt.

Zumindest war das bislang so. Nun blieb der entsprechende CDDB-Server leider stumm. Wie ich bei Heise nachgelesen habe, wurde das Projekt des Betreibers Magix leider offenbar eingestellt. Zum Glück gibt es verschiedene Alternativ-Server, wovon einige allerdings ebenfalls nicht mehr aktiv sind.

Aktuelle Alternativen:

  • freedb.freac.org/~cddb/cddb.cgi
  • freedb.dbpoweramp.com/~cddb/cddb.cgi

Stand heute mit Ripper X nicht (mehr) funktionstüchtig:

  • freedb.musicbrainz.org/~cddb/cddb.cgi
  • freedb2.org/~cddb/cddb.cgi
  • gnudb.gnudb.org/~cddb/cddb.cgi

Ich hab mich nun erstmal für freedb.freac.org entschieden, weil der am schnellsten antwortete und hoffe sehr, dass der Dienst nicht perspektivisch komplett verschwindet.

Wobei.. viele meiner CDs kennt CDDB nun auch nicht, insofern würde ich das gelegentliche Abtippen wohl überleben.

Flatpak Cache und unbenutzte Runtimes löschen

Neben apt nutze ich auf meinem Linux Mint System auch gelegentlich Flatpak zur Verwaltung von Anwendungen. Dies ist dann der Fall, wenn der Maintainer diesen Weg empfiehlt.

Nun ist mir aufgefallen, dass Flatpak nicht eben sorgsam mit meinem Speicherplatz umgeht. So wird einerseits ein Cache unter /var/tmp/ angelegt als auch ein Repo unter /var/lib/.

Das ist per se kein Problem, allerdings ist Flatpak offenbar schlecht darin diese Ordner aufzuräumen, daher sammeln sich hier mit der Zeit immer mehr Daten an.

Man muss Flatpak immer mal sagen, es soll sein Zimmer aufräumen :)

Linux Mint Admin

Um Flatpak auf die Sprünge zu helfen, kann man mit diesem Befehl die nicht mehr genutzten Runtimes löschen:

$ flatpak uninstall --unused -y

Dabei werden praktisch veraltete Versionen der Anwendungen, die Flatpak mal heruntergeladen hat, entfernt. Lässt man das -y zeigt Flatpak auch, welche Anwendungen in welcher Version dies betrifft.

Für die Bereinigung der Caches habe ich im GitHub Forum eine praktische Lösung gefunden. Dabei wird geprüft, ob Flatpak gerade läuft und falls nicht der Cache gelöscht. Statt wie beschrieben den Service einzurichten, kann man den Befehl natürlich auch einfach auf der Kommandozeile ausführen:

$ bash -c "! pgrep -x flatpak && rm -r /var/tmp/flatpak-cache-*"

In meinem Fall hat das gerade ca. 2 GB Daten freigegeben, wobei ich Flatpak – wie beschrieben – wirklich wenig nutze.

Ich hab das Ganze nun noch in meinem /etc/anacrontab hinterlegt, damit An(n)a dem Flatpak regelmäßig sagt sein Zimmer aufzuräumen :)

ftp-mysql-dump: eine Datenbank per FTP abholen

Die letzten Wochen arbeite ich recht intensiv an einem aktuellen Projekt und habe daher wenig Zeit aufs Bloggen verwendet. Dazu werde ich später sicherlich nochmal was schreiben. In diesem Zusammenhang kam ich aber an eine Aufgabenstellung, die mir immer mal wieder über den Weg läuft:

“Wie holt man eigentlich am besten einen Datenbankstand vom Webserver, wenn man kein SSH zur Verfügung hat?”

David

Bisher habe ich dafür oft Tools wie Adminer genutzt. Das klappt gut, aber da ich ein Freund von Automatisierung bin, habe ich diesmal ein Tool gesucht, welches sich in ein Makefile einbinden lässt. Meine Internet-Recherche hierzu stellte mich nicht unbedingt zufrieden, daher entschied ich mich das Ganze einfach selbst umzusetzen.

Die Grundidee war dabei möglichst ein Script zu haben, welches ohne große Abhängigkeiten funktioniert und sich automatisch zum FTP verbindet, dort dann ein Script hochlädt, dieses ausführt und direkt danach wieder löscht.

PHP Mails lokal loggen

Für ein PHP Projekt wollte ich kürzlich prüfen, welche Mails die Anwendung verschickt. Es ging nur um ein kleines Detail und daher wollte ich keine aufwändige Mailkonfiguration aufbauen, sondern einfach nur den Quellcode der Mails in eine Logdatei schreiben.

Nachdem ich mich zunächst bei sendmail umgesehen habe, ohne eine passenden Parameter zu finden, der die Mails nur in die Queue packt ohne sie aber zu versenden, bin ich dann in einem Blog auf eine einfache Lösung gestoßen.

Dazu hab ich einfach folgendes Script erstellt und ausführbar gemacht:

#!/usr/bin/php
<?php
  $logfile = '/var/log/phpmail.log';
  $log_output = "****" . date('Y-m-d H:i:s') . "****\n";
  $handle = fopen('php://stdin', 'r');
  $count = 0;
  while(!feof($handle)) {
    $count++;
    $buffer = trim(fgets($handle));
    if ($count <= 12) # Output header information
      $log_output .= $count . ": " . $buffer . "\n";
    else # Output body
      $log_output .= $buffer . "\n";
  }
  file_put_contents($logfile, $log_output, FILE_APPEND);
?>

Damit es beim “Senden” einer Mail ausgeführt wird, reicht eine einfache Anpassung in der php.ini des Apache:

$ sudo vim /etc/php/7.2/apache2/php.ini
; send mail to /var/log/phpmail.log
sendmail_path = /path/to/phpmail

Das wars schon. Mehr ist nicht notwendig und ab sofort kann man den Mailinhalt leicht aus der phpmail.log herauslesen, z.B. mit tail:

$ tail -f /var/log/phpmail.log

Mein Problem war in 10 Minuten gelöst. Danke Internet! :)

Seite 1 von 3

Präsentiert von WordPress & Theme erstellt von Anders Norén