Firefox Klar ist ein spezialisierter Privatsphäre-Browser. Nun hat Mozilla Firefox Klar 160 für Android veröffentlicht und überarbeitet damit das Menü-Design.
Mozilla hat Firefox Klar 160 (internationaler Name: Firefox Focus 160) für Android veröffentlicht.
Die Neuerungen von Firefox Klar 160 für Android
Firefox Klar 160 bringt Unterstützung für ein monochromes App-Symbol. Dazu kommen wie immer neue Plattform-Features der aktuellen GeckoView-Engine, Fehlerbehebungen sowie geschlossene Sicherheitslücken.
Bei einem gescheiterten Cron-Job oder einem Problem in der RAID-Konfiguration sollte eigentlich sofort eine Mail an den Admin gehen. Wenn auf dem Server ein Mailserver installiert ist, funktioniert das mehr oder weniger auf Anhieb: Sie müssen maximal einen Mail-Alias angeben oder die gewünschte Empfängeradresse in /etc/crontab eintragen.
Aber nicht jeder Server braucht auch einen Mail-Server! Dessen Administration verursacht selbst jede Menge Arbeit. Bei »kleinen« Servern ohne richtigen MTA (Mail Transfer Agent) ist msmtp eine gute Alternative. Das Programm übergibt die zu sendenden Nachrichten einfach an einen externen SMTP-Server.
Ich habe msmtp vor ein paar Tagen auf einem frisch installierten Virtualisierungs-Host (Ubuntu 26.04) eingerichtet. Dieser Beitrag fasst die Konfiguration zusammen.
Funktionsweise
msmtp ist kein Mail-Server. Das Programm nimmt keine Mails von außen entgegen, hat keine Warteschlange und kümmert sich auch nicht um die Zustellung an den Ziel-Server. Es macht nur eines: Es reicht eine Nachricht per SMTP an einen externen Mail-Server weiter, bei dem Sie ein Konto haben, z.B. bei Ihrem Mail-Provider (mailbox, Gmail etc.). Dieser Server erledigt dann den Rest.
Für Cron & Co. ist das ideal: Diese Programme rufen zum Mail-Versand traditionell /usr/sbin/sendmail auf. Das Paket msmtp-mta stellt genau dieses Kommando zur Verfügung (als Link auf msmtp). Damit funktioniert der Mail-Versand für alle Programme, die einen lokalen Mail-Server erwarten.
Der Preis für die Einfachheit: Ist der SMTP-Server gerade nicht erreichbar, scheitert der Versand, und die Mail ist verloren. Es gibt keinen zweiten Versuch eine Stunde später.
Installation
Unter Debian und Ubuntu installieren Sie drei Pakete:
apt install msmtp msmtp-mta bsd-mailx
msmtp ist das eigentliche Programm, msmtp-mta richtet /usr/sbin/sendmail ein, und bsd-mailx stellt das Kommando mail zur Verfügung, mit dem Sie im Terminal oder in Scripts unkompliziert Mails versenden können.
Während der Installation fragt ein Dialog, ob Sie das AppArmor-Profil für msmtp aktivieren möchten. Die Defaulteinstellung lautet Nein, und dabei habe ich es belassen. Wenn Sie AppArmor aktivieren, darf passwordeval (siehe unten) nur einige ausgewählte Hilfsprogramme aufrufen (cat, gpg, pass, secret-tool usw.). Details können Sie in /usr/share/doc/msmtp/README.Debian nachlesen.
Konfiguration
Die systemweite Konfiguration befindet sich in /etc/msmtprc. Meine Datei sieht (mit anonymisierten Adressen) so aus:
# Datei /etc/msmtprc
# Default-Werte für alle weiteren Accounts
defaults
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
aliases /etc/aliases
# erster Account
account myfirstaccount
host smtp.example.com
port 587
user admin@example.com
passwordeval "cat /etc/msmtp-password"
from server1@example.com
# optional: weitere Accounts
account myotheraccount
...
# welcher Account gilt per Default
account default : myfirstaccount
Der Abschnitt defaults enthält Einstellungen, die für alle Konten gelten: Authentifizierung, TLS (hier mit STARTTLS auf Port 587), die Datei mit den CA-Zertifikaten, eine Logging-Datei und die Alias-Datei. Darauf folgt die Definition des eigentlichen Kontos. Sie können mehrere Konten definieren, für einen Server reicht aber eines. account default : ... legt fest, welches Konto msmtp verwendet.
Zu einigen Details:
user und from: Oft stimmen user (zur Authentifizierung) und from (die Absenderadresse) überein. Auf jeden Fall muss Ihr Provider die Absenderadresse für das angegebene Konto akzeptieren. Einige Provider erlauben Aliasse. Ich verwende für jeden Server eine eigene Alias-Adresse. Auf diese Weise sehe ich im Posteingang sofort, woher eine Nachricht kommt.
passwordeval: Das Passwort könnten Sie mit password direkt in msmtprc angeben. Ich habe es stattdessen in die Datei /etc/msmtp-password ausgelagert. passwordeval führt das angegebene Kommando aus und verwendet dessen Ausgabe als Passwort.
aliases:msmtp wertet /etc/aliases aus. Damit landen Mails an lokale Empfänger wie root bei einer »richtigen« Adresse (siehe unten).
Manche Provider bieten anstelle von (oder zusätzlich zu) STARTTLS auf Port 587 eine von Anfang an verschlüsselte Verbindung auf Port 465 an (SMTPS). Wichtig ist tls_starttls off, weil msmtp per Default STARTTLS verwendet:
# Datei /etc/msmtprc (Variante mit Port 465, nur die geänderten Zeilen)
defaults
tls_starttls off
...
account myfirstaccount
port 465
...
Welche Variante Sie wählen, ist letztlich egal, solange Ihr Provider sie unterstützt. Wenn Sie tls_starttls und port nicht zusammenpassend einstellen, hängt msmtp beim Verbindungsaufbau bzw. scheitert mit einer TLS-Fehlermeldung.
Hinweis: Wenn Ihr Provider es anbietet, verwenden Sie anstelle des Passworts für Ihr Mail-Konto ein eigenes App-Passwort. Bei Gmail ist das zwingend erforderlich. Ein Server, der Status-Mails versendet, braucht keinen Zugriff auf Ihr gesamtes Konto.
Logging
Die Logging-Datei richtet msmtp beim ersten Versand selbst ein. Für jede Mail kommt eine Zeile hinzu:
Nov 05 14:07:01 host=smtp.example.com tls=on auth=on user=admin@example.com from=server1@example.com recipients=server1@example.com mailsize=452 smtpstatus=250 smtpmsg='250 2.0.0 Ok: queued as ...' exitcode=EX_OK
Die Datei wächst nur langsam. Eine Logrotate-Konfiguration richtet das Paket nicht ein. Wer Ordnung haben will, legt /etc/logrotate.d/msmtp selbst an:
Eine Alternative zur eigenen msmtp-Logging-Datei ist das Journal: Ersetzen Sie in msmtprc die Zeile logfile ... durch syslog on (oder syslog LOG_MAIL, wenn die Einträge in die Mail-Kategorie gehören sollen). msmtp protokolliert dann jeden Versand mit dem Kennzeichen msmtp. Zum Lesen verwenden Sie journalctl -t msmtp (t wie tag). journalctl -u msmtp funktioniert dagegen nicht, weil msmtp kein systemd-Dienst ist, sondern bei jedem Versand neu gestartet wird.
journalctl -t msmtp -n 20 # die letzten 20 Einträge
journalctl -t msmtp -f # laufend verfolgen
Aliasse am Server und Cron
Viele Systemprogramme senden ihre Mails an root. Damit diese Mails nicht im Nirwana verschwinden, braucht es einen Eintrag in /etc/aliases:
# Datei /etc/aliases
root: server1@example.com
Anders als bei Postfix oder Exim ist hier kein newaliases erforderlich: msmtp liest die Datei bei jedem Aufruf. Wenn Sie alle lokalen Empfänger (also nicht nur root) umleiten möchten, hilft eine zusätzliche Zeile default: server1@example.com.
Für Cron-Jobs in /etc/crontab habe ich außerdem MAILTO eingestellt:
Mit der obigen Alias-Datei ist MAILTO nicht notwendig. MAILTO erlaubt aber bei Bedarf eine von /etc/aliases abweichende Einstellung. Bei mir ist der Absender aller Server-Mails gleichzeitig auch der Empfänger. Damit landet alles, was der Server zu berichten hat, in einem Postfach.
Ausprobieren
Für einen ersten Test senden Sie eine Mail an eine externe Adresse und an root. Führen Sie die Kommandos als root aus (z.B. nach sudo -s), weil nur root die Passwortdatei lesen darf (siehe auch den letzten Abschnitt).
echo "Test 1" | mail -s "msmtp-Test" ich@example.com
echo "Test 2" | mail -s "msmtp-Test an root" root
Wenn etwas nicht klappt, hilft msmtp -v bzw. sendmail -v beim Debugging. tail /var/log/msmtp.log zeigt, was zuletzt passiert ist.
echo "Test 3" | sendmail -v ich@example.com
Um die Mails von Cron zu testen, habe ich vorübergehend einen Cron-Job eingerichtet, der jede Minute läuft und eine Ausgabe liefert (und den ich danach natürlich wieder gelöscht habe):
Kommt die Cron-Mail nicht an, lohnt sich ein Blick ins Journal. msmtp selbst schreibt in der obigen Konfiguration nur in seine eigene Logging-Datei, Cron protokolliert aber jeden Job und meldet auch, wenn die Übergabe an sendmail scheitert:
journalctl -u cron --since "10 min ago"
... CRON[4711]: (root) CMD (echo "Hallo von Cron")
... CRON[4710]: (root) MAIL (mailed 15 bytes of output but got status 0x004e from MTA)
Die Statuszahl ist der Exit-Code von msmtp in hexadezimaler Schreibweise (siehe /usr/include/sysexits.h). 0x4e = 78 steht für EX_CONFIG, also für einen Fehler in der Konfiguration, 0x4b = 75 (EX_TEMPFAIL) für einen nicht erreichbaren Server. Die Meldung No MTA installed, discarding output bedeutet, dass /usr/sbin/sendmail fehlt, also msmtp-mta nicht installiert ist.
RAID, SMART und Updates
Mit dem funktionierenden sendmail-Ersatz können nun auch andere Dienste Mails versenden. Auf meinem Server waren mir drei Dinge wichtig: Warnungen über defekte RAID-Arrays, drohende Probleme mit den SSDs und Berichte über automatische Updates. Alle drei Dienste senden ihre Mails an root; dank /etc/aliases landen sie in meinem Postfach.
mdadm: Unter Ubuntu enthält /etc/mdadm/mdadm.conf bereits die Zeile MAILADDR root, und der Dienst mdmonitor läuft automatisch, sobald es ein Software-RAID gibt. Ich musste also nichts ändern. Mit dem folgenden Kommando erhalten Sie für jedes RAID-Array eine Testmail:
mdadm --monitor --scan --oneshot --test
smartd: Das Paket smartmontools ist unter Ubuntu Server nicht standardmäßig installiert. Nach apt install smartmontools überwacht smartd alle Datenträger. Die mitgelieferte Konfigurationsdatei /etc/smartd.conf sieht bereits Mails an root vor (Option -m root):
Regelmäßige Selbsttests der Datenträger führt smartd in dieser Konfiguration übrigens nicht durch. Dazu müssten Sie in smartd.conf die Option -s ergänzen (siehe man smartd.conf).
unattended-upgrades: Automatische Updates sind unter Ubuntu standardmäßig aktiv, aber ohne Mail-Benachrichtigung. Anstatt /etc/apt/apt.conf.d/50unattended-upgrades zu ändern, habe ich eine eigene kleine Datei eingerichtet:
on-change bedeutet, dass nur dann eine Mail kommt, wenn tatsächlich Pakete aktualisiert wurden oder etwas schiefgegangen ist. Alternativen sind always (jeden Tag eine Mail) und only-on-error. Zum Testen habe ich vorübergehend always eingestellt und unattended-upgrade -v ausgeführt. Obwohl es nichts zu aktualisieren gab, kam ein Bericht per Mail. Danach habe ich die Einstellung wieder auf on-change zurückgesetzt.
Mail-Versand für gewöhnliche Benutzer
In der obigen Konfiguration kann nur root Mails versenden, weil nur root die Passwortdatei lesen darf. Ruft ein anderer Benutzer mail oder sendmail auf, scheitert msmtp beim Auslesen des Passworts. Für einen Server, auf dem ohnehin nur Systemdienste und Cron-Jobs von root Mails versenden, ist das genau richtig.
Soll doch einmal ein gewöhnlicher Benutzer Mails versenden, ist die einfachste Lösung eine eigene Konfigurationsdatei .msmtprc in seinem Home-Verzeichnis. Am schnellsten kopiert der Benutzer /etc/msmtprc (die Datei ist für alle lesbar) und ändert dann zwei Zeilen: Die Logging-Datei und die Passwortdatei müssen in seinem Home-Verzeichnis liegen.
Die Passwortdatei darf nur für den Benutzer selbst lesbar sein (chmod 600 ~/.msmtp-password). Wenn Sie das Passwort stattdessen mit password direkt in .msmtprc eintragen, gilt das für diese Datei; bei zu großzügigen Rechten verweigert msmtp den Dienst. Damit Cron-Mails dieses Benutzers nicht an seinen lokalen Account gehen, stellen Sie in seiner Crontab (crontab -e) außerdem MAILTO=... ein.
Fazit
msmtp ist in wenigen Minuten eingerichtet. Für Server, die keinen eigenen Mail-Server brauchen, ist das viel angenehmer als eine ganze Postfix-Installation, deren einziger Zweck darin besteht, wenige Status-Mails zu versenden.
Wenn Sie die fehlende Warteschlange stört, sind nullmailer oder dma (DragonFly Mail Agent) denkbare Alternativen: Beide Programme sind ähnlich minimalistisch, speichern Mails aber zwischen, wenn der SMTP-Server gerade nicht erreichbar ist.
Die MZLA Technologies Corporation hat mit Thunderbird 160 eine neue Version seines Open Source E-Mail-Clients für Windows, Apple macOS und Linux veröffentlicht.
Neuerungen von Thunderbird 160
Mit Thunderbird 160 hat die MZLA Technologies Corporation ein Update für seinen Open Source E-Mail-Client veröffentlicht. Die Tastenkombination Strg+A wählt nun alle Filter im Dialog „Nachrichtenfilter“ aus. OAuth-Anmeldefenster weisen darauf hin, wenn blockierte Cookies die Anmeldung verhindern könnten. Bei der Einrichtung eines Office-365-Kontos wird nicht mehr automatisch eine EWS-Konfiguration angeboten. Ansonsten gab es auch wieder eine ganze Reihe von Verbesserungen unter der Haube und Fehlerkorrekturen, welche sich wie immer in den Release Notes (engl.) nachlesen lassen. Auch Sicherheitslücken wurden im neuesten Update wieder behoben.
Firefox für den Desktop sowie Android besitzt eine kostenlose VPN-Integration. Normalerweise gibt es hierfür ein Nutzungslimit von 50 GB pro Monat. Dieses entfällt bis zum 31. Januar 2027.
Firefox besitzt eine kostenlose VPN-Integration für Windows, macOS, Linux sowie Android. Eine VPN-Integration für iOS befindet sich in Entwicklung. Dabei stehen 50 GB pro Monat zur Verfügung, um die echte IP-Adresse zu verbergen und den Internetverkehr über einen sicheren Proxy-Server zu leiten. Die Nutzung wird an jedem Monatsersten zurückgesetzt. Einzige Voraussetzung ist ein kostenfreies Mozilla-Konto.
Ab sofort und bis zum 31. Januar 2027 entfällt das Nutzungslimit. Firefox-Nutzer können das VPN in der Zeit also unbegrenzt verwenden.
Ab dem 1. Februar 2027 wird dann wieder das Nutzungslimit von 50 GB pro Monat greifen. Wer dauerhaft unlimitierten Zugang, eine Auswahl aus ca. 500 Servern in über 30 Ländern und einen systemweiten Schutz haben möchte, der nicht nur in Firefox greift, findet mit dem kostenpflichtigen Mozilla VPN eine Lösung.
Im Bild-im-Bild-Modus lässt sich ab sofort die Wiedergabegeschwindigkeit einstellen. Zur Auswahl stehen Geschwindigkeiten zwischen 0,25-fach und 2-fach. Die entsprechende Schaltfläche erscheint allerdings nur, wenn das Bild-im-Bild-Fenster mindestens eine mittlere Größe hat.
Websites in Mini-Fenstern anzeigen
In Anlehnung an den Bild-im-Bild-Modus für Websites führt Mozilla eine neue Funktion ein, die es ermöglicht, einen Tab oder einen ausgewählten Bereich einer Website in ein kleines Fenster auszulagern, welches dauerhaft im Vordergrund bleibt. Damit lässt sich beispielsweise eine Anleitung, ein Chat oder ein anderer Inhalt im Blick behalten, während in einem anderen Fenster gearbeitet wird.
Lokale Spracherkennung für Websites in 40 Sprachen
Firefox 160 unterstützt die SpeechRecognition-Schnittstelle der Web Speech API. Damit können Websites Sprache in Echtzeit in Text umwandeln lassen, beispielsweise für eine Spracheingabe.
Die Spracherkennung erfolgt dabei vollständig lokal auf dem Gerät und nicht über einen Cloud-Dienst. Hierfür muss zunächst ein entsprechendes KI-Modell heruntergeladen werden. Unterstützt werden rund 40 Sprachen, darunter auch Deutsch. Nach dem Download kann die Spracherkennung auch ohne Internetverbindung genutzt werden.
Die Funktion kann über die KI-Einstellungen von Firefox gesteuert werden. Heruntergeladene Modelle lassen sich außerdem über die Add-on-Verwaltung entfernen.
Mehr Sicherheit für Firefox-Nutzer
Auch in Firefox 160 wurden wieder einige Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 160 daher für alle Nutzer dringend empfohlen. Auch OpenAI hat mit seinem neuen Modell GPT-6 Cyber wieder zum Finden zahlreicher Sicherheitslücken beigetragen.
Ab Firefox 160 müssen auch Wörterbuch-Erweiterungen signiert sein. Damit schließt Mozilla eine bisherige Ausnahme von der Signaturpflicht für Firefox-Erweiterungen.
Sonstige Neuerungen von Firefox 160
Einträge aus der Chronik können jetzt per Drag and Drop aus der Sidebar in die Tableiste gezogen werden, um sie in einem neuen Tab zu öffnen.
Bei Verwendung vertikaler Tabs wurde der Abstand zwischen den Tabs im kompakten Modus reduziert, sodass mehr Tabs gleichzeitig sichtbar sind.
Websites, die wiederholt um Erlaubnis bitten, bestimmte Links wie beispielsweise E-Mail-Adressen (mailto:) in einer anderen Anwendung zu öffnen, können über eine neue Option dauerhaft blockiert werden. Die blockierten Websites lassen sich anschließend über die Firefox-Einstellungen verwalten.
Beim Speichern von Websites als PDF bleiben mathematische Formeln, die mittels MathML ausgezeichnet sind, jetzt für Hilfstechnologien wie Screenreader zugänglich.
Außerdem unterstützt Firefox jetzt die Wiedergabe von Matroska-Dateien (MKV) mit FLAC-, MP3- oder PCM-Audiospuren.
Firefox auf macOS verwendet für die Darstellung von WebGL-Inhalten jetzt Apples Grafikschnittstelle Metal. Dies kann auf manchen Websites die Performance verbessern.
Unter macOS 27 hat Mozilla den Import von Daten aus anderen Browsern verbessert. Firefox versucht nicht mehr, ohne vorherige Freigabe auf geschützte Daten anderer Browser zuzugreifen, was unter Umständen eine entsprechende Systemwarnung auslösen konnte. Auch der Dialog zur Freigabe des Datenzugriffs wurde vereinfacht.
Die Funktion zur automatischen Organisation und Benennung zusammengehöriger Tabs innerhalb der „Intelligenten Fenster“, welche weiterhin schrittweise ausgerollt werden, unterstützt jetzt auch Französisch.
Unter Windows wurde die beim Start von Firefox kurzzeitig sichtbare, vereinfachte Browseroberfläche an die Rundungen des neuen Nova-Designs angepasst.
Darüber hinaus gab es diverse Korrekturen und Optimierungen, welche in den offiziellen Release Notes näher beschrieben werden. Unter anderem wurde der Kontrast zwischen dem Domainnamen und dem Rest der Adresse erhöht, sodass die tatsächlich besuchte Website besser erkennbar ist.
Verbesserungen der Webplattform lassen sich in den MDN web docs nachlesen.
Heute Abend klären wieder Hauke und Jean Deine Fragen live!
Wenn Du das Video unterstützen willst, dann gib bitte eine Bewertung ab, und schreibe einen Kommentar. Vielen Dank!
--------------------
Links:
Frage stellen: https://ask.linuxguides.de
Forum: https://forum.linuxguides.de/
Haukes Webseite: https://goos-habermann.de/index.php
Nicht der Weisheit letzter Schluß: youtube.com/@nichtderweisheit
Linux Guides Admin: https://www.youtube.com/@LinuxGuidesAdmin
Professioneller Linux Support*: https://www.linuxguides.de/linux-support/
Linux Mint Kurs für Anwender*: https://www.linuxguides.de/kurs-linux-mint-fur-anwender/
Ubuntu Kurs für Anwender*: https://www.linuxguides.de/ubuntu-kurs-fuer-anwender/
Linux für Fortgeschrittene*: https://www.linuxguides.de/linux-kurs-fuer-fortgeschrittene/
Offizielle Webseite: https://www.linuxguides.de
Tux Tage: https://www.tux-tage.de/
Forum: https://forum.linuxguides.de/
Unterstützen: http://unterstuetzen.linuxguides.de
Twitter: https://twitter.com/LinuxGuides
Mastodon: https://mastodon.social/@LinuxGuides
Matrix: https://matrix.to/#/+linuxguides:matrix.org
Discord: https://www.linuxguides.de/discord/
Kontakt: https://www.linuxguides.de/kontakt/
BTC-Spende: 1Lg22tnM7j56cGEKB5AczR4V89sbSXqzwN
Haftungsausschluss:
-------------------------------------
Das Video dient lediglich zu Informationszwecken. Wir übernehmen keinerlei Haftung für in diesem Video gezeigte und / oder erklärte Handlungen. Es entsteht in keinem Moment Anspruch auf Schadensersatz oder ähnliches.
Haftungsausschluss:
-------------------------------------
Das Video dient lediglich zu Informationszwecken. Wir übernehmen keinerlei Haftung für in diesem Video gezeigte und / oder erklärte Handlungen. Es entsteht in keinem Moment Anspruch auf Schadensersatz oder ähnliches.
Mit dem berühmten „Snake” als Mini-Spiel besitzt die Adressleiste von Firefox ein kleines Easter Egg. Ausgelöst kann dieses über den integrierten Taschenrechner werden.
Die Adressleiste von Firefox besitzt eine integrierte Taschenrechner-Funktion. Seit Firefox 151 löst diese ein sogenanntes Easter Egg aus: Wird eine Rechnung eingegeben, deren Ergebnis 150 lautet, zum Beispiel 120 + 30, erscheint ein Firefox-Symbol neben dem Ergebnis.
Per Klick darauf öffnet eine Oberfläche, in welcher das berühmte Mini-Spiel Snake gespielt werden kann.
Manchmal braucht es eine reißerische Überschrift, um das eigene Versagen zu übertünchen. Was war passiert? Wie in Ubuntu-Server-Update von 24.04 auf 26.04 beschrieben, habe ich vor ein paar Tagen einen Ubuntu-Server auf Version 26.04 aktualisiert. Dort lief (und läuft weiterhin) unter anderem Nextcloud.
Was ich bei meinem Upgrade übersehen hatte: Ich hatte meine Nextcloud-Installation in den vergangenen 18 Monaten sträflich vernachlässigt. Alles funktionierte, an Updates hatte ich nicht gedacht. Genau das ist mir mit dem Ubuntu-Upgrade auf die Füße gefallen. Meine Nextcloud-Clients konnten keine Verbindung mehr herstellen. Die Webseite zeigte kurz und bündig:
This version of Nextcloud is not compatible with PHP>=8.5.
You are currently running 8.5.4
Ein kurzer Test ergab, dass Nextcloud 31 installiert war. Die erste Version, die PHP 8.5 unterstützt, ist aber Nextcloud 33. Aktuell wäre gar Nextcloud 35 …
Das klingt nach einem trivialen Problem, aber das täuscht: Für den Upgrade-Prozess ist ein PHP-Script zuständig, und dieses verweigert mit meiner neuen PHP-Version die Ausführung. Außerdem muss Nextcloud immer Version für Version aktualisiert werden. Eine direkte Abkürzung von Version 31 zu 35 ist nicht zulässig.
In der Vergangenheit hatte ich schon mehrfach das Problem, dass ich Nextcloud nicht aktualisieren konnte, weil PHP zu alt war. Auf die Idee, dass es auch den umgekehrten Fall geben könnte (PHP zu neu), bin ich nicht gekommen.
Docker ist die Lösung
Ich brauchte also auf meinem frisch aktualisierten Server eine alte PHP-Version. Dafür gibt es (inoffizielle) Repositories, aber die wollte ich nicht verwenden. PHP 8.3 oder 8.4 sollte ja nur für ein paar Minuten ein Script ausführen. Zu Hilfe kam mir einerseits Docker, das auf dem Server sowieso installiert ist, und andererseits Claude Code, von dem ich mir mit dem folgenden Prompt eine detaillierte Anleitung erstellen ließ.
/var/www/html/nextcloud contains Nextcloud 31.0.4. My problem: I upgraded to PHP 8.5, but Nextcloud 31 is incompatible with this PHP version. I need to upgrade to Nextcloud version 33 (first PHP 8.5 compatible version), keeping all data. Docker is available to run an older PHP version. Line out an upgrade plan.
Die Grundidee besteht darin, mit einem Dockerfile ein Image mit PHP 8.3 zur Ausführung des Upgrades zu erstellen:
# Dockerfile
FROM php:8.3-cli
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions \
&& install-php-extensions pdo_mysql gd intl zip bcmath gmp apcu exif opcache pcntl sysvsem imagick
RUN printf "memory_limit=2G\napc.enable_cli=1\n" > /usr/local/etc/php/conf.d/nc.ini
Das Image wird im Verzeichnis mit dem Dockerfile mit dem folgenden Kommando erzeugt:
sudo docker build -t nc-php83 .
Auf der Basis dieses Images kann das Nextcloud-Kommando occ mit dem folgenden Script nc-occ ausgeführt werden:
Das Script bindet in den temporären Container das Nextcloud-Verzeichnis unter demselben Pfad wie auf dem Host ein, damit die absoluten Pfade in der config.php weiter stimmen. Es läuft mit der UID von www-data, damit die Dateirechte passen, und nutzt --network host, damit die lokale Datenbank erreichbar ist. Code, Konfiguration und Daten bleiben also auf dem Host, und im Container läuft nur php occ.
Die größte Hürde war die Datenbankverbindung. Der erste Test mit nc-occ status scheiterte mit SQLSTATE[HY000] [2002] No such file or directory. Die Ursache: Das Debian-PHP sucht den MySQL-Socket standardmäßig unter /var/run/mysqld/mysqld.sock, das offizielle Docker-Image tut das nicht. Es reicht deshalb nicht, den Socket-Ordner per -v /var/run/mysqld:/var/run/mysqld einzubinden, man muss PHP den Pfad auch mit -d pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock mitteilen.
Der weitere Ablauf ist in der schon erwähnten Anleitung detailliert ausgeführt. Selbstredend habe ich vorher ein Backup meiner Daten gemacht (also das Verzeichnis /var/www/html/nextcloud/data sowie die MySQL-Datenbank).
Danach habe ich diese Anleitung Schritt für Schritt abgearbeitet. Theoretisch wäre es auch denkbar, diese Aufgabe agentisch an Claude Code zu delegieren; dazu hätte ich Claude Code aber root-Rechte geben müssen. So mutig war ich dann doch nicht.
Später habe ich Nextcloud in der Web-UI weiter auf die Versionen 34 und 35 aktualisiert. Zum Schluss habe ich aufgeräumt, also insbesondere /var/www/html/nextcloud/data/updater-xxx/* sowie das Docker-Imgage für PHP 8.3 gelöscht.
Die Zeitzonendaten für JavaScript-APIs wurden aktualisiert, um der Entscheidung Kubas Rechnung zu tragen, die Sommerzeit am 1. November 2026 nicht zu beenden.
Eine potenzielle Absturzursache unter Windows wurde behoben, die bei installierter Sicherheitssoftware auftreten konnte und in manchen Fällen auch dazu führte, dass WebGL deaktiviert blieb.
Ein Problem unter Windows behoben, durch das beim Neustart von Firefox zur Installation eines Updates kurzzeitig ein Eingabeaufforderungsfenster angezeigt wurde.
Der Punkt, der auf einen Tab hinweist, der Aufmerksamkeit erfordert, war bei manchen Themes abhängig von der Akzentfarbe des Betriebssystems nur schwer zu erkennen.
Texte in einigen Beschreibungen der Einstellungen konnten mitten im Wort umgebrochen wurden.
Ein Problem wurde behoben, durch das die Anmeldung mittels Passkeys auf Websites fehlschlug, die Passkeys über mehrere zusammengehörige Websites hinweg verwenden, beispielsweise Facebook und Instagram.
Außerdem wurde ein Problem unter Linux behoben, durch das auf manchen Websites, die WebGL verwenden, rote und blaue Farben vertauscht dargestellt wurden. Dies betraf unter anderem Hintergrundeffekte bei Videoanrufen.
Mit Firefox 157 hatte Mozilla unter anderem das neue „Nova“-Design an den Start gebracht. Zu den bereits angebotenen Farbvarianten kommen mit Firefox 161 auch noch „klassische“ Varianten ohne Farbverlauf in die integrierte Auswahl dazu. Darunter auch ein „OLED-Theme“.
Nova – das neue Design von Firefox 157
Mit Firefox 157 hat Mozilla eine neue Optik für seinen Browser eingeführt. Diese wurde intern unter dem Projektnamen „Nova“ entwickelt. Charakteristisch für das neue Design von Firefox sind vor allem die starken Rundungen. Auch zahlreiche Icons wurden erneuert. Wo bislang Grau oder Blau als Akzentfarbe eingesetzt worden ist, setzt Mozilla nun auf Violetttöne. Und während Flächen bislang einfarbig und graue Farben dominant waren, setzt Mozilla mit „Nova“ auf mehr Farbe und teilweise auch auf dezente Verläufe. Dabei hat der Nutzer standardmäßig die Auswahl zwischen jeweils zwölf hellen sowie dunklen Farbstimmungen.
Firefox 161 bringt „klassische” Themes
Während man sagen kann, dass das neue Design durch die Rundungen sowie Farbwahl den aktuellen Zeitgeist trifft, liegt es natürlich auf der Hand, dass es auch Nutzer gibt, welche die bisherige Optik bevorzugen. Für diese Nutzer hatte Mozilla bereits das Proton-Theme auf seiner offiziellen Erweiterungs-Plattform veröffentlicht, welches zwar nicht die Rundungen und Icons verändert, aber zumindest farblich nahe an der bisherigen Optik ist.
Mit Firefox 161 geht Mozilla einen Schritt weiter: Zur bisherigen Standard-Auswahl kommen unter der Überschrift „Klassische Themes“ weitere elf Farbvarianten hinzu, jeweils in einer hellen und dunklen Ausführung. Dabei entspricht die Variante „Grau“ dem bereits genannten Proton-Theme. Der Unterschied zu den bisherigen Farbvarianten: Die „klassischen” Themes setzen auf einfarbige Symbolleisten anstelle von Farbverläufen. Wie bei den anderen Nicht-Standard-Varianten wird außerdem nicht so stark auf Violett als Akzentfarbe gesetzt.
Einige Elemente auf Inhaltsseiten wie den Firefox-Einstellungen nutzen weiterhin Violett, da diese Stellen nicht durch Firefox-Themes angesprochen werden. An prominenten Stellen wie der Adressleiste, dem Menü oder diversen Panels verschwindet mit den angebotenen Farbvarianten hingegen das Violett aus Firefox.
„OLED-Theme” für Firefox
Eines der neuen „klassischen” Themes ist ein Theme mit sogenanntem „OLED-Schwarz“. Gemeint ist damit ein Theme, welches reines Schwarz als Hintergrundfarbe verwendet.
Bei der Displaytechnik OLED leuchten die Pixel selbst. Bei reinem Schwarz bleiben die entsprechenden Pixel ausgeschaltet. Dadurch erscheinen diese Flächen vollständig schwarz und verbrauchen keine Energie für die Lichterzeugung. Dunkle Themes verwenden aus ästhetischen Gründen in der Regel kein reines Schwarz. Mit einem „OLED-Theme” lässt sich dieser Vorteil für die entsprechend eingefärbten Bereiche ausnutzen.
Über 515.000 weitere Themes
Wem das nicht reicht, der findet auf addons.mozilla.org im Übrigen eine Auswahl von mehr als 515.000 kostenlosen Themes, die größtenteils von Drittanbietern stammen.
Vor ein paar Wochen habe ich hier beschrieben, wie ich das Sprachmodell Qwen 3.8 Flash Next auf einem Rechner mit Strix-Halo-CPU und 128 GB RAM ausführe. Dort habe ich auch angekündigt, den Coding-Agenten Pi vorzustellen, mit dem ich das lokale Modell getestet habe: Pi ist so ziemlich das Gegenteil von Claude Code — minimalistisch, sparsam mit dem Kontext und gerade deswegen ideal für lokal ausgeführte Sprachmodelle.
Das Problem: Claude Code und lokale Modelle
Claude Code ist für mich aktuell das beste CLI-Coding-Tool. Das gilt aber nicht für das Zusammenspiel mit lokalen Modellen. Zwar lässt sich Claude Code über die Umgebungsvariable ANTHROPIC_BASE_URL mit LM Studio, llama.cpp & Co. verbinden, aber die Ergebnisse sind ernüchternd: Schon für einen Miniprompt wie »Can we talk?« vergehen je nach Modell Minuten, bis die erste Antwort erscheint.
Eine Ursache dafür ist das sogenannte Context Bloating. Claude Code schickt bei jedem Prompt einen riesigen Basiskontext mit. Wenn Sie in einer leeren Session nach »Can we talk?« das Kommando /context ausführen, zeigt Claude Code eine Kontextnutzung von 50k bis 60k Token an:
Der Systemprompt beansprucht ca. 10k Token. Das ist eine Grundanleitung, wie Claude Code agieren soll.
Ungefähr weitere 30k Token ergeben sich aus der Anleitung, wie der Agent Tools wie Bash, Edit, Read oder Write aufrufen soll.
Der Rest stammt von Skills, Plugins, MCP-Servern usw.
Bei den Anthropic-Modellen mit einem Kontextfenster von einer Million Token ist das (fast) vernachlässigbar. Ein lokales Modell mit einem Kontextfenster von 260.000 Token ist aber schon zu 20 bis 25 Prozent gefüllt, bevor Sie überhaupt etwas Sinnvolles gefragt haben. Und all diese Token müssen von Ihrer lokalen Hardware verarbeitet werden, die nun mal nicht mit Cloud-Rechenzentren mithalten kann. Manche Kritiker sprechen bei Claude Code deswegen nicht nur von Context, sondern auch von Feature Bloating.
Die Idee hinter Pi
Hinter Pi steckt Mario Zechner: Der Österreicher hat unter anderem das Game-Framework libGDX entwickelt. Als ihm Claude Code zu komplex und zu geschwätzig wurde, hat er kurzerhand einen eigenen Agenten geschrieben. Der Code steht unter der MIT-Lizenz und wird mittlerweile von der Organisation Earendil weiterentwickelt. Seit 1.10.2026 gibt es die Version 1.0, aktuell (Anfang November 2026) ist schon Version 1.5.
Die Grundidee lässt sich schnell zusammenfassen: Moderne Sprachmodelle wissen ohnehin schon, wie man eine Shell bedient, wie ein Git-Repository funktioniert und wie man eine Datei bearbeitet. Vieles von dem, was ein Systemprompt, AGENTS.md, Skills usw. hinzufügen, kostet zuerst einmal Token und lenkt ab. (Das sagen übrigens nicht nur die Pi-Entwickler, das sagt interessanterweise — wenn auch in einem etwas anderen Zusammenhang — sogar Anthropic!)
Pi aktiviert deswegen standardmäßig nur vier Tools: read, write, edit und bash. Es gibt kein eigenes Tool für die Volltextsuche, keines für Webzugriffe. Wer suchen will, ruft über bash einfach grep oder rg auf. Der komplette Systemprompt inklusive aller Tool-Definitionen beträgt nur gut 1.000 Token. Das ist ein Fünfzigstel von dem, was Claude Code mindestens braucht! Bei einem lokalen Modell mit 130.000 oder 260.000 Token ist das der Unterschied zwischen »unbrauchbar langsam« und »funktioniert«.
Der Preis für diese Sparsamkeit sind weniger Funktionen, weniger Komfort im Terminal und weniger Tools. Pi ist aber erweiterbar (dazu gleich mehr). Erfreulich für Umsteiger: Pi liest beim Start AGENTS.md und ersatzweise CLAUDE.md, und zwar global, aus allen übergeordneten Verzeichnissen sowie aus dem aktuellen Verzeichnis.
Installation
Pi setzt Node.js (Version 22.19 oder neuer) voraus. Zur Installation verwenden Sie am einfachsten das Installations-Script oder npm (hier zur Referenz die Originalanleitung).
$ curl -fsSL https://pi.dev/install.sh | sh # Linux, macOS
> powershell -c "irm https://pi.dev/install.ps1 | iex" # Windows
$ npm i -g --ignore-scripts @earendil-works/pi-coding-agent # Node.js
Das Installations-Script hat den Vorteil, dass es alle Abhängigkeiten auf exakte Versionen fixiert; Updates führen Sie dann mit pi update durch. Weitere Installationsvarianten beschreibt https://pi.dev.
Anschließend starten Sie den Agenten im Projektverzeichnis mit pi und melden sich mit /login bei einem der über 40 unterstützten Anbieter an. Neben Anthropic, OpenAI und Google funktionieren auch OpenRouter, DeepSeek oder Groq. Bei OpenAI können Sie sogar ein ChatGPT-Abo verwenden.
Auch die Startseite von Pi ist minimalistisch
Lokale Modelle anbinden
Für mich viel interessanter ist aber die Anbindung eines lokalen Modells. Dazu tragen Sie den Server in ~/.pi/agent/models.json ein. Das folgende Beispiel geht davon aus, dass LM Studio auf dem lokalen Rechner läuft und dort das Modell Qwen 3.8 Flash Next geladen ist:
Pi spricht mit LM Studio über die OpenAI-kompatible Schnittstelle. Die meisten Inferenz-Engines unterstützen diese API, d.h., die gleiche Konfiguration funktioniert sinngemäß auch für Ollama, vLLM oder die auf Strix Halo optimierten Engines, die ich in meinem Artikel zu Qwen 3.8 Flash Next vorgestellt habe. Sie müssen nur baseUrl und die Modell-ID anpassen. Die Angabe von contextWindow ist optional; ohne sie nimmt Pi 128.000 Token an. Welche Modelle gerade zur Auswahl stehen, zeigt /model.
Mittlerweile hat Pi außerdem einen eingebauten Provider für den Router-Modus von llama.cpp. Dabei verwaltet llama serve mehrere GGUF-Modelle und lädt diese bei Bedarf. In Pi richten Sie die Verbindung mit /login llama.cpp ein, laden mit /llama ein Modell und wählen es dann mit /model aus.
Hinweis: Achten Sie darauf, dass Sie in Ihrer Inferenz-Engine ein ausreichend großes Kontextfenster einstellen. Viele Engines verwenden per Default einen winzigen Kontext von 4.096 oder 32.768 Token. Für agentisches Coding ist das viel zu wenig, auch mit Pi. Ich verwende auf meinem 128-GB-Rechner das Maximum, das viele lokale Modelle aktuell unterstützen, also 256k Token (262144).
Erweiterungsmechanismen
Ein Agent mit so wenigen Tools klingt trostlos. Pi kompensiert den anfänglichen Minimalismus mit vier Erweiterungsmechanismen:
Skills: Im Kontext steht dauerhaft nur die Beschreibung eines Skills. Die eigentliche Anleitung wird erst geladen, wenn der Skill tatsächlich gebraucht wird.
Extensions: Das sind TypeScript-Module, die eigene Tools, Slash-Kommandos oder Hooks (ebenfalls auf TypeScript-Basis) zur Verfügung stellen.
Prompt Templates: wiederverwendbare Prompt-Bausteine, vergleichbar mit den Slash-Kommandos von Claude Code.
Themes und Keybindings: Farbschemata und Tastenkürzel.
Alle vier Mechanismen lassen sich zu einem Pi Package zusammenfassen und über npm oder Git weitergeben. Installiert werden Pakete mit pi install npm:paketname.
MCP: Kehrtwende mit Kontext-Spartrick
Lange Zeit war die Meinung der Pi-Entwickler zu MCP klar: »No MCP. Build CLI tools with READMEs.« Wer partout MCP wollte, musste das Paket pi-mcp-adapter installieren.
Mit Version 0.99 (Ende September 2026) hat sich das geändert: Pi unterstützt MCP-Server jetzt direkt, sowohl lokal (stdio) als auch remote (Streamable HTTP, inklusive OAuth-Login). Die Konfiguration erfolgt in ~/.pi/agent/mcp.json bzw. projektspezifisch in .pi/mcp.json. Das Format entspricht dem von Claude Code, d.h., Sie können vorhandene mcpServers-Einträge einfach kopieren. Alternativ richten Sie Server mit pi mcp add ein:
$ pi mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem .
$ pi mcp add docs --url https://example.com/mcp --bearer-token-env-var DOCS_TOKEN
$ pi mcp list
Innerhalb von Pi zeigt /mcp den Zustand aller Server an. Dort können Sie Server auch aktivieren oder deaktivieren und sich bei OAuth-Servern anmelden.
Interessant ist, wie Pi das Kontextproblem löst, das MCP-Server üblicherweise verursachen. Per Default landen die Tool-Definitionen der MCP-Server nämlich gar nicht im Kontext. Stattdessen aktiviert Pi ein zusätzliches Tool namens Codemode. Damit schreibt das Sprachmodell kleine JavaScript-Programme, die in einer Sandbox ausgeführt werden. Dort kann das Modell mit searchTools() nach passenden MCP-Tools suchen, diese aufrufen, die Ergebnisse filtern und nur die wirklich relevanten Ergebnisse zurückgeben. Im Systemprompt steht pro MCP-Server nur eine Zeile mit einer Kurzbeschreibung. Alternativ können Sie in mcp.json für jeden Server bzw. für einzelne Tools einstellen, ob diese direkt deklariert werden (direct), erst nach einer Suche mit tool_search (deferred) oder gar nicht (hidden).
Ob dieses Konzept auch mit lokalen Modellen gut funktioniert, hängt vom Modell ab: Ein Modell, das zuverlässig JavaScript schreibt und Tools sucht, profitiert davon. Für kleinere Modelle ist es vermutlich besser, wenige wichtige Tools mit direct freizugeben.
Keine Websuche
Zu den Lücken in Pi zählt nach wie vor die Websuche. Pi greift auf das bash-Tool mit curl zurück, um einzelne Webseiten mit bekannter URL zu lesen, aber das ist kein echter Ersatz. Hier liegt kein technisches Problem vor, sondern ein wirtschaftliches: Die meisten Suchmaschinen leben von der Werbung. Sie erkennen agentische Websuchen und blockieren diese rasch. Die fehlende Websuche ist kein Pi-spezifisches Problem, sondern betrifft auch andere Open-Source-Agenten außerhalb des reinen Coding-Umfelds, z.B. Hermes und OpenClaw.
Glücklicherweise gibt es Packages, die eine Suchfunktion für Pi nachliefern. Die meisten davon benötigen aber einen Key oder ein Abo. Beispielsweise nutzt npm:@burneikis/pi-web-search die Websuche von Anthropic; dass setzt aber einen Claude-API-Key voraus. Ich habe stattdessen pi-anysearch-tools ausprobiert. Die Installation ist unkompliziert:
$ pi install npm:pi-anysearch-tools
Das Paket erfordert allerdings eine Registrierung und einen Key bei https://anysearch.com. AnySearch hat (Stand: November 2026) einen großzügigen Free Plan, der immerhin 1.000 Suchanfragen pro Tag erlaubt. Für mehr Suchen oder eine bessere Suchqualität müssen Sie ein Abo abschließen. Den Key tragen Sie in ~/.pi/agent/anysearch.json ein:
{
"anysearchApiKey": "as_sk_xxx"
}
Bei meinen Tests hat das Zusammenspiel zwischen Pi und AnySearch ausgezeichnet funktioniert. Seit Pi MCP unterstützt, können Sie natürlich auch einen MCP-Server für die Websuche einbinden.
Keine Permissions
Pi hat kein Permission-System. Das Modell ruft bash auf. Damit läuft jedes Kommando mit Ihren Rechten; im Worst Case gilt das auch für rm -rf! Im Unterschied zu Claude Code gibt es weder einen Auto-Modus noch einen Classifier, der Kommandos vor der Ausführung begutachtet. Wer die Grenzen der Permission-Systeme kommerzieller Coding-Agenten kennt, mag das konsequent finden. Tatsächlich habe ich mit Pi durchwegs gute Erfahrungen gemacht. Dennoch gilt: Pi ist nur so gut wie die Modelle, die es nutzt.
Immerhin gibt es einen sogenannten Project Trust: Wenn ein Projektverzeichnis eigene Einstellungen, Extensions, Skills oder MCP-Server mitbringt (also z.B. .pi/settings.json oder .pi/mcp.json), fragt Pi beim Start, ob Sie diesem Projekt vertrauen. Das verhindert, dass ein fremdes Repository unbemerkt Code in den Pi-Prozess lädt. Auf die Aktionen des Sprachmodells hat das aber keinen Einfluss.
Die Dokumentation empfiehlt stattdessen, Pi in einen Container oder eine virtuelle Maschine zu stecken, und beschreibt dafür mehrere Varianten. Das ist nicht so komfortabel wie die Sandboxing-Systeme kommerzieller Coding-Agenten, aber sicherheitstechnisch ein vernünftiger Ansatz.
Was sonst noch fehlt
Ebenfalls nicht eingebaut sind Subagenten, ein Planungsmodus, Hintergrund-Tasks oder eine Worktree-Unterstützung. Die Entwickler argumentieren, dass solche Features besser als Extension aufgehoben sind. Tatsächlich gibt es fertige Pakete, die genau das nachrüsten. Wer alles auf einmal will, greift zu omp: Das ist ein Fork von Pi, der LSP-Integration, Debugger-Anbindung, Subagenten und Planungsmodus mitbringt. Leider ist man damit wieder bei der Komplexität, vor der Pi ursprünglich geflüchtet ist.
Sessions, Slash-Kommandos und Optionen
Pi speichert jede Session als JSONL-Datei in ~/.pi/agent/sessions, sortiert nach Arbeitsverzeichnis. Mit /resume kehren Sie zu einer früheren Session zurück, mit /fork zweigen Sie von einer beliebigen Nachricht eine neue ab. /compact fasst den bisherigen Verlauf zusammen.
Neuartig aus Claude-Code-Perspektive ist /tree: Das Kommando stellt die Session als Baum dar, in dem Sie navigieren und zwischen Zweigen wechseln können. Wenn Sie einen Prompt zurücknehmen und anders formulieren, geht der alte Ast nicht verloren; Sie können jederzeit dorthin zurückspringen und beide Varianten vergleichen. Das ist deutlich mächtiger als eine lineare Rewind-Funktion.
Für die Automatisierung gibt es Betriebsarten ohne Benutzeroberfläche: pi -p "prompt" liefert die Antwort und endet dann. --mode json gibt einen Event-Stream aus, --mode rpc erlaubt die Steuerung über stdin und stdout. Mit --export machen Sie aus einer Session eine HTML-Datei. Mit --tools bzw. -t bestimmen Sie, welche Tools aktiv sind. Beispielsweise aktiviert pi -t +codemode,-write zusätzlich codemode und deaktiviert write.
Praktische Erfahrungen
Ich habe Pi mit dem lokalen Modell Qwen 3.8 Flash Next getestet (siehe auch meinen Blog-Artikel zu Qwen 3.8 Flash Next). Als ersten Test habe ich Pi gebeten, ein Spiel in der Art von Space Invaders zu programmieren. Die erste, fehlerfrei spielbare Version war nach vier Minuten fertig. Auch meine Verbesserungswünsche samt einem größeren Refactoring wurden anstandslos und zügig ausgeführt.
Pi startet einen größeren Refactoring-ProzessDas abgeschlossene Refactoring
Ein einfaches Browser-Spiel ist ein netter Test, aber wie sieht es mit realem Code aus? Pi und Qwen 3.8 Flash Next schlagen sich wacker. Heute habe ich in einer größeren PHP-Datei (ca. 2000 Zeilen / 60 kByte Code) eine Sicherheitsanalyse durchgeführt. Pi musste natürlich auch diverse verknüpfte Code-Dateien lesen. Das Ergebnis war inhaltlich exzellent und formal gut aufbereitet, aber Claude Code (oder Pi im Zusammenspiel mit kommerziellen Cloud-Modellen) wäre viel schneller fertig gewesen. Wenn Sie diesbezüglich einmal verwöhnt sind, fällt diese Gemächlichkeit schwer, zumal gleichzeitig der Lüfter hochdreht, um die CPU zu kühlen. Lokale Modelle verdeutlichen den mit der KI verbundenen Ressourcenaufwand viel spürbarer als Cloud-Modelle!
Ich verwende KI-Agenten nicht nur für das Coding, sondern auch für eine erste Korrektur meiner in Markdown-Syntax verfassten Texte (Rechtschreibfehler, Grammatik, inhaltliche Fehler, Redundanzen etc.). Die Geschwindigkeit spielt dabei eine untergeordnete Rolle; bei längeren Texten kann ich Korrekturläufe auch über Nacht ausführen. Mit dem Coding-Agent Pi hat dieser Test zugegebenermaßen wenig zu tun, vielmehr betreffen die Ergebnisse das von mir genutzte Sprachmodell.
Das Korrekturlesen für diesen Text samt einer inhaltlichen Kontrolle hat mehr als eine Viertelstunde gedauert. Qwen-3.8-flash-next ist dabei übertrieben pingelig vorgegangen. In Pi können Sie dem Sprachmodell beim »Denken« zusehen. Qwen hat immer wieder dieselben Dinge überprüft und viele — aus meiner Sicht — komplett sinnlose Doppel- und Dreifachkontrollen durchgeführt. (Hinterlassen Sie einen Kommentar, wenn Sie doch noch einen Fehler finden!) Mein Prompt war: »proofread @pi-agent.md: fix obvious typos or grammar errors; list everything else; also check content on factual errors«
Korrektur dieses Artikels mit Pi und Qwen-3.8-flash-next
Um es zusammenzufassen: Pi mit Qwen 3.8 Flash Next funktioniert ausgezeichnet, aber kommerzielle Coding-Agenten bzw. Pi in Kombination mit kommerziellen Modellen arbeiten eben noch besser.
Fazit
Für mich kann Pi plus ein lokales Modell Claude Code noch nicht vollständig ersetzen. Das habe ich zu Beginn meiner Tests auch nicht erwartet. Für große Software-Projekte bieten kommerzielle CLIs von Anthropic, OpenAI oder Mistral mehr Qualität, Geschwindigkeit und Arbeitskomfort.
Aber Pi zeigt, wie wenig ein Coding-Agent braucht. Pi glänzt da, wo kommerzielle Agenten schwächeln: im Zusammenspiel mit lokalen Modellen mit begrenztem Kontext und begrenzter Rechenleistung. Wenn Sie aus Gründen des Datenschutzes oder der Unabhängigkeit mit einem lokalen Modell arbeiten möchten, ist Pi die erste Wahl.
Von der geringeren Geschwindigkeit und Qualität lokaler Modelle einmal abgesehen, empfand ich die fehlende Websuche als das größte Hindernis für produktives Arbeiten: Für mich ist ein Coding-Agent auch ein Hilfsmittel zur Recherche. Bei Bugs im Zusammenspiel mit modernen Bibliotheken oder bei Setup-Problemen mit neuen Tools erwarte ich, dass der Agent aktuelle Infos aus dem Internet beschaffen kann. Bei Open-Source-Coding-Agenten wie Pi ist dazu die Anbindung an einen externen Suchdienst notwendig, die zumindest bei intensiver Nutzung zusätzliche Kosten verursacht.
Wenn ich lange genug Urlaub mache, kommt mein Gehirn in eine kreative Phase und ich habe lauter Ideen, was ich lernen, lesen, ausprobieren und worüber ich dann bloggen möchte. Dabei kommen mir so viele Ideen, dass ein Urlaub viel zu kurz ist, um sich allen widmen zu können. Viele schreibe ich mir auf, um sie nicht zu vergessen.
Nach dem Urlaub wartet zuhause aber meist eine Liste mit wichtigen und dringenden Dingen auf mich, die zuerst erledigt werden müssen. Auch diese Liste ist meist lang und ich benötige einige Tage, bis ich wieder frei Durchatmen kann. Und so geht es weiter und weiter und viele tolle Ideen aus dem Urlaub vergammeln in meinem nahezu endlosen Backlog, das ich gar nicht so gerne anschauen mag, eben weil es schon so lang ist.
Wie verwaltet ihr Ideen, die euch kommen, die ihr aber nicht direkt angehen könnt? Schreibt ihr sie auf Notizzettel oder -bücher? Pflegt ihr Kanban-Boards oder Aufgabenlisten mit Tags und Kategorieren? Wieviel von dem, was ihr in diesen Listen verwaltet, setzt ihr mit der Zeit um? Habt ihr auch einen Haufen, der nie verfolgten Ideen?
Ich freue mich, wenn ihr eure Vorgehensweise und eure Werkzeuge in den Kommentaren zu diesem Beitrag teilt. Falls euer Beitrag moderiert werden muss, habt bitte ein wenig Geduld. Ich schalte ihn so schnell wie möglich frei.
Ich selbst habe es in der Vergangenheit mit Kanban und Aufgabenlisten versucht, was mir beides nicht so gut gefallen hat. Für Dinge, die sich gut terminieren lassen bzw. die terminiert werden müssen, verwende ich heute einfach meinen digitalen Kalender und speichere alle relvanten Informationen mit im Termin oder referenziere von dort auf sie. Für Dinge, die nicht terminiert werden können/müssen, nutze ich eine Methode aus dem Journaling. Ich schreibe mir stichpunktartig in mein handschriftlich geführtes Journal welches die wichtigsten Dinge für den Tag bzw. die Woche sind, die ich unbedingt erledigen möchte. Es ist für mich ein positives Erlebnis, diese anschließend abhaken zu können. Wenn ich mal keine Punkte habe, schreibe ich halt auch mal einen Tag nix auf.
Mozilla hat drei Klänge für Firefox entwickelt. Neben Klängen für das Firefox-Logo und das Maskottchen Kit soll auch ein neuer Benachrichtigungston zukünftig im Browser zu hören sein.
Mozilla hat gemeinsam mit dem auf Sounddesign spezialisierten Unternehmen Sounds Like These drei neue Klänge für Firefox entwickelt. Dabei wurden auch Firefox-Nutzer, Mitwirkende und Mozilla-Mitarbeiter aus aller Welt einbezogen. Diese wurden dazu aufgerufen, Audioaufnahmen oder Beschreibungen einzureichen, welche ihrer Meinung nach den Klang von Firefox repräsentieren. Die Rückmeldungen dienten anschließend als Inspiration für die Gestaltung der neuen Klänge.
Firefox-Logo mit Stimmen von 23 Mozilla-Mitarbeitern
Der Klang des Firefox-Logos kombiniert natürliche Geräusche wie Vogelgesang und das Klopfen auf Holz mit den Stimmen von insgesamt 23 Mozilla-Mitarbeitern, die das Wort „Firefox“ aussprechen.
Ursprünglich war geplant, die Stimmen im Rahmen einer professionellen Aufnahme an einem zentralen Standort aufzuzeichnen. Um auch Mitarbeiter aus anderen Regionen berücksichtigen zu können, wurde schließlich darauf verzichtet. Stattdessen konnten die Mitarbeiter ihre Stimmen unabhängig von ihrem Standort selbst aufnehmen.
Dabei wurden bewusst nicht sämtliche Hintergrundgeräusche entfernt. Auch die unterschiedlichen Akzente, Stimmlagen und zeitlichen Abweichungen zwischen den Aufnahmen sind Teil des fertigen Klangs. Auf diese Weise wollte Mozilla einen möglichst natürlichen Klang schaffen, der die Menschen hinter Firefox repräsentiert.
Klang für das Firefox-Maskottchen Kit
Auch das Firefox-Maskottchen Kit hat einen eigenen Klang erhalten. Kit wurde im März 2026 offiziell vorgestellt und kann unter anderem bei der Einrichtung von Firefox, beim Kennenlernen neuer Funktionen oder nach einer erfolgreich geänderten Einstellung erscheinen.
Für den Klang von Kit wurden zunächst verschiedene Ansätze untersucht. Dazu gehörten echte Tiergeräusche ebenso wie abstrakte musikalische Klänge. Unter anderem wurde mit dem Schnurren einer Katze experimentiert. Dieses vermittelte zwar die gewünschte Vertrautheit, klang letztlich aber zu sehr nach einer tatsächlichen Katze.
Die endgültige Lösung basiert deshalb auf einer menschlichen Stimme, die anschließend so bearbeitet und mit weiteren Klängen kombiniert wurde, dass sie an ein sanftes Schnurren erinnert, ohne ein bestimmtes Tier nachzuahmen.
Der Klang soll sich für unterschiedliche Animationen und Gefühlsausdrücke von Kit verwenden lassen und dabei wiedererkennbar bleiben.
Neuer Benachrichtigungston für Firefox
Der dritte neue Klang soll mit einem zukünftigen Firefox-Update direkt in den Browser integriert werden.
Dabei handelt es sich um einen Benachrichtigungston, der möglichst unaufdringlich sein soll. Inspiriert wurde dieser unter anderem von Rückmeldungen aus der Community, die das Gefühl bei der Nutzung von Firefox mit dem Öffnen einer Tür verglichen hatten.
Der fertige Klang besteht aus einem sanften Rauschen, das an eine sich öffnende Tür erinnern soll, gefolgt von einem dezenten Klickgeräusch.
Mozilla hat Firefox 159 für Apple iOS veröffentlicht. Dieser Artikel beschreibt die Neuerungen von Firefox 159.
Die Neuerungen von Firefox 159 für Apple iOS
Mozilla hat Firefox 159 für das iPhone, iPad sowie iPod touch veröffentlicht. Die neue Version steht im Apple App Store zum Download bereit.
Für Nutzer eines englischsprachigen Firefox in den USA besitzt Firefox einen sprachbasierten KI-Assistenten. Diesem wurde ein neues Aussehen spendiert. Ansonsten bringt das Update wie immer Detail-Verbesserungen, Fehlerbehebungen sowie Optimierungen unter der Haube.
Auf meinen Rechnern verschlüssele ich Dateien mit Passwörtern oder anderen vertraulichen Daten, vor allem dann, wenn ich sie zwischen mehreren Rechnern teilen möchte oder wenn diese in Backups auf externen Datenträgern landen. Den einfachsten Weg dazu bietet das Kommando gpg -c file.txt. Es fragt (zur Sicherheit gleich zweimal) nach einem Passwort, verschlüsselt die Datei file.txt symmetrisch und macht daraus file.txt.gpg. gpg -d file.txt.gpg entschlüsselt die Datei wieder. (Symmetrisch bedeutet, dass Sie kein Schlüsselpaar brauchen. gpg verwendet zum Ver- und Entschlüsseln dasselbe Passwort, das oft passphrase genannt wird. Verwenden Sie eine ausreichend lange Zeichenkette, die Sie sich gut merken können!)
Kürzlich habe ich entdeckt, dass mein Lieblingseditor Emacs solche Dateien fast transparent beim Laden ent- und beim Speichern wieder verschlüsseln kann. Das Feature ist keineswegs neu, ich bin einfach noch nie darüber gestolpert. Es gibt keine temporäre Klartextdateien, die versehentlich liegen bleibt.
Emacs bringt mit EasyPG (epa-file) alles Nötige schon mit. Einzig gpg wird vorausgesetzt. Unter Linux ist dieses Kommando meist schon installiert, unter macOS führt brew install gnupg zum Ziel.
Mit Strg+X Strg+F öffnen Sie eine Datei mit der Endung .gpg. Emacs fragt nach dem Passwort und zeigt die Datei dann unverschlüsselt an. Wenn Sie eine Datei wie geheim.txt.gpg speichern, fragt Emacs nach dem gewünschten Verschlüsselungspasswort.
Mehr Komfort
Ohne Konfiguration fragt Emacs bei jedem Speichervorgang nach dem Passwort, das zur Sicherheit dann doppelt eingegeben werde muss. Mit einer Zusatzzeile in .emacs merkt sich Emacs das Passwort pro Datei im Speicher. (Das ist natürlich ein gewisses Sicherheitsrisiko. Solange der Editor läuft, befindet sich das Passwort im Arbeitsspeicher. Aber Sie können nun beliebig oft speichern, es wird immer automatisch das einmal beim Laden oder beim ersten Speichern festgelegte Passwort verwendet.)
;; in .emacs
;; GPG-Passwort pro Datei im Speicher halten
(setq epa-file-cache-passphrase-for-symmetric-encryption t)
Standardmäßig versucht gpg die Passworteingabe an ein externes pinentry-Programm zu delegieren. Sie können ein solches Programm installieren (z.B. brew install pinentry-mac). Viel besser ist es aber, zur Passworteingabe direkt den Minibuffer von Emacs zu verwenden:
;; direkte Passworteingabe ohne externen pinentry-Dialog
(setq epg-pinentry-mode 'loopback)
Beim Speichern neuer Dateien mit GPG-Kennung fragt Emacs nach den Empfängeradressen. Diese sind für die symmetrische Verschlüsselung aber nicht nötig. Sie überspringen den Dialog ohne Auswahl mit OK. Aber noch besser ist es, wenn er gar nicht angezeigt wird. (Das setzt voraus, dass Sie die asymmetrische Verschlüsselung nie verwenden!)
;; Frage nach GPG-Empfängern überspringen
(setq epa-file-select-keys 'silent)
Was soll man noch nach diesem Monat sagen? Ich habe gerade gesehen, dass wir diesen Monat auch rückwirkend Black October nennen können. Zeit, mal den Monat Revue passieren zu lassen.
Das Thema der KI hat dem Bereich der IT-Sicherheit in den letzten Monaten echt den Rang abgelaufen, daher war ich außerordentlich überrascht, zu sehen, dass die PHP-Lücke so hohe Wellen schlug. Dass tatsächlich ein Teil des WWW abgeschaltet wurde, weil der Patch einer Lücke erwartet wurde, zeigt in erster Linie, dass es einige Admins gibt, die noch schnell reagieren.
Andererseits wurde IT-Sicherheit auch vereinfacht. Wozu aufwändiges Schlüsselmanagement aufbauen, wenn die Zahl 4 auch reicht?
Es zeigt aber auch, dass wir einen Großteil der bei uns im Einsatz befindlichen Software schwer überblicken können. Das wird insbesondere beim Blick auf den PHP-"Fix" schnell deutlich, da es sich dabei nicht nur einfach um einen geänderten Check oder Systemaufruf handelt, sondern an tausenden Stellen Teile verändert werden mussten. Natürlich auch durch die Hilfe durch LLMs.
Wer jetzt allerdings sagt, proprietäre Software sei ja aufgrund des fehlenden Drucks durch Transparenz so viel unsicherer, der kann beruhigt sein, denn: alle Software ist ja mittlerweile Open Source. Zumindest, wenn es nach dem Projekt "Reverse Engineer Anything" (rea) geht, das auf GitHub trendet und gerne eingesetzt wird, um Spiele zu "erweitern" oder Software zu klonen.
Bei rea bin ich auch überrascht, aber nur, weil ich damit gerechnet hatte, dass wir schneller an diesem Punkt ankämen. Software zu kompilieren ist einfach, das Kompilat zu sinnvollem Code rückzuentwickeln ist schwierig – das ist eigentlich eine der Aufgaben, wo maschinelles Lernen am besten glänzen kann. Und das tut es offenbar.
Was der letzte Monat uns aber eigentlich gezeigt hat, ist, dass KI die Hürden zwischen einer Idee und ihrer Umsetzung abbaut. Und das ist das, was vielen eigentlich das Kopfzerbrechen bereitet. Bisher galt: eine Idee ist nicht viel wert, wenn man sie nicht umgesetzt bekommt. Daher lag der Burggraben ("Moat") oft in der Fähigkeit, etwas umzusetzen. Man musste sich keine Sorgen machen, dass jemand anderes die Idee schon vorher hatte. Aber genau das kehrt sich jetzt um. Sei es, dass Software entwickelt oder originalgetreu nachgebaut werden kann, oder dass Lücken in Software gefunden werden können.
Wir leben schon in einer spannenden Welt, wo die Idee "ich möchte in das System einbrechen" jemanden schon so nah an das Ziel bringt. Und Möglichkeiten hierfür gibt es offenbar zuhauf. Das Open-Source-Argument der transparenten Entwicklung hat uns offenbar weder vor der PHP-Lücke noch vor solchen Krachern wie der CVE-2026-99999 bewahrt.
Aber das gilt eben in beide Richtungen. Die gleichen Werkzeuge, die aus der Idee eines Einbruchs einen Einbruch machen, machen aus "wir sollten unseren Code aufräumen" ein tatsächliches Refactoring. Die Hürde sinkt für Angreifer wie für Verteidiger. Nur hatten Verteidiger bisher selten die Zeit, das Budget oder schlicht die Lust dazu.
Ich bin gespannt, was der nächste Monat bringt. In wenigen Tagen soll aus all den öffentlichkeitswirksamen Wohltaten ein Börsengang werden. Ruhiger wird der kommende Monat vermutlich nicht. Sicherlich nicht.
Die Häufigkeit, mit der Tabs auf Xiaomi- und Redmi-Geräten unerwartet neu geladen werden, wurde deutlich reduziert. Dazu kommen neue Plattform-Features der aktuellen GeckoView-Engine, diverse Fehlerbehebungen, geschlossene Sicherheitslücken sowie Verbesserungen unter der Haube.
Firefox Klar ist ein spezialisierter Privatsphäre-Browser. Nun hat Mozilla Firefox Klar 159 für Android veröffentlicht und überarbeitet damit das Menü-Design.
Mozilla hat Firefox Klar 159 (internationaler Name: Firefox Focus 159) für Android veröffentlicht.
Die Neuerungen von Firefox Klar 159 für Android
Mit Firefox Klar 159 hat Mozilla das Menü-Design überarbeitet, welches optisch nun an das Menü-Design von Firefox erinnert. Dazu kommen wie immer neue Plattform-Features der aktuellen GeckoView-Engine sowie geschlossene Sicherheitslücken.
Wenn Du das Video unterstützen willst, dann gib bitte eine Bewertung ab, und schreibe einen Kommentar. Vielen Dank!
Links:
-------------------------------------
- Blog Artikel: https://blog.linuxmint.com/
- Linux Mint: https://linuxmint.com/
- Libre Workspace Cloud*: https://www.libre-workspace.org/cloud/
- Linux Support*: https://www.linuxguides.de/linux-support/
- Linux Mint Kurs für Anwender*: https://www.linuxguides.de/kurs-linux-mint-fur-anwender/
- Kurs: Linux Server-Administration*: https://www.linuxguides.de/kurs-linux-server-administration/
- Linux-Guides Merch*: https://linux-guides.myspreadshop.de/
- Offizielle Webseite: https://www.linuxguides.de
- Forum: https://forum.linuxguides.de/
- Unterstützen: http://unterstuetzen.linuxguides.de
- Mastodon: https://mastodon.social/@LinuxGuides
- X: https://twitter.com/LinuxGuides
- Instagram: https://www.instagram.com/linuxguides/
- Kontakt: https://www.linuxguides.de/kontakt/
Inhaltsverzeichnis:
-------------------------------------
00:00 Mint vor dem Umbruch
03:03 Warum der Release-Zyklus kippt
06:05 Neuer Jahresrhythmus und Namen
08:06 Neue Features im Alltag
17:55 Wayland wird endlich stabil
22:13 Release, Upgrade und Fazit
Haftungsausschluss:
-------------------------------------
Das Video dient lediglich zu Informationszwecken. Wir übernehmen keinerlei Haftung für in diesem Video gezeigte und / oder erklärte Handlungen. Es entsteht in keinem Moment Anspruch auf Schadensersatz oder ähnliches.
Über Ubuntu 26.04 habe ich hier schon berichtet. Heute habe ich meinen ersten Ubuntu-Server von Version 24.04 auf 26.04 aktualisiert. Es ist eigentlich recht gut gegangen. Dieser Beitrag fasst die wichtigsten Erkenntnisse zusammen.
MySQL-Passwörter
Dovecot-Konfiguration (Update 2.3 -> 2.4)
SSH-Server-Konfiguration
Externe und obsolete Pakete aufräumen
Grundsätzliche Vorgehensweise
Logischerweise sollten Sie zuerst ein Backup machen. Mein System ist eine virtuelle Maschine (KVM), ich habe also ein Backup des Images gemacht (LVM-Snapshot im laufenden Betrieb). Wäre irgendetwas total schief gegangen, hätte ich den ganzen Server blitzschnell in den alten Zustand zurückversetzen können.
Wichtig: Falls Sie Nextcloud verwenden, aktualisieren Sie die Nextcloud-Version zuerst und führen Sie das Ubuntu-Update erst danach durch. Andernfalls kann es Ihnen passieren, dass Nextcloud danach nicht mehr startet (Fehlermeldung: This version of Nextcloud is not compatible with PHP>=8.5. You are currently running 8.5.4). Es ist ziemlich mühsam, aus dieser Falle wieder herauszukommen, weil die üblichen Update-Mechanismen PHP voraussetzen!
Am Zielsystem habe ich dann ein letztes Update durchgeführt und dann do-release-upgrade gestartet. Der erste Lauf scheiterte an alten MySQL-Passwörtern. Nachdem ich diese umgestellt hatte (Details folgen gleich), lief do-release-upgrade ziemlich problemlos durch.
Bei sämtlichen Rückfragen, ob ich meine geänderten Konfigurationsdateien behalten oder lieber die neuen Konfigurationsdateien verwenden möchte, habe ich mich für meine alten Konfigurationsdateien entschieden. (Die Entscheidung ist nicht ganz einfach: Die neuen Konfigurationsdateien enthalten in der Regel bessere/neuere Einstellungen, die vorzuziehen wären. Umgekehrt will ich aber auch nicht die in der Vergangenheit vorgenommenen Änderungen verlieren.)
Danach ein Reboot, nach 30 Sekunden war ein neuer SSH-Login möglich. Sehr gut!
Jetzt begannen die Aufräumarbeiten. Es gab zwei Hauptprobleme:
Dovecot funktionierte nicht mehr (das war zu erwarten).
PHP auch nicht (das kam überraschend).
Vor dem Ubuntu-Update: MySQL-Passwörter
Mit Ubuntu 26.04 kommt MySQL 8.4. Diese Version des Datenbank-Servers unterstützt standardmäßig keine mysql_native_password-Passwörter mehr. Das ist an sich vernünftig, die Passwörter werden nach einem unsicheren Verfahren verschlüsselt. Es gibt zwei Lösungen: Eine besteht darin, das nicht mehr empfohlene Plugin mysql_native_password doch wieder zu aktivieren. (In Version 9 wird das aber nicht mehr gehen.) Die andere besteht darin, für alle betroffenen Benutzer ein neues Passwort mit dem Verfahren caching_sha2_password einzurichten, im Wesentlichen so:
ALTER USER name@localhost IDENTIFIED WITH caching_sha2_password BY 'topsecret';
Ich habe mich für diese Variante entschieden, zumal es ohnedies nur wenige betroffene Accounts gab. Zwei bereiteten mir allerdings Kopfzerbrechen. Welche Passwörter sollte ich für die (in der Vergangenheit) automatisch eingerichteten Accounts 'debian-sys-maint'@localhost und mysql.session@localhost verwenden? Eine kurze Recherche ergab, dass sich das Passwort für ersteren Account (eine Debian/Ubuntu-Spezialität) in /etc/mysql/debian.cnf befindet. Der zweite Account ist MySQL-intern. Es muss existieren, ist aber nicht für einen Login gedacht. Jedes zufällige Passwort ist OK.
Das eigentliche Update habe ich NACH den MySQL-Änderungen gestartet.
Nach dem Ubuntu-Update: PHP
Nach dem Update liefen Apache und der MySQL-Server auf Anhieb, nur PHP wollte nicht. Die Fehlermeldung im Apache-Log lautete:
(2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php/php8.3-fpm.sock (localhost:8000) failed
Der Fehler war leicht zu finden: Ich verwende PHP mit dem FastCGI Process Manager (FPM). Die PHP-Version wurde auf 8.5 aktualisiert, aber die Konfiguration verwies weiter auf die FPM-8.3-Version. Abhilfe:
Warum der Upgrade-Prozess sich um diese Details nicht gekümmert hat, kann ich nicht sagen. Möglicherweise hatte ich unter Ubuntu 24.04 irgendeine Abweichung von der Default-Konfiguration durchgeführt und die Konfigurationsdateien wurden deswegen nicht aktualisiert.
Ein letzter Hinweis zu PHP: Mit PHP 8.5 werden neue Konfigurationsdateien nach /etc/php/8.5 installiert. In meinem Fall (FPM) ist die Datei /etc/php/8.5/fpm/php.ini relevant. Änderungen, die in der Vergangenheit in der 8.3er-Version von php.ini vorgenommen wurden, müssen jetzt in der 8.5er-Version wiederholt werden. (In meinem Fall war vor allem memory_limit = 512M wichtig, damit Nextcloud ordentlich läuft. Der Defaultwert 128M ist zu klein.)
Dovecot
Dovecot (ein IMAP-Server) macht mit Ubuntu 26.04 einen Versionssprung von 2.3 auf 2.4. Das klingt unspektakulär, aber tatsächlich hat Dovecot mit der neuen Version die Syntax der Konfigurationsdateien grundlegend geändert. Solange die Dateien nicht angepasst werden und insbesondere die Anweisungen dovecot_config_version = 2.4.0 sowie dovecot_storage_version = 2.4.0 an den Beginn von /etc/dovecot.conf eingebaut werden, startet der Dienst nicht.
Upgrading Dovecot CE from 2.3 to 2.4 enthält eine umfassende Migrationsanleitung. Die simple Übernahme der neuen Konfigurationsdateien ist (in meinem Fall) unmöglich, weil ich diverse eigene Anpassungen vorgenommen habe. Schon vor dem Ubuntu-Update habe ich deswegen sicherheitshalber ein Backup des alten Konfigurationsverzeichnisses /etc/dovecot durchgeführt.
Die manuelle Migration erschien mir recht mühsam. Also habe ich Claude Code SSH-Zugriff auf meinen Server gegeben (für einen normalen Account, nicht für root) und habe den folgenden Prompt formuliert:
you can ssh to example.com (no root); go to /etc/dovecot and look at the config files; these are partially from 2.3 and must be updated to 2.4 (see also https://doc.dovecot.org/main/installation/upgrade/2.3-to-2.4.html); explain me what to change, don’t try to do it yourself; summarize your findings locally (not on example.com) into dovecot-migration-plan.md
Diesen Plan habe ich anschließend manuell umgesetzt. Anbei eine Kurzfassung:
Dovecot 2.3 -> 2.4: config changes
dovecot.conf
Add these as the very first settings:
dovecot_config_version = 2.4.0
dovecot_storage_version = 2.4.0
Remove the empty "dict { }" block.
conf.d/10-auth.conf
Old: auth_username_format = %Ln
New: auth_username_format = %{user | username | lower}
conf.d/auth-system.conf.ext
passdb and userdb blocks need a name:
passdb pam {
}
userdb passwd {
}
conf.d/10-mail.conf
mail_location is gone:
mail_driver = maildir
mail_path = ~/Maildir
conf.d/10-master.conf
Old: user = $default_internal_user
New: user = $SET:default_internal_user
conf.d/10-ssl.conf
New setting names, no more "<" before file names:
ssl = yes
ssl_server_cert_file = /etc/letsencrypt/live/
example.com/fullchain.pem
ssl_server_key_file = /etc/letsencrypt/live/
example.com/privkey.pem
ssl_server_dh_file = /etc/dovecot/dh.pem
ssl_server_prefer_ciphers = server
(Each path belongs on one line; it is split here only
for readability.)
ssl_server_prefer_ciphers accepts "client" or "server";
"yes" is a fatal error. The DH file is only needed for
non-ECC key exchange and can be omitted.
conf.d/20-lmtp.conf
"mail_plugins = $mail_plugins sieve" no longer works:
protocol lmtp {
postmaster_address = postmaster@example.com
mail_plugins {
sieve = yes
}
}
conf.d/90-sieve.conf
The plugin { } block is gone. Use named script blocks:
sieve_script personal {
driver = file
path = ~/sieve
active_path = ~/.dovecot.sieve
}
sieve_script after {
type = after
driver = file
path = /etc/dovecot/sieve-after
}
Recompile global sieve scripts (as root):
sievec /etc/dovecot/sieve-after/spam-to-folder.sieve
Users' own scripts are recompiled automatically.
Protocols
2.4 enables no protocols by default. On Debian they come
from /usr/share/dovecot/protocols.d, i.e. one file per
installed package (imapd, lmtpd, managesieved, ...).
Testing
doveconf -n # must run without errors
systemctl restart dovecot
journalctl -u dovecot -n 50
Then check IMAP login, LMTP delivery from Postfix, SMTP
auth via the Postfix SASL socket and sieve filtering.
Eine halbe Stunde später konnte ich in Thunderbird meine Mails wieder abrufen.
Update Configuration File (UCF)
Eine Debian/Ubuntu-Pakete verwenden das Verfahren Update Configuration File (UCF). Bei diesen Paketen wird parallel zur unverändert belassenen Konfigurationsdateien die neue Version der Konfigurationsdatei mit der Kennung *.ucf-dist angelegt. Das ist praktisch, weil Sie unkompliziert danach suchen können:
find /etc -name '*.ucf-dist'
Leider wird UCF nur von ausgewählten Paketen verwendet (auf jeden Fall: apt, dovecot und ssh).
SSH-Server
Der SSH-Server (openssh-server 10.2) läuft zwar auf Anhieb (alles andere wäre ja eine Katastrophe), aber journalctl -u ssh liefert diverse Warnungen:
sshd: rexec line 16: Deprecated option UsePrivilegeSeparation
sshd: rexec line 19: Deprecated option KeyRegenerationInterval
sshd: rexec line 20: Deprecated option ServerKeyBits
sshd: rexec line 31: Deprecated option RSAAuthentication
sshd: rexec line 38: Deprecated option RhostsRSAAuthentication
Also habe ich auch diese Datei etwas aufgeräumt, wobei Claude Code einige weitere Verbesserungsvorschläge gemacht hat (ChallengeResponseAuthentication -> KbdInteractiveAuthentication, PermitRootLogin without-password -> PermitRootLogin prohibit-password, HostKey /etc/ssh/ssh_host_dsa_key entfernen).
Docker
In Ubuntu 24.04 hatte ich Docker-Pakete direkt aus dem Docker-Repo installiert. Die alten Pakete wurden unverändert belassen, Docker funktionierte weiter. Allerdings wurde im Rahmen des Updates die Docker-Paketquelle deaktiviert (siehe /etc/apt/sources.list.d/*.disabled), d.h. ich würde keine Updates mehr erhalten. Ich habe daher die folgende Datei docker.sources neu eingerichtet:
apt update und apt list --upgradable zeigt jetzt zu Ubuntu 26.04 passende Docker-Pakete an, die ich mit apt dist-upgrade installierte. Ein kurzer Test mit docker ps zeigt, dass alle Docker-Container wie geplant laufen.
Obsolete Pakete entfernen
Das Kommando
apt list '?obsolete'
liefert eine Liste von Paketen, die aus früheren Ubuntu-Versionen stammen (zu meiner Schande bis zurück nach 14.04) und zu denen es keine aktive Paketquellen mehr gibt (z.T. uralte Kernel-Versionen). Höchste Zeit, auch hier aufzuräumen. Ich habe Claude Code um eine Analyse gebeten.
find obsolete packages and access which can be safely removed
In der Folge habe ich die meisten betreffenden Pakete mit apt purge entfernt.
Firefox 145 führte als Alternative zu about:logins eine Sidebar für den Zugriff auf gespeicherte Zugangsdaten ein, welche in den Einstellungen des Sidebar-Launchers bislang aber zunächst manuell aktiviert werden musste. Die Passwörter-Sidebar steht ab sofort standardmäßig über den Sidebar-Launcher zur Verfügung.
Das Teilen unter macOS erfolgt nun über den nativen macOS-Picker, der neben AirDrop, Nachrichten und anderen Apps eine Vorschau der Seite sowie die zuletzt verwendeten Kontakte anzeigt. Es können auch mehrere ausgewählte Tabs gleichzeitig geteilt werden.
Die Option „Seite zusammenfassen“ der KI-Chatbots sendet jetzt die Adresse der Seite an den Chatbot-Anbieter statt des Seiteninhalts, sodass lange Seiten nicht mehr auf eine unvollständige Zusammenfassung gekürzt werden.
Intelligente Fenster, ein KI-Feature, welches derzeit noch schrittweise ausgerollt wird, können nun Seiten auf Änderungen wie zum Beispiel Preissenkungen überwachen. Dazu muss im Chat „/watch“ eingegeben werden, um eine Überwachung einzurichten. Daraufhin sendet Firefox eine Desktop-Benachrichtigung, sobald eine Änderung gefunden wird. Die Überwachungen können über die Schaltfläche „Aufgaben“ in der Symbolleiste oder auf der Seite „about:smartwindowtasks“ verwaltet werden.
Unter macOS öffnen Apps, bei denen die Anmeldung über den Standardbrowser erfolgt, wie beispielsweise ChatGPT, ihre Anmeldeseite nun in Firefox statt in Safari, sofern Firefox als Standardbrowser eingestellt ist.
Die Tastenkombination Strg + Shift + A (macOS: Cmd + Shift + A) durchsucht nun offene Tabs, statt about:addons zu öffnen. Hierfür wurde die Tastenkombination auf Strg + Shift + F auf Windows und Linux respektive Cmd + Shift + E auf macOS geändert. Nutzer können die Tastenkombination via about:keyboard aber wieder ändern.
Wird about:processes?groupby=tab anstelle von about:processes aufgerufen, erreicht man nun eine Ansicht der Prozessverwaltung, welche Tabs statt Prozesse auflistet.
In der Webkonsole können let-, const– und class-Variablen erneut deklariert werden, was im Website-Kontext nicht erlaubt ist, sodass ein Codeausschnitt zu Testzwecken bearbeitet und erneut ausgeführt werden kann, ohne dass ein Fehler wegen einer erneuten Deklaration auftritt.
Auch in Firefox 159 wurden wieder mehrere Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 159 daher für alle Nutzer dringend empfohlen.
Darüber hinaus gab es diverse Korrekturen und Optimierungen, welche in den offiziellen Release Notes näher beschrieben werden. Unter anderem wurde behoben, dass der Dateiauswahl-Dialog den letzten Ordner öffnete, in dem eine Datei gespeichert wurde, anstelle des Ordners, der zuletzt für Uploads verwendet wurde. Auch, dass Lesezeichen nicht aus Chrome-Profilen importiert werden konnten, wenn man mit diesen in einem Google-Konto angemeldet war, wurde korrigiert.
Die MZLA Technologies Corporation hat mit Thunderbird 159 eine neue Version seines Open Source E-Mail-Clients für Windows, Apple macOS und Linux veröffentlicht.
Neuerungen von Thunderbird 159
Mit Thunderbird 159 hat die MZLA Technologies Corporation ein Update für seinen Open Source E-Mail-Client veröffentlicht. Taskleisten-Symbole auf Linux zeigen jetzt ungelesene E-Mails an und geben deren Anzahl im Tooltip an. Graph-Kalender werden bei der Erstellung eines neuen Kontos automatisch erkannt. Ansonsten gab es auch wieder eine ganze Reihe von Verbesserungen unter der Haube und Fehlerkorrekturen, welche sich wie immer in den Release Notes (engl.) nachlesen lassen. Auch Sicherheitslücken wurden im neuesten Update wieder behoben.
Haftungsausschluss:
-------------------------------------
Das Video dient lediglich zu Informationszwecken. Wir übernehmen keinerlei Haftung für in diesem Video gezeigte und / oder erklärte Handlungen. Es entsteht in keinem Moment Anspruch auf Schadensersatz oder ähnliches.
@foxit.opensync.info hat sich in #my-it-brain:matrix.org gewünscht, dass dieser Blog in Abhängigkeit der lokalen Systemeinstellungen hell oder dunkel dargestellt wird. Dazu habe ich folgendes CSS von Gemini generieren lassen und in mein Twenty-Twelve-Child-Theme eingebaut:
Falls ihr Darstellungsprobleme oder weitere Anpassungswünsche habt, hinterlasst mir gerne einen Kommentar unter diesem Beitrag oder schreibt an webmaster (at) my-it-brain (dot) de.