Normale Ansicht

Nextcloud auf dem RasPi – Teil 6

05. Oktober 2024 um 17:12

Wer meiner Artikelreihe „Nextcloud auf dem RasPi“ gefolgt ist und alle Schritte nacheinander umgesetzt hat, sollte erfolgreich eine Nextcloud 29 auf dem Raspberry Pi installiert haben, die über ein SSL-Zertifikat von Let’s Encrypt aus dem Internet erreichbar ist. Obwohl inzwischen Version 30 am 14.09.2024 veröffentlicht wurde, wird diese noch nicht im Stable-Zweig bereitgestellt. Daher werde ich nun auf die Behebung der verbleibenden Fehler in Nextcloud 29 eingehen.

Anzeige von Fehlermeldungen in Nextcloud 29
Fehlermeldungen in Nextcloud 29

Es fällt sicherlich auf, dass im installierten System in den Verwaltungseinstellungen zahlreiche Fehlermeldungen aufgelaufen sind. Diese müssen nun behoben und beseitigt werden.

Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.

Das PHP-Speicherlimit liegt unterhalb des empfohlenen Wertes von 512 MB.

Die PHP-Konfigurationsoption „output_buffering“ muss deaktiviert sein

Ihr Webserver ist nicht ordnungsgemäß für die Auflösung von „/ocm-provider/“ eingerichtet. Dies hängt höchstwahrscheinlich mit einer Webserver-Konfiguration zusammen, die nicht dahingehend aktualisiert wurde, diesen Ordner direkt zu auszuliefern. Bitte vergleichen Sie Ihre Konfiguration mit den mitgelieferten Rewrite-Regeln in „.htaccess“ für Apache oder den in der Nginx-Dokumentation mitgelieferten. Auf Nginx sind das typischerweise die Zeilen, die mit „location ~“ beginnen und ein Update benötigen. Weitere Informationen finden Sie in der Dokumentation ↗.

Ihr Webserver ist nicht ordnungsgemäß für die Auflösung von .well-known-URLs eingerichtet. Fehler bei: /.well-known/webfinger Weitere Informationen finden Sie in der Dokumentation ↗.

4 Fehler in den Protokollen seit 20. September 2024, 10:15:53

Der Server hat keine konfigurierte Startzeit für das Wartungsfenster. Das bedeutet, dass ressourcenintensive tägliche Hintergrundaufgaben auch während Ihrer Hauptnutzungszeit ausgeführt werden. Wir empfehlen, das Wartungsfenster auf eine Zeit mit geringer Nutzung festzulegen, damit Benutzer weniger von der Belastung durch diese umfangreichen Aufgaben beeinträchtigt werden. Weitere Informationen finden Sie in der Dokumentation ↗.

Einige Header sind in Ihrer Instanz nicht richtig eingestellt – Der Strict-Transport-Security-HTTP-Header ist nicht gesetzt (er sollte mindestens 15552000 Sekunden betragen). Für erhöhte Sicherheit wird empfohlen, HSTS zu aktivieren. Weitere Informationen finden Sie in der Dokumentation ↗.

In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausführen von „occ db:add-missing-indices“ können die fehlenden Indizes manuell hinzugefügt werden, während die Instanz weiter läuft. Nachdem die Indizes hinzugefügt wurden, sind Anfragen auf die Tabellen normalerweise schneller. Fehlende optionaler Index „mail_messages_strucanalyz_idx“ in der Tabelle „mail_messages“. Fehlende optionaler Index „mail_class_creat_idx“ in der Tabelle „mail_classifiers“. Fehlende optionaler Index „mail_acc_prov_idx“ in der Tabelle „mail_accounts“. Fehlende optionaler Index „mail_alias_accid_idx“ in der Tabelle „mail_aliases“. Fehlende optionaler Index „systag_by_objectid“ in der Tabelle „systemtag_object_mapping“. Fehlende optionaler Index „mail_messages_mb_id_uid_uidx“ in der Tabelle „mail_messages“. Fehlende optionaler Index „mail_smime_certs_uid_email_idx“ in der Tabelle „mail_smime_certificates“. Fehlende optionaler Index „mail_trusted_senders_idx“ in der Tabelle „mail_trusted_senders“. Fehlende optionaler Index „mail_coll_idx“ in der Tabelle „mail_coll_addresses“.

Das PHP OPcache-Modul ist nicht ordnungsgemäß konfiguriert. Der „OPcache interned strings“-Puffer ist fast voll. Um sicherzustellen, dass sich wiederholende Strings effektiv zwischengespeichert werden können, wird empfohlen, „opcache.interned_strings_buffer“ mit einem Wert größer als „8“ in der PHP-Konfiguration zu setzen.. Weitere Informationen finden Sie in der Dokumentation ↗.

Die Datenbank wird für transaktionale Dateisperren verwendet. Um die Leistung zu verbessern, konfigurieren Sie bitte Memcache, falls verfügbar. Weitere Informationen finden Sie in der Dokumentation ↗.

Es wurde kein Speichercache konfiguriert. Um die Leistung zu verbessern, konfigurieren Sie bitte Memcache, sofern verfügbar. Weitere Informationen finden Sie in der Dokumentation ↗.

Für Ihre Installation ist keine Standard-Telefonregion festgelegt. Dies ist erforderlich, um Telefonnummern in den Profileinstellungen ohne Ländervorwahl zu überprüfen. Um Nummern ohne Ländervorwahl zuzulassen, fügen Sie bitte „default_phone_region“ mit dem entsprechenden ISO 3166-1-Code der Region zu Ihrer Konfigurationsdatei hinzu. Weitere Informationen finden Sie in der Dokumentation ↗.

Sie haben Ihre E-Mail-Serverkonfiguration noch nicht festgelegt oder überprüft. Gehen Sie bitte zu den „Grundeinstellungen“, um diese festzulegen. Benutzen Sie anschließend den Button „E-Mail senden“ unterhalb des Formulars, um Ihre Einstellungen zu überprüfen. Weitere Informationen finden Sie in der Dokumentation ↗.

Dieser Instanz fehlen einige empfohlene PHP-Module. Für eine verbesserte Leistung und bessere Kompatibilität wird dringend empfohlen, diese zu installieren: – gmp für WebAuthn passwortlose Anmeldung und SFTP-Speicher Weitere Informationen finden Sie in der Dokumentation ↗.

Fehlerbeseitigung

Der erste Fehler in der Liste (… Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar …) wird behoben, indem man die Konfigurationsdatei des Webservers mit

sudo nano /etc/apache2/apache2.conf

öffnet und den folgenden Eintrag

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

sucht. Hier wird „None“ durch „All“ ersetzt. Anschließend wird der Webserver neu gestartet und überprüft, ob die Fehlermeldung tatsächlich verschwunden ist. Diese Vorgehensweise wird nun bei jedem der zu beseitigenden Fehler wiederholt. Auf diese Weise lässt sich gut nachvollziehen, wie die Liste nach und nach abgebaut wird.

sudo service apache2 restart

Beim zweiten Fehler gilt es, das Memory Limit in der php.ini von 128MB auf 512MB anzuheben. Hierzu öffnet man diese mit

sudo nano /etc/php/8.2/apache2/php.ini

und ändert den Wert von

memory_limit = 128M

auf.

memory_limit = 512M

Anschließend wird der Webserver erneut gestartet.

sudo service apache2 restart

Eine weitere Fehlermeldung (… Einige Header sind in Ihrer Instanz nicht richtig eingestellt …) wird behoben, indem wir den Header HSTS aktivieren.

sudo a2enmod headers

Im Anschluss geht man in den VirtualHost, wie im Artikel „Nextcloud auf dem RasPi – Teil 5“ beschrieben,

sudo nano /etc/apache2/sites-available/raspi.conf

und entfernt das Rautezeichen vor der Zeile. Die Zeile wird also auskommentiert

Header always set Strict-Transport-Security "max-age=31536000"

und der Webserver neu gestartet.

sudo service apache2 restart

Danach wird ein weiterer Fehler (… E-Mail-Serverkonfiguration noch nicht festgelegt …) wie folgt behoben: Hierzu navigiert man in die Verwaltungseinstellungen → Verwaltung → Grundeinstellungen und ermöglicht Nextcloud, eMails zu senden. Dies ist wichtig, damit man bei einem vergessenen Passwort als Nutzer dieses zurücksetzen kann.

Einstellungen des SMTP-Servers (Beispiel)
Einstellungen des SMTP-Servers (Beispiel)

Diese Daten sind natürlich an die eigene E-Mail-Adresse anzupassen. Die meisten E-Mail-Anbieter geben hier entsprechende Anleitungen.

Die nächste Fehlermeldung (… keine Standard-Telefonregion festgelegt …) verschwindet, indem die Konfigurationsdatei der Nextcloud mit

sudo nano /var/www/html/nextcloud/config/config.php

um folgende Zeile am Ende der Auflistung erweitert wird.

'default_phone_region' => 'DE',

Die Fehlermeldung zum OPcache-Modul (… PHP OPcache-Modul ist nicht ordnungsgemäß konfiguriert …) lässt sich beseitigen, indem das Paket php-apcu installiert und die Erweiterung entsprechend konfiguriert wird.

sudo apt install php-apcu -y

Danach wird die Konfiguration der Nextcloud mit

sudo nano /var/www/html/nextcloud/config/config.php

erneut aufgerufen und

'memcache.local' => '\\OC\\Memcache\\APCu',

vor ’trusted_domains eingefügt. Um das Ganze wirksam umzusetzen, öffnet man noch einmal die php.ini mit

sudo nano /etc/php/8.2/apache2/php.ini

und fügt diesen Block am Ende der Datei ein.

opcache.enable=1
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Abschließend wird der Apache2 wieder neu gestartet.

sudo service apache2 restart

Die Problematik zum Thema (… konfigurieren Sie bitte Memcache …) lässt sich lösen, indem man einen Redis-Server installiert, konfiguriert und diesen einbindet. Dazu werden die Pakete redis-server und php-redis installiert.

sudo apt install redis-server php-redis -y

In der redis.conf werden danach mit

sudo nano /etc/redis/redis.conf

die Zeilen

unixsocket /run/redis/redis-server.sock
        unixsocketperm 770

gesucht, auskommentiert und der Redis-Server gestartet.

sudo service redis start

Nun muss der Benutzer www-data noch zur Gruppe redis hinzugefügt werden.

sudo usermod -aG redis www-data

Um das Ganze nun abschließend umzusetzen, wird erneut die Konfiguration der Nextcloud geöffnet,

sudo nano /var/www/html/nextcloud/config/config.php

um folgenden Block unter der Zeile ’memcache.localeinzufügen.

'filelocking.enabled' => true,
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
     'timeout' => 0.0,
      ),

Nach einem erneuten Neustart des Webservers sollte nun auch diese Fehlermeldung verschwunden sein.

sudo service apache2 restart

Nun wird noch dafür gesorgt, dass HTTPS bei einer Webserveranfrage erzwungen wird. Dazu wird das Apache2-Modul rewrite installiert

sudo a2enmod rewrite

und via

sudo nano /etc/apache2/sites-available/raspi.conf

ein weiteres Mal der VirtualHost aufgerufen und dieser Block unter der Zeile <VirtualHost *:80> eingefügt.

RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Wieder wird der Webserver gestartet.

sudo service apache2 restart

Die Fehlermeldung zu fehlenden Modulen (… fehlen einige empfohlene PHP-Module …) wird durch die Installation des Pakets php-gmp beseitigt.

sudo apt install php-gmp -y

Nach der Installation wird der Apache2 ein weiteres Mal neu gestartet.

sudo service apache2 restart

Ein anderer Fehler (… Server hat keine konfigurierte Startzeit für das Wartungsfenster …) lässt sich beheben, indem man die Nextcloud-Konfiguration mit

sudo nano /var/www/html/nextcloud/config/config.php

um diese zwei Zeilen

'maintenance' => false,
  'maintenance_window_start' => 1,

unter dem letzten Block erweitert.

Um OCC-Befehle auszuführen, ist es notwendig, den Alternative PHP Cache (APC) für das Command Line Interface (CLI) zu aktivieren. Dies ist wichtig, um den nächsten Fehler zu beheben. Dazu wird die entsprechende Konfigurationsdatei geöffnet

sudo nano /etc/php/8.2/mods-available/apcu.ini

und folgender Eintrag

apc.enable_cli=1

ans Ende gesetzt und der Webserver neu gestartet.

sudo service apache2 restart

Jetzt kann die Fehlermeldung (… In der Datenbank fehlen einige Indizes …) behoben werden, nachdem das Verzeichnis /var/www/html/nextcloud/ zuvor betreten wurde.

cd /var/www/html/nextcloud/

Hier führt man den entsprechenden OCC-Befehl aus, der fehlende Indizes der Nextcloud-Datenbank hinzufügt.

sudo -u www-data php occ db:add-missing-indices

Abschließend wird die Log-Datei der Nextcloud gelöscht. Danach sollte sich ein grünes Häkchen mit dem Hinweis „Alle Überprüfungen bestanden“ zeigen.

sudo -u www-data truncate /var/www/html/nextcloud/data/nextcloud.log --size 0
Das System arbeitet nun perfekt - grünes Häkchen
Das System arbeitet nun perfekt – grünes Häkchen

Fazit

Selbstverständlich ist es von entscheidender Bedeutung, dass die Nextcloud optimal funktioniert. Dieser Artikel soll dazu beitragen. Anfangs mag man durch die Vielzahl der Fehlermeldungen etwas überwältigt sein. Doch wenn alle Schritte nach und nach abgearbeitet werden, wird man am Ende mit dem grünen Häkchen belohnt. Ein regelmäßiger Blick in die Verwaltungseinstellungen gibt Aufschluss über den Fortschritt und erleichtert das Verständnis der durchgeführten Maßnahmen.

Tipp

Nach der Veröffentlichung des ersten Point Releases von Nextcloud 30 wird automatisch ein Upgrade auf diese Version vorgeschlagen. Es wird empfohlen, über den grafischen Updater auf die neuere Version umzusteigen.

Vorschau

Der nächste Artikel dieser Reihe wird sich damit befassen, das System mit „PHP-FPM“ weiter zu optimieren und die Ladezeiten zu verkürzen.

Buildah baut meine Container-Images

30. September 2024 um 05:00

Dieser Artikel gibt meine Motivation für den Bau von Container-Images und die Vorgehensweise wieder und zeigt, wie ich mit Buildah meine OCI-kompatiblen Container-Images erstelle.

Es handelt sich dabei mehr um einen Erfahrungsbericht als ein Tutorial und ich erhebe keinen Anspruch auf Vollständigkeit. Das behandelte Beispiel ist jedoch zum Einstieg und zur Nachahmung für all jene geeignet, die Container ausführen können und diese gerne ohne Verwendung von Containerfiles bauen möchten.

Motivation

Ich möchte die Ansible-Rollen aus meiner Collection tronde.nextcloud mit Molecule und Podman-Containern testen. Als Zielplattform für das Deployment der Nextcloud unterstütze ich zunächst Debian und RHEL.

Die Tests sollen verifizieren, dass Nextcloud im Container in einer rootless-Podman-Umgebung bereitgestellt werden kann. Da der Test unter Verwendung von Podman-Containern durchgeführt werden soll, müssen diese Container eine solche rootless-Podman-Umgebung bereitstellen.

Für RHEL 8 und RHEL 9 habe ich entsprechende Container-Images gefunden. Für Debian bin ich nicht fündig geworden und habe daher beschlossen, diese Container-Images selbst zu erstellen.

Buildah ist das Werkzeug meiner Wahl, da:

  • Container-Images damit interaktiv erstellt werden können,
  • die verwendeten Befehle am Ende in einem Bash-Skript gesammelt werden können,
  • sich damit sogar interaktive Abfragen mit Heredocs beantworten lassen,
  • man kein containerfile(5) benötigt und
  • ich das Werkzeug noch nicht kenne und es gerne kennenlernen möchte.

Für mich sind dies ausreichend Gründe, um mich kopfüber in ein neues Container-Projekt zu stürzen. Wer mehr über die Beziehung von Buildah zu Podman erfahren möchte, dem empfehle ich den englischsprachigen Artikel: Buildah and Podman Relationship von Tom Sweeney.

Mein Weg zum Image

Um rootless Podman in einem Container zum Laufen zu bekommen, habe ich mich an dem englischsprachigen Artikel How to use Podman inside of a container von Dan Walsh orientiert. Das Ergebnis findet ihr in meinem GitHub-Repo tronde/container-image-forge.

Die folgenden Code-Blöcke zeigen Auszüge aus dem Skript buildah_create_debian_bookworm_with_rootless_podman.sh (Commit 7634ed8). Die enthaltenen Befehle werden unter dem jeweiligen Code-Block erläutert. Alle Befehle werden als normaler Benutzer ohne Root-Rechte ausgeführt.

# Name of target container image
tctri=debian_rootless_podman

# Get a base image
ctr=$(buildah from --pull=newer docker://docker.io/library/debian:bookworm)
  • Die Variable tctri nimmt den Namen des Container-Images auf, welches ich erzeugen werde
  • Die Variable ctr nimmt den Namen des Containers auf, welcher durch den buildah-from(1)-Befehl erzeugt wird; mit diesem Container wird im Folgenden gearbeitet
  • Die Option --pull=newer sorgt dafür, dass das Image nur dann aus der angegebenen Registry heruntergeladen wird, wenn es aktueller als das evtl. lokal gespeicherte Image ist
buildah run -- $ctr apt -y update
buildah run -- $ctr apt -y upgrade
buildah run -- $ctr apt -y install podman fuse-overlayfs libvshadow-utils libcap2-bin ca-certificates
  • Mit buildah-run(1) werden Befehle innerhalb des Arbeits-Containers ausgeführt
  • Ich aktualisiere die im Basis-Image enthaltenen Pakte und
  • installiere die für rootless Podman benötigten Pakete
  • Das Paket ca-certificates wird benötigt, um später Container-Images aus einer Registry herunterladen zu können
buildah run -- $ctr useradd podman
buildah run -- $ctr sh -c "echo podman:1:999 > /etc/subuid"
buildah run -- $ctr sh -c "echo podman:1001:64535 >> /etc/subuid"
buildah run -- $ctr sh -c "echo podman:1:999 > /etc/subgid"
buildah run -- $ctr sh -c "echo podman:1001:64535 >> /etc/subgid"
buildah run -- $ctr setcap cap_setuid+epi /usr/bin/newuidmap
buildah run -- $ctr setcap cap_setgid+epi /usr/bin/newgidmap
  • Mit den hier dargestellten Befehlen wird der nicht-privilegierte Benutzer podman erstellt
  • Die IDs für /etc/sub[g,u]id habe ich mir aus dem ubi9/podman-Image abgeschaut
  • Die setcap-Befehle sind notwendig, um rootless Podman ausführen zu können; ich habe sie durch Internetrecherche und Trial-and-Error zusammengestellt
buildah config -v /var/lib/containers $ctr
buildah config -v /home/podman/.local/share/containers $ctr
  • Das Image wird in der Lage sein, rootful und rootless Podman auszuführen
  • Mit den beiden Befehlen werden die Volumes hinzugefügt, die Podman als Container Storage nutzt
    • Rootful Podman verwendet /var/lib/containers
    • Rootless Podman verwendet /home/podman/.local/share/containers
buildah run -- $ctr chown -R podman:podman /home/podman
buildah run -- $ctr sh -c "mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers /var/lib/shared/vfs-images /var/lib/shared/vfs-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock; touch /var/lib/shared/vfs-images/images.lock; touch /var/lib/shared/vfs-layers/layers.lock"
buildah config --env _CONTAINERS_USERNS_CONFIGURED="" $ctr
  • Der Benutzer podman bekommt ein HOME-Verzeichnis
  • Ich erstelle die Verzeichnisse, die ich im Artikel [7] gefunden habe
  • Ich erstelle die Environment-Variable, die ich ebenfalls in genanntem Artikel [7] gefunden habe
buildah run -- $ctr apt -y reinstall uidmap
buildah run -- $ctr apt -y clean
buildah run -- $ctr rm -rf /var/lib/apt/lists/*
  • Aus mir nicht bekannter Ursache muss das Paket uidmap neu installiert werden, um ein UID/GID-Mapping sicherzustellen; dies scheint analog zur Neuinstallation der shadow-utils in Artikel [7] notwendig zu sein
  • Die beiden folgenden Befehle sollen den Paket-Cache aufräumen, um die Größe des resultierenden Images zu verkleinern, zeigen jedoch keinen sichtbaren Effekt
# Commit to an image
buildah commit --rm $ctr $tctri
# Alternative: Use this and add GPG fingerprint for image signing
# buildah commit --sign-by <fingerprint> --rm $ctr $tctri

# Tag the image just created
buildah tag $tctri $tctri:bookworm-$(date --iso)
  • Mit buildah-commit(1) wird der Inhalt des Arbeits-Containers $ctr in ein Container-Image namens $tctri geschrieben
  • Durch Angabe der Option --rm wird der Arbeits-Container entfernt
  • Die Kommentarzeile lässt erkennen, dass ich zukünftig beabsichtige, meine Images digital zu signieren
  • buildah-tag(1) fügt dem Image einen Tag mit Datumsstempel hinzu; siehe auch: Recommendations for tagging and versioning container images

Der Befehl buildah-commit(1) fügt dem neuen Image übrigens nur einen weiteren Layer hinzu, egal wie viele Befehle zuvor im Arbeits-Container ausgeführt wurden. Das erzeugte Image umfasst also die Layer des Basis-Image plus einen weiteren.

Zwischenfazit

An diesem Punkt habe ich ein Basis-Image ausgewählt, mithilfe von buildah zusätzliche Software installiert, einen Benutzer hinzugefügt und ein neues Image erzeugt.

Um den Build-Prozess zu automatisieren, habe ich die notwendigen Befehle in Bash-Skripte geschrieben und unter https://github.com/Tronde/container-image-forge abgelegt.

Die fertigen Images halte ich in der Registry https://quay.io/repository/rhn-support-jkastnin/debian_rootless_podman vor. Fühlt euch frei, diese für eigene Experimente zu benutzen, doch verwendet sie nur mit Vorsicht in Produktion. Ich erzeuge diese Images nur nach Bedarf neu, so dass die veröffentlichen Versionen veraltet und voller Sicherheitslücken sein können.

Validierung

Jetzt, wo die Images fertig sind, kann ich prüfen, ob sich rootless Podman darin auch wie gewünscht ausführen lässt.

Die Prozesse innerhalb des von meinem Container-Image instanziierten Containers laufen als Benutzer root. Um die Prozesse als Benutzer podman auszuführen, ist dies beim Aufruf von podman run explizit mit anzugeben. Der folgende Code-Block verdeutlicht dies und zeigt zugleich den ersten Fehler beim Versuch rootless Podman auszuführen.

]$ podman run --rm localhost/debian_rootless_podman:bookworm-2024-09-21 id
uid=0(root) gid=0(root) groups=0(root)
]$ podman run --rm --user podman localhost/debian_rootless_podman:bookworm-2024-09-21 id
uid=1000(podman) gid=1000(podman) groups=1000(podman)
]$ podman run --rm --security-opt label=disable --user podman --device /dev/fuse localhost/debian_rootless_podman:bookworm-2024-09-21 podman info
time="2024-09-21T18:43:35Z" level=error msg="running `/usr/bin/newuidmap 15 0 1000 1 1 1 999 1000 1001 64535`: newuidmap: write to uid_map failed: Operation not permitted\n"
Error: cannot set up namespace using "/usr/bin/newuidmap": exit status 1

Der Fehler deutet auf fehlende capabilities(7) hin. Um diese Hypothese zu testen, wiederhole ich den letzten Befehl mit der Option --privileged (siehe dazu podman-run(1)):

]$ podman run --rm --security-opt label=disable --user podman --device /dev/fuse --privileged localhost/debian_rootless_podman:bookworm-2024-09-21 podman info
host:
…

Damit funktioniert es. Leider geben sich viele Menschen an dieser Stelle mit dem Ergebnis zufrieden. Doch ich möchte diese Container nicht einfach mit --privileged ausführen. Also studiere ich die Manpage capabilities(7) und teste mich Stück für Stück heran, bis ich mit dem folgenden Kommando ebenfalls erfolgreich bin:

]$ podman run  --rm --user podman --security-opt label=disable --device /dev/fuse --cap-add=setuid,setgid,sys_admin,chown localhost/debian_rootless_podman:bookworm-2024-09-21 podman info
host:
…

Dies ist schon deutlich besser, da dem Container hiermit deutlich weniger Privilegien eingeräumt werden müssen. Das Thema Container-Privilegien und capabilities(7) werde ich noch genauer untersuchen. Eventuell folgt dazu dann auch ein weiterer Artikel. Für den Moment ist das Ergebnis gut genug.

Quellen und weiterführende Links

  1. Buildah.io
  2. Ansible Collection tronde.nextcloud
  3. Mein Wochenendprojekt Nextcloud im Container
  4. Podman Images im Red Hat Catalog
  5. Buildah and Podman Relationship von Tom Sweeney
  6. About Ansible Molecule
  7. How to use Podman inside of a container by Dan Walsh
  8. Using podman containers
  9. Having trouble getting started with rootless podman running rootless podman inside a Debian 12 image #23838
  10. Recommendations for tagging and versioning container images

Linux-Mainline erhält Realtime-Support

29. September 2024 um 11:30

Die letzten wichtigen verbleibenden Bausteine für den Realtime-Support für Linux wurden in den Mainline-Zweig aufgenommen. Das bedeutet, dass Linux 6.12 voraussichtlich in einem echtzeitfähigen Modus betrieben werden kann, wenn der Kernel entsprechend kompiliert wird.

Echtzeitfähigkeit wird insbesondere in Embedded-Szenarien benötigt, wenn auf eine Eingabe innerhalb einer vorhersagbaren Zeit eine Antwort erwartet wird. Speziell in der Robotik, aber auch in der Multimediaproduktion gibt es solche Anforderungen. Dabei kommt es nicht darauf an, dass eine Aufgabe schnell abgearbeitet wird, sondern, dass sie in einer deterministischen Zeit begonnen wird.

Ein Beispiel für Echtzeit

An dieser Stelle mag sich die Frage stellen, was diese Echtzeitfähigkeit, von der hier geredet wird, überhaupt ist. Das lässt sich gut am Beispiel eines Line-following Robot klären. Was ein solcher Roboter tut, kann man sich z. B. in diesem YouTube-Video ansehen. Technisch besteht so ein Roboter aus zwei (oder mehr) Kameras als Sensoren, zwei Motoren für jeweils ein Rad als Aktoren und einem Controller zur Steuerung. Die Kameras sollen den Kontrast ermitteln, damit festgestellt werden kann, ob sie noch auf die schwarze Linie zeigen. Bemerkt eine der Kameras beim Fahren, dass sie den Sichtkontakt zur Linie aufgrund z. B. einer Kurve verliert, müssen die Motoren durch eine leichte Drehung nachsteuern, um auf der Linie zu bleiben.

Diese Kameras lösen üblicherweise entsprechend ihrer Abtastfrequenz auf dem Controller für die Steuerung einen Interrupt aus. Das führt zur Abarbeitung der Steuerungsroutine, die für beide Motoren die Geschwindigkeit berechnet, mit der sie sich drehen sollen.

Entscheidend ist, dass nicht beide Kameras den Sichtkontakt verlieren, damit der Roboter weiterhin weiß, in welche Richtung er nachsteuern muss. Üblicherweise wird das beim Testen funktionieren, aber es kann in bestimmten Randbedingungen bei normalen Betriebssystemen, wenn der Controller z. B. mit vielen anderen Aufgaben zufälligerweise beschäftigt ist, passieren, dass auf einmal nicht schnell genug die Routine aufgerufen wird. Der Roboter verliert dann den Sichtkontakt.

Der Entwickler eines solchen Roboters kann nun eine Echtzeitanforderung formulieren, dass z. B. auf ein Interrupt von den Kameras innerhalb von 1 Millisekunde reagiert werden muss. Er kann mit dieser Anforderung jetzt die maximale Geschwindigkeit des Roboters so wählen, dass der Roboter langsam genug fährt, um nicht die Linie – trotz der Latenz von im worst-case 1 Millisekunde – nicht zu verlieren.

Diese 1 Millisekunde muss aber auch vom Controller, seinem Betriebssystem und schließlich seinem Kernel garantiert werden. Der Kernel muss also in jeder Situation in der Lage sein, auf eine Anforderung innerhalb einer vorbestimmten Zeit zu reagieren. Unabhängig von der zwingenden Fähigkeit, präemptiv zu arbeiten, also jederzeit anderer Prozesse unterbrechen zu können, darf der Kernel auch nicht mit sich selber unvorhersehbar lange beschäftigt sein, wenn z. B. eine Synchronisation hängt.

20 Jahre Arbeit

Und genau hierum geht es beim grob gesagt beim PREEMPT_RT-Patch. Der Kernel muss so nachgebessert werden, dass keine Komponente sich unnötig lange aufhängt und somit die Abarbeitung von Aufgaben behindert, für die eine garantierte Ausführungszeit festgelegt wurde.

Die ursprüngliche Arbeit begann bereits im Jahr 2004 auf einem getrennten Zweig und hatte viele Verbesserungen in den Kernel gebracht, zuletzt an der printk()-Infrastruktur. Jetzt sollten die Arbeiten so weit sein, dass Realtime nicht mehr auf einem getrennten Zweig, sondern im Hauptzweig entwickelt werden kann.

Die Echtzeitfähigkeit gab es somit in speziell präparierten Kernels schon lange. Neu ist, dass der Code im Hauptzweig gepflegt wird und somit besser mit Änderungen anderer Maintainer abgestimmt werden kann. Denn eine Änderung an einer anderen Komponente reicht schon aus, um die Echtzeitfähigkeit zu unterminieren.

Linux echtzeitfähig zu machen, ist somit ein großer Aufwand gewesen, weil man solche Fähigkeiten oft nur in spezialisierten Betriebssystemen (sogenannten Real-time operating systems, RTOS) vorfindet. Insbesondere Thomas Gleixner und John Ogness haben hier große Anstrengungen unternommen. Jetzt, nach knapp 20 Jahren Arbeit, dürfte das Vorhaben einen wichtigen Meilenstein erreichen.

Wer sich für einen tieferen Einblick in die Linux-RT-Welt interessiert, kann einerseits den Artikel von Thomas Leemhuis auf Heise Online von letzter Woche lesen oder sich auf LWN durch das Artikelarchiv zu der Thematik arbeiten.

Ubuntu 24.04 mit UTM unter macOS ausführen

26. September 2024 um 14:12

Vielleicht wollen oder können Sie Ubuntu nicht direkt auf Ihr Notebook oder Ihren PC installieren. Dennoch interessieren Sie sich für Linux oder brauchen eine Installation für Schule, Studium oder Software-Entwicklung. Diese Artikelserie fasst drei Wege zusammen, Ubuntu 24.04 virtuell zu nutzen:

  • Teil I: im Windows Subsystem for Linux (WSL)
  • Teil II: mit VirtualBox (Windows mit Intel/AMD-CPU)
  • Teil III (dieser Text): mit UTM (macOS ARM)

In diesem Artikel gehe ich davon aus, dass Sie einen Mac mit ARM-CPU (M1, M2 usw.) verwenden. Für ältere Modelle mit Intel-CPUs gelten z.T. andere Details, auf die ich hier nicht eingehe. Insbesondere müssen Sie dann eine ISO-Datei für x86-kompatible CPUs verwenden, anstatt, wie hier beschrieben, eine ARM-ISO-Datei!

Virtualisierungssysteme für macOS ARM

Sie haben die Wahl:

  • Parallels Desktop: gut, aber wegen jährlicher Update-Pflicht sehr teuer
  • VMWare Fusion: kostenlos (for personal use), aber gut versteckter Download (erfordert vorher Registrierung bei Broadcom, danach lange Suche), verwirrende Bedienung, unklare Zukunft

  • UTM: Open-Source-Programm, kostenloser Download oder 10 EUR über App Store (einziger Unterschied: automatische Updates)

  • VirtualBox: kostenlos, aber aktuell erst als Beta-Version verfügbar und extrem langsam

Ich konzentriere mich hier auf UTM, der aus meiner Sicht überzeugendsten Lösung.

UTM

UTM ist ein Open-Source-Programm, das nur als Schnittstelle zu zwei Virtualisierungssystemen dient: dem aus der Linux-Welt bekannten QEMU-System sowie dem Apple Hypervisor Virtualization Framework (integraler Bestandteil von macOS seit Version 13, also seit Herbst 2022). UTM ist also lediglich eine grafische Oberfläche und delegiert die eigentliche Virtualisierung an etablierte Frameworks.

Sie können UTM um ca. 10 EUR im App Store kaufen und so die UTM-Entwickler ein wenig unterstützen, oder das Programm kostenlos von https://mac.getutm.app/ herunterladen und (vollkommen unkompliziert!) selbst installieren.

Sodann können Sie mit UTM virtuelle Maschinen mit Linux, Windows und macOS ausführen. Ich behandle hier ausschließlich Linux.

QEMU oder Apple Virtualization?

Wenn Sie in UTM eine neue virtuelle Maschine für Linux einrichten, haben Sie die Wahl zwischen zwei Virtualisierungssystemen: QEMU und Apple Virtualization. Welches ist besser?

  • Die QEMU-Variante bietet viel mehr Konfigurationsmöglichkeiten rund um die Netzwerkeinbindung und das Grafiksystem. Allerdings braucht die virtuelle Maschine doppelt so viel RAM wie vorgesehen: Wenn Sie eine VM mit 4 GB RAM einrichten, gehen beim Betrieb 8 GB RAM im macOS-Arbeitsspeicher verloren! macOS ist gut dabei, ungenutzte RAM-Teile zu komprimieren oder auszulagern, dennoch ist diese RAM-Verschwendung Wahnsinn. (Das gleiche Problem habe ich übrigens auch bei Tests mit VMWare Fusion festgestellt.)
  • Bei Apple Virtualization funktioniert die Speicherverwaltung, d.h. eine virtuelle Maschine mit 4 GB RAM braucht tatsächlich nur 4 GB RAM. (Das sollte ja eigentlich selbstverständlich sein …) Dafür haben Sie bei der Netzwerkkonfiguration kaum Wahlmöglichkeiten. Die VMs werden immer über eine Netzwerkbrücke in das lokale Netzwerk integriert. Es gibt zwar zwei Optionen, Gemeinsames Netzwerk und Bridge-Modus. Soweit ich es nachvollziehen kann, reduziert Gemeinsames Netzwerk nur die Optionen für den Bridge-Modus, ändert aber daran nichts. Das Apple Virtualization Framework würde auch NAT unterstützen, aber UTM stellt diese Option nicht zur Wahl.

In der Oberfläche von UTM wird die Verwendung von Apple Virtualization als experimentell bezeichnet. Ich habe bei meinen Tests leider mit beiden Frameworks gelegentliche Abstürze von virtuellen Maschinen erlebt. Ich würde beide Frameworks als gleichermaßen stabil betrachten (oder auch instabil, je nach Sichtweise; unter Linux mit QEMU/KVM sind mir Abstürze unbekannt). Persönlich verwende ich, vor allem um RAM zu sparen, für neue VMs nur mehr die Apple Virtualization. Glücklicherweise passt der Bridge Modus gut zu meinen Netzwerkanforderungen.

Wenn Sie VMs mit macOS oder Windows erstellen, entfällt die Wahlmöglichkeit. Windows VMs können nur durch QEMU ausgeführt werden, macOS VMs nur mit dem Apple Virtualization Framework.

Ubuntu installieren

Die erste Hürde hin zur Ubuntu-Installation besteht darin, ein ARM-ISO-Image zu finden. Auf den üblichen Download-Seiten finden Sie nur die x86-Variante von Ubuntu Desktop. Es gibt aber sehr wohl ein ARM-Image! Es ist auf der Website cdimage.ubuntu.com versteckt (noble-desktop-arm64.iso):

https://cdimage.ubuntu.com/noble/daily-live/current

In UTM klicken Sie auf den Plus-Button, um eine neue virtuelle Maschine einzurichten. Danach wählen Sie die folgenden Optionen:

  • Virtualisieren
  • Linux
  • Option Use Apple Virtualiuation, Button Durchsuchen, um die ISO-Datei (das Boot-ISO-Abbild) auszuwählen
  • Speicher: 4 GB ist zumeist eine sinnvolle Einstellung
  • Prozessorkerne: ich verwende zumeist 2, die Einstellung Standard ist auch OK
  • Datenspeicher (Größe des Disk-Images): nach Bedarf, 25 GB sind in meiner Erfahrung das Minimum
  • Freigegebener Ordner: sollte die Nutzung eines macOS-Verzeichnisses innerhalb der virtuellen Maschine ermöglichen, funktioniert meines Wissens aber nur, wenn die virtuelle Maschine selbst macOS ist
  • Zusammenfassung: hier geben Sie der virtuellen Maschine einen Namen
Setup der neuen virtuellen Maschine in UTM
Einstellung des Namens der virtuellen Maschine

Nachdem Sie alle Einstellungen gespeichert haben, starten Sie die virtuelle Maschine. Nach ca. 30 Sekunden sollte der Desktop mit dem Installationsprogramm erscheinen (erster Dialog: Welcome to Ubuntu). Falls das Installationsprogramm je nach Monitor auf einem riesigen Desktop winzig dargestellt wird, öffnen Sie rechts oben über das Panel-Menü die Einstellungen (Zahnrad-Icon), suchen das Dialogblatt Displays und wählen eine kleinere Bildschirmauflösung aus.

Im Installationsprogramm stellen Sie nun die gewünschte Sprache ein. Bei der Einstellung des Tastaturlayouts wählen Sie Deutsch und die Tastaturvariante Deutsch Macintosh, damit die Mac-Tastatur unter Ubuntu richtig funktioniert. Alle weiteren Einstellungen erfolgen wie bei einer Installation unter VirtualBox, siehe Ubuntu 24.04 in VirtualBox ausführen. Sie brauchen keine Software von Drittanbietern, können aber die Option Unterstützung für zusätzliche Medieformate aktivieren.

Ausführung des Ubuntu-Installationsprogramms

Nach Abschluss aller Setup-Dialoge dauert die Installation ca. fünf Minuten. Da während der Installation manche Pakete aus dem Internet heruntergeladen werden, ist die Dauer der Installation auch von der Geschwindigkeit Ihres Internetzugangs abhängig.

Ubuntu nutzen

Nach dem ersten Neustart erscheint der Ubuntu-Desktop. Wieder kann es je nach Monitor passieren, dass die Grafikauflösung in der virtuellen Maschine zu groß ist. Öffnen Sie das Programm Einstellungen, dort das Dialogblatt Anzeigegeräte und stellen Sie eine passende Auflösung ein. Im Unterschied zu anderen Virtualisierungsprogramme ändert sich die Auflösung nicht automatisch, wenn Sie das UTM-Fenster verändern. Stattdessen wird der im Fenster angezeigte Inhalt skaliert.

Damit sich die Maus in der virtuellen Maschine wie unter macOS verhält, aktivieren Sie in Einstellungen/Maus und Tastfeld die Option Natürliche Rollrichtung.

Um Text zwischen macOS und Ubuntu auszutauschen, können Sie die Zwischenablage verwenden. Dazu muss weder zusätzliche Software installiert noch irgendeine Konfiguration verändert werden.

Zum Austausch von Dateien verwenden Sie am einfachsten scp.

Ubuntu 24.04 (ARM) läuft unter macOS

Speicherort der virtuellen Maschinen

UTM speichert die virtuellen Maschinen im Verzeichnis Library/Containers/com.utmapp.UTM. In der Regel ist es nicht zweckmäßig, die riesigen Image-Dateien in das TimeMachine-Backup mit aufzunehmen. Fügen Sie daher bei den TimeMachine-Einstellungen eine entsprechende Regel hinzu.

Quellen/Links

Ubuntu 24.04 in VirtualBox ausführen

26. September 2024 um 14:11

Vielleicht wollen oder können Sie Ubuntu nicht direkt auf Ihr Notebook oder Ihren PC installieren. Dennoch interessieren Sie sich für Linux oder brauchen eine Installation für Schule, Studium oder Software-Entwicklung. Diese Artikelserie fasst drei Wege zusammen, Ubuntu 24.04 virtuell zu nutzen:

  • Teil I: im Windows Subsystem for Linux (WSL)
  • Teil II (dieser Text): mit VirtualBox (Windows mit Intel/AMD)
  • Teil III: mit UTM (macOS ARM)

VirtualBox

VirtualBox war lange Zeit das dominierende Virtualisierungsprogramm für Privatanwender: kostenlos (wenn auch nicht vollständig Open Source), funktionell, relativ einfach zu bedienen und für alle drei relevanten Betriebssysteme verfügbar (Windows, macOS, Linux).

Diese Rolle ist zuletzt stark ins Wanken gekommen. Aus meiner Sicht gibt es drei gravierende Probleme:

  • VirtualBox unter Windows (mit x86-kompatiblen CPUs) litt in den vergangenen Jahren immer wieder unter massiven Stabilitätsproblemen. Möglicherweise wurde diese durch Inkompatibilitäten mit dem Microsoft-Hypervisor (Hyper-V) ausgelöst — wirklich schlüssig war es für mich nie. Wenn VirtualBox auf zehn Studenten-Notebooks mit Windows funktioniert, kann dieselbe Version auf dem elften Notebook Probleme bereiten, die nur schwer nachzuvollziehen sind.
  • Das zweite Problem besteht darin, dass VirtualBox Intel/AMD-CPUs voraussetzt. Zwar gibt es eine Beta-Version von VirtualBox für Macs mit M1/M2/…-CPU, diese ist aber noch unerträglich langsam. Für Windows oder Linux auf ARM-Hardware gibt es gar keine Angebote.

  • Schließlich hatte ich zuletzt immer wieder Schwierigkeiten mit den unzähligen Zusatzfunktionen von VirtualBox. Die Installation der Guest Tools hakt, das Grafiksystem zeigt Darstellungsfehler, die geteilten Verzeichnisse haben in der VM die falschen Zugriffsrechte usw. Weniger wäre mehr.

Aktuell gibt es mit dem ganz frischen Release von VirtualBox 7.1.0) noch ein Problem: Die Netzwerkgeschwindigkeit in den virtuellen Maschinen ist unerträglich langsam. Das Problem ist bekannt und wird hoffentlich demnächst behoben. Bis dahin empfehle ich Ihnen, mit Version 7.0.20 zu arbeiten. Ich habe die in diesem Artikel beschriebene Installation mit 7.1.0 durchgeführt (und damit auch die Screenshots erstellt), bin aber im Anschluss zurück auf die alte Version umgestiegen. Das Format der virtuellen Maschinen hat sich zum Glück nicht geändert. Ältere VirtualBox-Downloads finden Sie hier.

Wenn ich Sie bis jetzt nicht abgeschreckt habe, erläutere ich Ihnen im Folgenden die Installation von Ubuntu 24.04 in einer virtuellen Maschine, die in VirtualBox 7.0 unter Windows 11 (für Intel/AMD) läuft.

Ubuntu installieren

Zuerst müssen Sie VirtualBox installieren. Danach brauchen Sie zur Installation von Ubuntu das ISO-Image von Ubuntu, das Sie von der Ubuntu-Download-Seite herunterladen.

Als nächstes richten Sie in VirtualBox mit dem Button Neu eine neue virtuelle Maschine ein. Im ersten Blatt des Setup-Dialogs geben Sie der virtuellen Maschine einen Namen und wählen die ISO-Datei aus. VirtualBox erkennt selbst, dass die ISO-Datei Ubuntu enthält, und stellt Typ, Subtyp und Version selbst ein.

VirtualBox kann bei Ubuntu eine Unbeaufsichtigte Installation durchführen. Dazu geben Sie im folgenden Dialogblatt den Benutzernamen, das Passwort und den gewünschten Hostnamen an. Sie ersparen sich mit einer unbeaufsichtigten Installation die Bedienung des Ubuntu-Installationsprogramms. Allerdings hat diese Installationsvariante den Nachteil, dass Ubuntu nach der Installation englische Menüs anzeigt und ein englisches Tastaturlayout verwendet. Deswegen ist es aus meiner Sicht sinnvoll, die Option Unbeaufsichtigte Installation überspringen zu aktivieren.

Die unbeaufsichtigte Installation hat mehr Nach- als Vorteile

Im Dialogblatt Hardware sollten Sie der virtuellen Maschine zumindest 4 GB RAM und zwei CPU-Cores zuweisen. Die vorgeschlagenen 2 GB RAM sind definitiv zu wenig und führen dazu, dass nicht einmal der Start der virtuellen Maschine möglich ist!

Im Dialogblatt Festplatte stellen Sie ein, wie groß die virtuelle Disk sein soll. 25 GB ist aus meiner Sicht das Minimum, um Ubuntu ein wenig auszuprobieren. Je nach Verwendungszweck brauchen Sie aber natürlich mehr Speicherplatz.

Fertigstellen beendet den Dialog. Bevor Sie mit der Installation starten, sollten Sie nun mit Ändern noch zwei Einstellungen der virtuellen Maschine anpassen:

  • Allgemein/Erweitert/Gemeinsame Zwischenablage = bidirektional
  • Anzeige/Bildschirm/Grafikspeicher = mindestens 32 MB, ich empfehle das Maximum von 128 MB

Optionale Einstellungen für die virtuelle Maschine. Dem Grafiksystem sollten zumindest 32 MB RAM zur Verfügung stehen.

Ein Doppelklick auf das VM-Icon startet die virtuelle Maschine. Nach ca. einer halben Minute erscheint der Ubuntu-Desktop mit dem Installationsprogramm. Unter Umständen wird vorher im Textmodus die beunruhigende Fehlermeldung * vmwgfx seems to be running on an unsupported hypervisor* angezeigt. Zumindest bei meinen Tests startet das Grafiksystem wenig später dennoch fehlerfrei.

Im Installationsprogramm stellen Sie in den ersten Schritten die gewünschte Sprache und das Tastaturlayout ein. Sie geben an, dass Sie Ubuntu installieren (und nicht nur ausprobieren) möchten, und entscheiden sich für die interaktive Standard-Installation. (Wenn Sie gleich auch Gimp, LibreOffice usw. haben möchten, ist Vollständige Installation die bessere Wahl.)

Mit der »Standard-Installation« werden nur die wichtigsten Programme installiert. Weitere Software können Sie später installieren.

Im nächsten Dialogblatt haben Sie die Option, zusätzliche Treiber sowie Audio- und Video-Codecs zu installieren. Treiber brauchen Sie in der virtuellen Maschine keine, und die fehlenden Codecs können Sie gegebenenfalls später immer noch installieren (sudo apt install ubuntu-restricted-extras).

Im Dialogblatt Art der Installation geht es um die Partitionierung der virtuellen Disk sowie um das Einrichten der Dateisysteme für Ubuntu. Weil Sie Ubuntu in eine virtuelle Maschine installieren, müssen Sie keinerlei Rücksicht auf andere Betriebssysteme nehmen und können sich einfach für die Option Festplatte löschen und Ubuntu installieren entscheiden.

In virtuellen Maschinen ist eine manuelle Partitionierung des Datenträgers glücklicherweise überflüssig

Auf der nächsten Seite geben Sie Ihren Namen, den Hostname, den Account-Namen sowie das gewünschte Passwort an. Das nächste Dialogblatt betrifft die Zeitzone, die normalerweise automatisch korrekt eingestellt wird. Zuletzt werden die wichtigsten Einstellungen nochmals zusammengefasst. Installieren startet den Installations-Prozess, der je nach Rechnergeschwindigkeit einige Minuten dauert.

Personalisierung der Installation

Ubuntu nutzen

Nach Abschluss der Installation starten Sie die virtuelle Maschine neu und können Ubuntu dann beinahe wie bei einer realen Installation nutzen. Die Auflösung der virtuellen Maschine ändern Sie unkompliziert innerhalb von Ubuntu im Programm Einstellungen, Modul Anzeigegeräte. Wenn Sie einen hochauflösenden Bildschirm verwenden, kann es außerdem zweckmäßig sein, den skalierten Modus zu aktivieren (Anzeige / Skalierter Modus im Menü des Fensters der virtuellen Maschine).

Die virtuelle Maschine verwendet Wayland als Grafiksystem

Installation der VirtualBox-Gasterweiterungen

Um den Datenaustausch zwischen Windows und Ubuntu zu erleichtern, können Sie die VirtualBox-Gasterweiterungen installieren. Dazu sind zwei Schritte erforderlich:

Zuerst führen Sie im Fenster der virtuellen Maschine Geräte / Gasterweiterungen einlegen aus.

Anschließend geben Sie in einem Terminalfenster die folgenden Kommandos ein:

sudo apt update
sudo apt install build-essential
sudo /media/<accountname>/VBox_GAs_nnn/VBoxLinuxAdditions-arm64.run

Sie gewinnen damit die folgenden Features:

  • Die Auflösung des Grafiksystems von Ubuntu wird automatisch an die Größe des Fensters der virtuellen Maschine angepasst.
  • Sie können über die Zwischenablage Text zwischen Windows und Ubuntu austauschen. (Dazu muss außerdem der bidirektionale Modus der Zwischenablage aktiviert werden: im VM-Fenster mit Geräte / Gemeinsame Zwischenablage / Bidirektional.

  • Sie können über ein gemeinsames Verzeichnis Dateien zwischen Ubuntu und Windows austauschen (Konfiguration siehe unten).

Gemeinsames Verzeichnis zum Dateiaustausch einrichten

Um Dateien zwischen Ubuntu und Windows auszutauschen, richten Sie am besten ein gemeinsames Verzeichnis ein. Drei Schritte sind erforderlich:

  • Die VirtualBox-Gasterweiterungen sind erforderlich.
  • Im Menü des Fensters der virtuellen Maschine führen Sie Geräte / Gemeinsame Ordner / Gemeinsame Ordner aus und wählen ein Windows-Verzeichnis (es kann auch Ihr persönliches Verzeichnis sein). Aktivieren Sie die Optionen Automatisch einbinden und Permanent erzeugen.

  • Zuletzt müssen Sie in einem Terminal-Fenster in Ubuntu Ihren Account der vboxsf-Gruppe zuordnen:

sudo usermod -a -G vboxsf $USER

Damit das usermod-Kommando wirksam wird, müssen Sie die virtuelle Maschine neustarten. Sie finden das gemeinsame Verzeichnis danach direkt im Datei-Manager.

Gemeinsamen Ordner zum Dateiaustausch zwischen Windows und der virtuellen Maschine einrichten
Der gemeinsame Ordner wird im Dateimanager angezeigt. Wenn Sie darauf nicht zugreifen können, haben Sie »usermod« vergessen. Für Experten zeigt »findmnt« die Details des Mount-Verzeichnisses.

Netzwerkkonfiguration und SSH-Zugriff

Wenn ich auf Kommandoebene arbeite, bediene ich meine virtuellen Maschinen gerne über SSH. Unter Ubuntu muss dazu der SSH-Server installiert werden, was mit sudo apt install openssh-server rasch gelingt.

Das reicht aber noch nicht: VirtualBox gibt der virtuellen Maschine standardmäßig mittels Network Address Translation Zugriff auf die Netzwerkverbindung des Host-Computers. Die virtuelle Maschine ist aber im Netzwerk des Hosts unsichtbar, eine SSH-Verbindung ist unmöglich.

Es gibt zwei Auswege. Einer besteht darin, in den Netzwerkeinstellungen der virtuellen Maschine die Option Netzwerkbrücke zu aktivieren. Damit wird die virtuelle Maschine einfach zu einem Mitglied im lokalen Netzwerk. Zuhause funktioniert das gut (einfach ssh name@<ubuntu_hostname> ausführen), in öffentlichen WLANs dagegen leider nicht.

Die Alternative heißt Port-Weiterleitung. Dazu führen Sie im Fenster der virtuellen Maschine Geräte / Netzwerk / Netzwerk-Einstellungen aus, aktivieren das Tab Experte und klappen bei Adapter 1 den Bereich Erweitert aus und klicken auf Port-Weiterleitung. Nun richten Sie eine neue Regel ein, die Port 2222 des Hosts (127.0.0.1) mit Port 22 der virtuellen Maschine (10.0.2.15) verbindet.

Port-Weiterleitung zwischen Port 22 der virtuellen Maschine und Port 2222 des eigenen Rechners einrichten

Nachdem Sie die Einstellungen gespeichert haben (ein Neustart der virtuellen Maschine ist nicht notwendig), können Sie im Terminal von Windows mit dem folgenden Kommando eine SSH-Verbindung zur virtuelle Maschine herstellen:

ssh -p 2222 name@localhost

Wichtig ist dabei die Option -p 2222. ssh soll nicht wie üblich Port 22 verwenden, sondern eben Port 2222. Wichtig ist auch, dass Sie als Zieladresse localhost angeben. Aufgrund der Port-Weiterleitung landen Sie wunschgemäß in der virtuellen Maschine. Anstelle von name geben Sie Ihren Ubuntu-Account-Namen an.

Quellen/Links

Ubuntu 24.04 im Windows Subsystem for Linux (WSL)

26. September 2024 um 14:05

Vielleicht wollen oder können Sie Ubuntu nicht direkt auf Ihr Notebook oder Ihren PC installieren. Dennoch interessieren Sie sich für Linux oder brauchen eine Installation für Schule, Studium oder Software-Entwicklung. Diese Artikelserie fasst drei Wege zusammen, Ubuntu 24.04 virtuell zu nutzen:

  • Teil I (dieser Text): im Windows Subsystem for Linux (WSL)
  • Teil II: mit VirtualBox (Windows mit Intel/AMD)
  • Teil III: mit UTM (macOS ARM): mit UTM (macOS ARM)

Windows Subsystem für Linux

Mit WSL hat Microsoft einen Weg geschaffen, Linux im Textmodus unkompliziert unter Windows auszuführen. Diese Variante ist dann empfehlenswert, wenn Sie unter Windows typische Linux-Werkzeuge (die Shell bash, Kommandos wie find und grep usw.) nutzen möchten oder wenn Sie ohne Docker oder virtuelle Maschinen Server-Dienste wie Apache, nginx etc. ausprobieren möchten.

Als erstes müssen Sie sicherstellen, dass im Konfigurationsprogramm Windows-Features aktivieren oder deaktivieren die Optionen Hyper-V und Windows-Subsystem für Linux aktiviert sind. Alternativ können Sie WSL auch im Microsoft Store installieren.

WSL aktivieren

Im zweiten Schritt gehen Sie in den Microsoft Store und suchen nach Ubuntu 24.04. (Passen Sie auf, dass Sie keine alte Version verwenden, die vorher gereiht ist.) Ubuntu 24.04 ist kostenlos. Der Installationsumfang ist mit 350 MByte für eine Linux-Distribution relativ klein. Sobald Sie Öffnen anklicken, erscheint ein Terminal-Fenster. Nach ein paar Sekunden müssen Sie einen Benutzernamen und ein Passwort angeben. Dieses Passwort brauchen Sie später, um administrative Arbeiten zu erledigen (z.B. sudo apt install xxx).

Erster Start von Ubuntu 24.04 unter WSL

In Zukunft können Sie Ubuntu 24.04 im Startmenü oder in der Auswahlliste des Terminal-Programms starten. Als ersten Schritt in der neuen Shell-Umgebung sollten Sie ein Update durchführen (also die Kommandos sudo apt update und sudo apt full-upgrade).

Innerhalb von Ubuntu können Sie über den Pfad /mnt/c auf das Windows-Dateisystem zugreifen. Umgekehrt finden Sie das Linux-Dateisystem im Explorer unter dem Eintrag Linux.

Zugriff auf das Linux-Dateisystem im Explorer

WSL ist für den Betrieb von Linux im Textmodus optimiert. Seit 2021 besteht mit WSLg aber prinzipiell die Möglichkeit, einzelne Programme im Grafikmodus zu installieren und auszuführen:

sudo apt install gnome-text-editor
gnome-text-editor &

Meine Erfahrungen mit diesem Feature waren aber nicht überragend. Wenn Sie Ubuntu als Desktop-System im Grafikmodus nutzen möchten, verwenden Sie dazu besser VirtualBox oder ein anderes Virtualisierungssystem.

WSL1, wenn Windows in einer virtuellen Maschine läuft

Aus technischer Sicht gibt es zwei ganz unterschiedliche Varianten von WSL. Standardmäßig kommt WSL2 zum Einsatz. Dabei wird der Linux-Kernel durch das Virtualisierungssystem Hyper-V ausgeführt. In manchen Situationen steht Hyper-V aber nicht zur Verfügung — z.B. wenn Windows selbst in einer virtuellen Maschine läuft (unter Linux oder macOS). In solchen Fällen ist WSL1 ein attraktiver Ausweg. Bei WSL1 kümmert sich ein ganzes Framework von Funktionen um die Kompatibilität zwischen Windows und Linux. WSL1 ist der technisch kompliziertere Weg, weil (fast) alle Linux-Grundfunktionen ohne Virtualisierung nachgebildet wurden.

Um Ubuntu 24.04 unter WSL1 auszuführen, führen Sie die folgenden Kommandos im Terminal aus:

wsl.exe --set-default-version 1
wsl.exe --install -d Ubuntu-24.04

WSL1 hat im Vergleich zu WSL2 einige Nachteile: langsameres I/O, älterer Kernel, keine Grafikfunktionen. Für viele Aufgaben — etwas zum Erlernen grundlegender Linux-Kommandos oder zur bash-Programmierung — funktioniert WSL1 aber genauso gut wie WSL2.

Der aus meiner Sicht größte Nachteil von WSL1 besteht darin, dass systemd nicht funktioniert. Hintergrunddienste wie cron stehen nicht zur Verfügung und können gar nicht oder nur über komplizierte Umwege genutzt werden. Ein wichtiger Teil dessen, was ein komplettes Linux-System ausmacht, fehlt.

Hier läuft Windows für ARM im Virtualisierungssystem UTM unter macOS. In der virtuellen Maschine ist wiederum Ubuntu 24.04 (auch für ARM) per WSL1 installiert.

Quellen und Links

Neue Sprachen für Übersetzungsfunktion von Firefox

24. September 2024 um 19:58

Firefox besitzt eine Übersetzungsfunktion für Websites, welche im Gegensatz zu Cloud-Übersetzern wie Google Translate lokal arbeitet, die eingegebenen Texte also nicht an einen fremden Server sendet. Auch in diesem Monat wurde die Unterstützung von Sprachen erweitert.

Firefox wird seit Version 118 standardmäßig mit einer lokalen Funktion zur maschinellen Übersetzung von Websites für den Browser ausgeliefert. Das bedeutet, dass die Übersetzung vollständig im Browser geschieht und keine zu übersetzenden Inhalte an einen Datenriesen wie Google oder Microsoft übermittelt werden müssen.

Seit ich im vergangenen Monat zuletzt berichtet hatte, ist die Unterstützung weiterer Sprachen dazugekommen.

Komplett neu sowohl für finale als auch Nightly-Versionen von Firefox ist die Unterstützung sowohl aus dem Schwedischen als auch ins Schwedische, nach Finnisch sowie Türkisch. Neu in finalen Firefox-Versionen, zuvor aber bereits in Nightly-Versionen unterstützt, sind Übersetzungen aus dem Griechischen, Russischen sowie Slowenischen. Nightly-Versionen erhalten außerdem die Unterstützung von Übersetzungen ins Slowakische neu dazu.

Da die Sprachmodelle über die Remote-Einstellungen von Firefox bereitgestellt werden, ist die Unterstützung neuer Sprachen an kein Firefox-Update gebunden und funktioniert direkt in jedem Firefox mit aktivierter Übersetzungsfunktion.

Damit unterstützt die Übersetzungsfunktion Firefox bereits 28 Sprachen in mindestens eine Richtung. Für die Nightly-Version von Firefox sind es sogar schon 34 Sprachen. Mozilla arbeitet mit Hochdruck daran, dass noch viele weitere folgen werden.

Firefox Translations September 2024

Der Beitrag Neue Sprachen für Übersetzungsfunktion von Firefox erschien zuerst auf soeren-hentzschel.at.

Firefox 132: Tabs auf anderen Geräten schließen

23. September 2024 um 21:05

Mittels Synchronisation lassen sich Firefox-Daten wie Lesezeichen, Chronik, Tabs und Passwörter zwischen Geräten synchronisieren. Ab Firefox 132 wird es möglich sein, synchronisierte Tabs aus der Ferne zu schließen.

In Firefox lassen sich nicht nur Daten wie Lesezeichen, Chronik und Passwörter synchronsieren, man kann auch die gleichen Tabs öffnen, die auf anderen Geräten bereits geöffnet sind. Dies ist beispielsweise über die Sidebar für synchronisierte Tabs möglich.

Ab Firefox 132 wird es dort über das Kontextmenü der einzelnen synchronisierten Tabs möglich sein, die jeweiligen Tabs auf den anderen Geräten zu schließen. Diese Möglichkeit steht jedoch nur in der neuen Sidebar zur Verfügung, welche in Firefox 132 noch nicht standardmäßig aktiviert ist und über den Abschnitt „Firefox Labs“ in den Firefox-Einstellungen aktiviert werden kann.

Firefox 132: Synchronisierte Tabs schließen

Firefox 132 wird nach aktueller Planung am 29. Oktober 2024 erscheinen.

Der Beitrag Firefox 132: Tabs auf anderen Geräten schließen erschien zuerst auf soeren-hentzschel.at.

Neue Hoffnung für Unterstützung von Bildformat JPEG-XL (JXL) in Firefox und Chrome

22. September 2024 um 13:10

JPEG-XL ist ein Bildformat, welches anderen Bildformaten in vielen Aspekten – zumindest auf dem Papier – überlegen ist. Andere Browserhersteller als Apple waren bisher allerdings nicht von einer Unterstützung zu überzeugen. Dies könnte sich für Firefox und Chrome ändern.

Nightly-Versionen von Firefox bieten bereits seit Mai 2021 eine experimentelle Unterstützung für das Bildformat JPEG-XL, kurz: JXL, welche über about:config aktiviert werden kann, indem der Schalter image.jxl.enabled per Doppelklick auf true gesetzt wird. Auch wenn der Schalter in Beta- sowie finalen Firefox-Versionen ebenfalls zur Verfügung steht, ist eine Aktivierung auf diesen Kanälen nicht möglich. Google hat seine experimentelle Unterstützung für JPEG-XL im Februar 2023 wieder aus Chrome entfernt. Im Gegensatz dazu unterstützt Apple für macOS und iOS das Bildformat JPEG-XL seit Safari 17 im September 2023.

Große Unternehmen wie Meta, Adobe, Shopify und weitere sind große Unterstützer von JPEG-XL, da hiermit gegenüber aktuell unterstützten Bildformaten, einschließlich WebP und AVIF, weitere Reduzierungen der Dateigrößen bei gleichbleibender Qualität oder höhere Qualität ohne Erhöhung der Dateigrößen von Bildern möglich sind.

Anfang September 2024 hat Mozilla eine Aktualisierung seiner Position bezüglich JPEG-XL vorgenommen, welche Hoffnung auf eine Unterstützung auch in anderen Browsern als Safari machen darf.

Demnach liegt Mozillas größtes Bedenken im erhöhten Angriffsvektor, den der über 100.000 Zeilen schwere Multithreaded C++-Code des Referenz-Decoders mit sich bringt. Man habe in den letzten Monaten allerdings produktive Unterhaltungen mit dem JPEG-XL-Team von Google Research gehabt, welches sich bereit erklärt habe, sein Fachwissen einzusetzen, um einen sicheren, leistungsfähigen, kompakten und kompatiblen JXL-Decoder in Rust zu entwickeln und diesen Decoder in Firefox zu integrieren. Ein in Rust geschriebener Decoder würde das Risiko und damit auch Mozillas Bedenken erheblich reduzieren. Gelingt dies und erfüllt Mozillas Anforderungen, würde Mozilla diesen in Firefox ausliefern.

Hierin stecken nicht nur gute Nachrichten für Firefox-Nutzer, sondern auch für Nutzer von Google Chrome sowie sämtlichen anderen auf Chromium basierenden Browsern. Denn Google würde keinen JXL-Decoder entwickeln und zu Firefox beitragen, würden sie nicht selbst auch JPEG-XL unterstützen wollen.

Der Beitrag Neue Hoffnung für Unterstützung von Bildformat JPEG-XL (JXL) in Firefox und Chrome erschien zuerst auf soeren-hentzschel.at.

Pomodoro Timer für Ubuntu 24.04

21. September 2024 um 09:49

Um effektiv und ungestört Content für meinen Blog zu erstellen, nutze ich gerne die Pomodoro-Technik, die mir 25-minütige Zeitfenster bietet, um konzentriert zu arbeiten.

Nachdem ich jedoch auf meinem Notebook Ubuntu 24.04.1 LTS installiert hatte, begann für mich die Neuorientierung bezüglich entsprechender Software. Die meisten Anwendungen waren schnell gefunden und installiert. Einige Programme und Tools fehlten jedoch in der Version „Noble Numbat“ oder waren nicht lauffähig, worunter die Zufriedenheit am neuen System etwas litt. Ein wichtiges Tool wie Time ++, der Gnome Extensons, funktionierte konnte nicht mehr installiert werden. Nun habe ich festgestellt, dass das alte Projekt in Cronomix umbenannt wurde, welches sich ganz einfach über die Extensions installieren und aktivieren lässt.

Cronomix Pomodoro-Timer
Cronomix Pomodoro-Timer

Fazit

Ende gut, alles gut.

Tipp

Mit Cronomix lässt sich auch die Zeit erfassen, in der man an einem Projekt arbeitet.

Mozilla veröffentlicht Firefox 130.0.1

17. September 2024 um 18:19

Mozilla hat Firefox 130.0.1 veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox 130.0.1

Ein Fehler wurde behoben, der verursachte, dass AVIF-Bilder nur schwarz dargestellt worden sind, wenn Firefox mit GCC kompiliert worden ist. Dies betrifft Firefox unter Linux aus Paketverwaltungen, die nicht von Mozilla verwaltet werden. Der von Mozilla kompilierte Firefox war von diesem Fehler nicht betroffen.

Ein sogenannter Deadlock wurde behoben, der bei Ausführung des Firefox-Profilers aufgetreten ist, wenn eine aktuelle Windows 11 Insider Preview genutzt worden ist. Stabile Windows-Versionen waren von diesem Problem nicht betroffen, hätten es aber potenziell in der Zukunft sein können.

Firefox in der Saraiki-Sprache hat Texte mancher Oberflächen-Elemente fälschlicherweise von links nach rechts statt von rechts nach links geschrieben.

Die UserMessaging-Unternehmensrichtlinie kann jetzt auch zur Deaktivierung von „Firefox Labs“ genutzt werden, einem neuen Abschnitt in den Firefox-Einstellungen seit Firefox 130, um zukünftige Features vorab aktivieren zu können.

Den Buttons im Dialog zur Personalisierung der Pocket-Empfehlungen auf der Firefox-Startseite konnte direkt nach dem Browserstart das Styling fehlen. Hierbei handelt es sich um ein neues Feature von Firefox 130, welches derzeit schrittweise in den USA und Kanada ausgerollt wird.

Dazu kommt noch eine Hand voll Änderungen in Zusammenhang mit der KI-Generierung von Alternativtexten für Bilder in PDF-Dateien, einem weiteren neuen Feature von Firefox 130, welches derzeit schrittweise ausgerollt wird.

Der Beitrag Mozilla veröffentlicht Firefox 130.0.1 erschien zuerst auf soeren-hentzschel.at.

Nextcloud auf dem RasPi – Teil 5

17. September 2024 um 04:00

Im vorherigen Artikel habe ich beschrieben, wie man den Raspberry Pi und den Router konfiguriert, um auf die Nextcloud aus dem Internet zuzugreifen. Da die Verbindung derzeit unverschlüsselt ist, werde ich nun erläutern, wie man eine SSL-Verschlüsselung implementieren und erzwingen kann.

Installation

Zu Beginn installieren wir Certbot, um ein Let’s-Encrypt-Zertifikat zu erstellen.

sudo apt install python3-certbot-apache -y

Der Vorgang wird wie folgt gestartet. Dabei ist es wichtig, die korrekte DynDNS-Adresse (dnsHome.de) anzugeben. Zudem muss eine eMail-Adresse hinterlegt werden.

sudo certbot --apache

Nachdem das Zertifikat ausgestellt wurde, folgt die Konfiguration des VirtualHost. Diesen erstellt man mit dem folgenden Befehl und fügt den unten aufgeführten Block in die Datei /etc/apache2/sites-available/raspi.conf ein.

Dabei müssen die Pfade für das Zertifikat und der Servername an die eigene DynDNS angepasst werden.

sudo nano /etc/apache2/sites-available/raspi.conf
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/nextcloud
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/nextcloud
#        Header always set Strict-Transport-Security "max-age=31536000"
#        Header append X-FRAME-OPTIONS "SAMEORIGIN"
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/meinecloud.dnshome.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/meinecloud.dnshome.de/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ServerName meinecloud.dnshome.de
</VirtualHost>
</IfModule>

Nun werden die nicht mehr benötigten Vorgaben der VirtualHosts deaktiviert, der neue VirtualHost aktiviert und das SSL-Modul des Apache2 eingeschaltet.

sudo a2dissite 000-default.conf
sudo a2dissite 000-default-le-ssl.conf
sudo a2ensite raspi.conf
sudo a2enmod ssl

Danach wird der Webserver neu gestartet.

sudo service apache2 restart

HTTPS erzwingen

Um Verbindungen über HTTPS zu erzwingen, muss das Apache2-Modul „rewrite“ aktiviert werden.

sudo a2enmod rewrite

Danach öffnen wir den VirtualHost erneut

sudo nano /etc/apache2/sites-available/raspi.conf

und fügen die folgenden drei Rewrite-Zeilen hinzu.

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
...

Anschließend wird der Webserver erneut neu gestartet.

sudo service apache2 restart

Regelmäßige Erneuerung des SSL-Zertifikats

Ein Let’s Encrypt-Zertifikat sollte monatlich erneuert werden, um sicherzustellen, dass die verschlüsselte Kommunikation auf Ihrer Website
kontinuierlich geschützt ist. Die regelmäßige Erneuerung gewährleistet, dass das Zertifikat gültig bleibt und Ihre Websitebesucher vor potenziellen Sicherheitsrisiken wie Man-in-the-Middle-Angriffen geschützt werden.

Dafür navigieren wir zum Home-Verzeichnis

cd ~/

und erstellen die Datei zertifikat.sh.

nano zertifikat.sh

Dort wird der folgende Inhalt eingetragen.

#!/bin/bash
certbot certonly --renew-by-default --apache --rsa-key-size 4096 -d meinecloud.dnshome.de
/etc/init.d/apache2 restart

Auch hier ist der Servername an die eigene DynDNS anzupassen.

Nun wird das erstellte Skript ausführbar gemacht

sudo chmod +x zertifikat.sh

und ein Cronjob erstellt,

sudo nano /etc/crontab

der das Script jeweils am 1. jeden Monats um 2:30 Uhr ausführt. Dabei ist folgende Zeile am Ende hinzuzufügen

30 2 1 * *      root    /home/radiouser/zertifikat.sh >/home/radiouser/zertifikat.log 2>&1

und der Cronjob neu zu starten.

sudo /etc/init.d/cron restart

Vorschau

Im nächsten Teil zeige ich, wie man die aufgelaufenen Fehler nach der Erstinstallation der Nextcloud beheben kann.

Überprüfung des Hashwertes

15. September 2024 um 08:00

Möchte man den Hashwert eines Ubuntu-Images mit Hilfe der Prüfsumme überprüfen, geht man wie folgt vor.

Zuerst wird das Ubuntu-Image und die dazugehörige SHA256SUMS-Datei herunter geladen. Beide Dateien sollten sich im gleichen Verzeichnis befinden.

Ubuntu Release Server
Ubuntu Release Server
Ubuntu Release Server (Ubuntu 24.04.1 LTS)
Ubuntu Release Server (Ubuntu 24.04.1 LTS)

Prüfsummencheck

Danach führt man folgenden Befehl in diesem Verzeichnis aus, um die Prüfziffern zu checken.

sha256sum -c SHA256SUMS 2>&1 | grep OK
Intergritätsprüfung des Hashwertes am Terminal
Intergritätsprüfung am Terminal

Wenn alles in Ordnung ist wird dies mit „OK“ bestätigt.

Wozu das Ganze?

Diese Art von Integritätsprüfung stellt sicher, dass das ISO-Image korrekt heruntergeladen wurde und dass die lokale Datei eine genaue Kopie der auf den Download-Servern gespeicherten Datei ist. Ein Fehler beim Download könnte zu einer beschädigten Datei führen, die bei der Installation unerwartete Probleme verursachen kann.

Weitere Beispiele

Das Ganze lässt sich natürlich auch auf andere Betriebssystem-Images anwenden.

Intergritätsprüfung des Hashwertes am Terminal (Beispiel: Raspberry Pi OS)
Intergritätsprüfung am Terminal (Beispiel: Raspberry Pi OS)
Intergritätsprüfung des Hashwertes am Terminal (Beispiel: Linux Mint 22)
Intergritätsprüfung am Terminal (Beispiel: Linux Mint 22)

Nextcloud auf dem RasPi – Teil 4

13. September 2024 um 04:00

Um die auf dem Raspberry Pi installierte Nextcloud nun von außen über das Internet zu erreichen, ist es nötig, eine Webadresse über die öffentliche IP-Adresse mit der, wie im Artikel „Nextcloud auf dem RasPi – Teil 3“ beschriebenen, internen festen IP-Adresse des Raspberry Pi zu verknüpfen. Hierbei greife ich auf einen DynDNS-Dienst zurück. Ich zeige im folgenden Beitrag die Vorgehensweise mit einem bestehenden Account von dnsHome.de.

Das alles realisiert man über ein sogenanntes Portforwarding (Portfreigabe). Hierzu weist man den Router an, Anfragen über alle benötigten Ports zur internen IP des Raspberry Pi durchzustellen. In meinem Fall sind das die Ports 443, 80, 5900, 5349 und 43434. Wie man das Ganze umsetzt, zeigt der Screenshot meiner FRITZ!Box. Diese Einstellungen sind die Grundvoraussetzungen für die Erreichbarkeit der Nextcloud aus dem Internet.

Ports

  • Port 443 – HTTPS
  • Port 80 – HTTP
  • Port 5900 – VNC (optional)
  • Port 5349 – Turn-Server (optional)
  • Port 43434 – SSH (optionales Beispiel)

Portfreigabe

Portfreigabe in der FRITZ!Box
Portfreigabe in der FRITZ!Box

Ermittlung der öffentlichen IP-Adresse

Über den Befehl

curl ifconfig.me

erhält man die öffentliche IP-Adresse, über die der Raspberry Pi nun aus dem Internet erreichbar ist. Ein anschließender Test sollte ungefähr so aussehen.

Erreichbarkeit über öffentliche IP-Adresse
Erreichbarkeit über öffentliche IP-Adresse

Nun wäre es einfach, diese IP-Adresse mit einer Domain zu verknüpfen. Die wenigsten Nutzer verfügen jedoch über eine feste öffentliche IP-Adresse. Aus diesem Grund greift man hier auf einen DynDNS-Anbieter zurück, da sich aufgrund von Zwangstrennungen durch den Provider die öffentliche IP-Adresse bis zu einmal am Tag ändern kann.

Damit ein DynDNS-Anbieter eine Webadresse dauerhaft mit dem Router verknüpfen kann, muss dieser regelmäßig Informationen über die aktuelle öffentliche IP-Adresse erhalten. Dies kann über eine FRITZ!Box realisiert werden oder durch die Verwendung des ddclient, der auf dem Raspberry Pi installiert wird und so den Kontakt zum DynDNS-Anbieter aufrechterhält. Bei einer Änderung der IP wird diese wieder der DynDNS-Adresse zugewiesen.

Als DynDNS-Anbieter empfehle ich den Dienst dnsHome.de (ein Account ist vorher einzurichten).

Installation ddclient

Zuerst wird ddclient auf dem Raspberry Pi installiert.

sudo apt install ddclient -y

Während der Installation möchte der Client einen DynDNS-Anbieter einrichten. Da dnsHome.de dem ddclient nicht bekannt ist, empfehle ich die Einrichtung einfach durchzuklicken. Im Anschluss öffnet man die Konfigurationsdatei von ddclient

sudo nano /etc/ddclient.conf

und ersetzt den gesamten Inhalt mit folgendem Inhalt.

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
protocol=dyndns2
ssl=yes
daemon=3600
use=web, web=ip.dnshome.de
server=www.dnshome.de
login=meinecloud.dnshome.de
password=geheim
datenboxx.dnshome.de

Bei „login“ und „password“ sollten natürlich die eigenen Zugangsdaten eingetragen werden, die zuvor bei dnsHome.de vergeben wurden.

Start ddclient

Sobald alles konfiguriert ist, kann der Client gestartet werden.

sudo ddclient start

Um sicherzustellen, dass die Nextcloud einen Login-Bildschirm über die DynDNS-Adresse bereitstellt, ist folgender Eintrag in der Datei /var/www/html/nextcloud/config/config.php erforderlich.

sudo nano /var/www/html/nextcloud/config/config.php

Die DynDNS-Adresse muss nun als vertrauenswürdige Domain eingetragen werden.

'trusted_domains' => 
  array (
    0 => '192.168.88.159',
    1 => 'meinecloud.dnshome.de',

Sobald dies erledigt ist, kann die Nextcloud im Browser über http://meinecloud.dnshome.de erreicht werden.

Vorschau

Im nächsten Teil zeige ich, wie man ein SSL-Zertifikat erstellt und dauerhaft eine verschlüsselte Verbindung zur Nextcloud sicherstellt.

Mozilla veröffentlicht Firefox 130 für Android

11. September 2024 um 19:08

Mozilla hat Firefox 130 für Android veröffentlicht. Dieser Artikel beschreibt die Neuerungen von Firefox 130 für Android.

Download Firefox für Android im Google Play Store

Lokale Übersetzungsfunktion für alle Nutzer

Firefox für Windows, Apple macOS und Linux wird bereits seit Version 118 mit einer lokalen Funktion zur maschinellen Übersetzung von Websites für den Browser ausgeliefert. Das bedeutet, dass die Übersetzung vollständig im Browser geschieht und keine zu übersetzenden Inhalte an einen Datenriesen wie Google oder Microsoft übermittelt werden müssen. Seit Firefox 127 wurde diese Funktion schrittweise auch auf Android ausgerollt. Mit Firefox 130 ist die Übersetzungsfunktion für alle Nutzer von Firefox für Android aktiviert.

Firefox 130 für Android

Sicheres Passwort generieren

Firefox 130 für Android bringt einen Passwort-Generator, der dabei hilft, sichere Passwörter zu erstellen, wenn man sich auf einer Website beispielsweise ein neues Benutzerkonto registriert.

Firefox 130 für Android

URLs von Verknüpfungen auf Startbildschirm bearbeiten

Bislang war es bereits möglich, Verknüpfungen auf dem Startbildschirm von Firefox umzubenennen. Jetzt ist es auch möglich, die URL zu bearbeiten.

Firefox 130 für Android

Performance-Verbesserungen

Firefox für Android kann jetzt mehr Ressourcen gleichzeitig herunterladen, was die Ladegeschwindigkeit von Websites verbessert.

Eine weitere Performance-Verbesserung resultiert daraus, dass Firefox nicht mehr automatisch auf Software-WebRender zurückfällt, wenn der GPU-Prozess zu häufig unerwartet beendet wurde, ohne dass der Hauptprozess beendet wurde, was durch das Ressourcen-Management von Android relativ häufig passieren kann.

Sonstige Neuerungen von Firefox 130 für Android

In den Einstellungen für den Schutz vor Aktivitätenverfolgung gibt es in der benutzerdefinierten Konfiguration jetzt auch eine Option für das Blockieren vermuteter Fingerprinter, wahlweise nur in privaten Tabs oder immer.

Dazu kommen wie immer neue Plattform-Features der aktuellen GeckoView-Engine, diverse Fehlerbehebungen, geschlossene Sicherheitslücken sowie Verbesserungen unter der Haube.

Der Beitrag Mozilla veröffentlicht Firefox 130 für Android erschien zuerst auf soeren-hentzschel.at.

Nextcloud auf dem RasPi – Teil 3

11. September 2024 um 04:00

Das Zuweisen einer statischen IP-Adresse an einen Raspberry Pi ist sinnvoll, um sicherzustellen, dass das Gerät immer unter derselben Adresse im Netzwerk erreichbar ist. Dies ist besonders nützlich für bestimmte Anwendungen wie z.B. Nextcloud, für die eine konstante IP-Adresse wichtig ist.

Festlegen einer statischen internen IP-Adresse

Eine statische lokale IP setzt man wie folgt. Zuerst installiert man dhcpcd.

sudo apt install dhcpcd -y

und trägt dann folgenden Block mit

sudo nano /etc/dhcpcd.conf

am Ende der /etc/dhcpcd.conf ein. Hierbei habe ich mich für die interne IP 192.168.178.136. Dies ist natürlich abhängig vom Adressbereich des eigenen Netzwerks. Auch die IP des Routers ist entsprechend anzupassen.

profile static_eth0
static ip_address=192.168.178.23/24
static routers=192.168.178.1
static domain_name_servers=192.168.178.1

Zum Schluss wird der Dienst dhcpcd neu gestartet.

sudo service dhcpcd restart

Vorschau

Im nächsten Teil zeige ich, was nötig ist, die Nextcloud über das Internet erreichbar zu machen.

GPIO-Ärger auf dem Raspberry Pi 5

10. September 2024 um 14:11

(Aktualisiert 13.9.2024) Mit der Auslieferung des Raspberry Pi 5 im Herbst 2024 hat sich bei einigen Low-Level-Tools der GPIO-Zugriff geändert: Für die Modelle bis einschließlich Raspberry Pi 4 erfolgt der GPIO-Zugriff über chip0 bzw. /dev/gpiochip0. Beim Raspberry Pi musste dagegen chip4 bzw. /dev/gpiochip4 verwendet werden. Scripts, die universell auf alten und neuen Geräten laufen sollten, brauchten eine entsprechende Fallunterscheidung.

Mit Kernel 6.6.47, der mittlerweile standardmäßig als Update unter Raspberry Pi OS installiert wird, ändert sich wieder alles! Auch beim Raspberry Pi 5 muss nun /dev/gpiochip0 verwendet werden. Eine Referenz aller internen GPIO-Nummern gibt cat /sys/kernel/debug/gpio.

Die Änderung betrifft unter anderem:

  • Python: gpiozero, lgpio, gpiod
  • Bash: gpioset, gpioget
  • C: lgpio, libgpiod, wiringpi

Scripts, die mit diesen Modulen bzw. Bibliotheken verfasst wurden, müssen geändert werden (Umstellung von GPIO-Chip 4 auf GPIO-Chip 0). Im Folgenden habe ich diesbezüglich Anleitungen für diverse Fälle zusammengefasst.

13.9.2024: Mit dem neuesten Update von Raspberry Pi OS wird ein Link von /dev/gpiochip4 auf /dev/gpiochip0 eingerichtet, wodurch die Auswirkungen des veränderten Kernels in den meisten Fällen nicht mehr spürbar sind.

ls -l /dev/gpiochip*

crw-rw---- 1 root gpio 254,  0 13. Sep 08:39 /dev/gpiochip0
crw-rw---- 1 root gpio 254, 10 13. Sep 08:39 /dev/gpiochip10
crw-rw---- 1 root gpio 254, 11 13. Sep 08:39 /dev/gpiochip11
crw-rw---- 1 root gpio 254, 12 13. Sep 08:39 /dev/gpiochip12
crw-rw---- 1 root gpio 254, 13 13. Sep 08:39 /dev/gpiochip13
lrwxrwxrwx 1 root root       9 13. Sep 08:39 /dev/gpiochip4 -> gpiochip0

Von gpiozero gibt es mittlerweile eine aktualisierte Version, die das richtige Chip-Device erkennt.

Python-Scripts mit gpiozero

Beim Start derartiger Scripts auf dem Raspberry Pi 5 mit dem aktuellen Kernel (>= 6.6.47) tritt die Fehlermeldung can not open gpiochip auf. Das Script bricht ab. Der Fehler ist bekannt, es wird demnächst eine neue Version des Python-Modules geben. Bis dahin ist es am einfachsten, das Script wie folgt zu starten:

RPI_LGPIO_CHIP=0 ./gpiozero-led.py

Alternativ führen Sie export RPI_LGPIO_CHIP=0 aus und fügen diese Anweisung auch in /home/your-account/.bashrc ein. Eine weitere Möglichkeit ohne die externe Definition von Umgebungsvariablen besteht darin, am Beginn Ihres Python-Scripts die folgende Zeile einzubauen:

import os 
os.environ['RPI_LGPIO_CHIP']='0'

Im gpiozero-Issue ist auch von PWM-Problemen zu lesen, die sich selbst mit RPI_LGPIO_CHIP=0 nicht lösen lassen. Das kann ich nicht bestätigen. Mein PWM-Test-Script gibt zwar eine Warnung aus, funktioniert aber.

Python-Scripts mit lgpio

Wenn Sie in Ihrem Python-Script das lgpio-Modul verwenden, müssen Sie den Handle nun IMMER mit gpiochip_open(0) öffnen, also:

# alle Raspberry-Pi-Modelle mit aktuellen Kernel >= 6.6.45
handle = lgpio.gpiochip_open(0)

# Raspberry Pi 5 mit Kernel < 6.6.45
# handle = lgpio.gpiochip_open(4)

Python-Scripts mit gpiod

Wenn Sie in Ihrem Python-Script das gpiod-Modul verwenden, müssen Sie die Initialisierung nun IMMER mit 'gpiochip0' durchführen, also:

chip = gpiod.Chip('gpiochip0')     # alle Modelle mit Kernel >= 6.6.45
# chip = gpiod.Chip('gpiochip4')   # Raspberry Pi 5 mit Kernel < 6.6.45

pinout-Kommando

Auch das Kommando pinout liefert zur Zeit Fehlermeldungen (can’t connect to pigpio at localhost sowie Unable to initialize GPIO Zero). Hinter den Kulissen handelt es sich bei dem Kommando um ein Python-Script, das gpiozero verwendet. Bis dieses Modul aktualisiert wird, hilft der oben schon erwähnte Trick mit RPI_LGPIO_CHIP=0 weiter, also:

RPI_LGPIO_CHIP=0 pinout

bash-Scripts mit gpioset, gpioget und gpiomon

Bei den genannten Kommandos übergeben Sie als ersten Parameter die Chip-Nummer. Ab Kernel 6.6.45 lautet diese IMMER 0, also z.B.:

chip=0
gpioset $chip 7=1   # GPIO 7 (Pin 26) auf "high" stellen
gpioset $chip 7=0   # GPIO 7 (Pin 26) auf "low" stellen

bash-Scripts mit pinctrl

Hier ändert sich nichts. pinctrl war schon in der Vergangenheit in der Lage, die richtige Chip-Nummer selbst zu erkennen, und das funktioniert weiterhin. Großartig!

pinctrl set 7 op dh   # LED an Pin 26 ein
pinctrl set 7 op dl   # LED an Pin 26 aus

C-Programme mit lgpio

Ab Kernel 6.6.45 müssen Sie IMMER die Chip-Nummer 0 verwenden, also:

#define CHIP 0
...
h = lgGpiochipOpen(CHIP);  // open connection to I/O chip

C-Programme mit gpiod

Ab Kernel 6.6.45 müssen Sie IMMER "gpiochip0" verwenden, also:

char *chipname = "gpiochip0";
chip = gpiod_chip_open_by_name(chipname);
...

wiringpi

Die von Gordon Drogon entwickelte wiringpi-Bibliothek ist seit vielen Jahren veraltet (gilt bis Version 2.5).

2024 hat der Grazer Computer Club die Wartung der Bibliothek übernommen. Damit ist diese Bibliothek (jetzt in Version 3.0) wieder verwendbar! Weitere Informationen sowie Installationshinweise gibt es auf der GitHub-Projektseite:

https://github.com/WiringPi/WiringPi

Persönliche Anmerkung

Diese ganze Angelegenheit ist ein einziges Trauerspiel. Dass beim Raspberry Pi 5 anfänglich /dev/gpiochip4 als interne GPIO-Schnittstelle verwendet wurde (und nicht von Anfang an /dev/gpiochip0 wie bei früheren Raspberry-Pi-Modellen), war schon eine äußerst fragwürdige Entscheidung. Aber die Schnittstelle jetzt, fast ein Jahr nach dem Release des Raspberry Pi 5 und Raspberry Pi OS Bookworm, zu ändern, ist einfach irrsinnig.

Mit dem Kernel-Update funktionieren unzählige GPIO-Scripts von einen Tag auf den anderen nicht mehr. So etwas muss von vorne herein vermieden werden, und, wenn es denn gar nicht anders geht, viel viel besser kommuniziert werden. Die Maintainer der GPIO-Bibliotheken waren offenbar allesamt überrascht von der Änderung. Unprofessioneller geht’s nicht.

Hintergründe / Links

Dieser Blog-Beitrag ist ursprünglich unter https://pi-buch.info/low-level-gpio-zugriff-geaendert-mit-kernel-6-6/ erschienen. Danke an Hr. Strohmayer, der mich als erster auf dieses Problem aufmerksam gemacht hat.

Nextcloud auf dem RasPi – Teil 2

09. September 2024 um 16:00

Um später alle Vorzüge, wie Nextcloud Office, von Nextcloud Hub nutzen zu können, empfehle ich den Document Server Collabora Online – Built-in CODE Server (ARM64) auf dem Raspberry Pi via Terminal beizeiten zu installieren, da es über die grafische Oberfläche i.d.R. zu einem Timeout kommt. Wie das Ganze funktioniert erläutere ich in diesem Artikel.

Nextcloud Office

Nextcloud Office ist eine in Nextcloud integrierte Office-Lösung, die es ermöglicht, Dokumente, Tabellen und Präsentationen direkt im Browser zu erstellen und gemeinsam zu bearbeiten. Basierend auf Open-Source-Technologien wie Collabora Online unterstützt es gängige Dateiformate wie DOCX und ODT. Die Echtzeit-Zusammenarbeit und vollständige Integration in die Nextcloud-Plattform ermöglicht eine sichere und effiziente Teamarbeit, bei der alle Daten unter eigener Kontrolle bleiben. Ideal für Unternehmen, die Wert auf Datenschutz und Datensouveränität legen.

Installation

cd /var/www/html/nextcloud
sudo -u www-data php -d memory_limit=512M ./occ app:install richdocumentscode_arm64

Aktivierung

Abschließend wird die Nextcloud Office-App in den Nextcloud Hub-Paketen für die spätere Nutzung
aktiviert.

Anmerkung

Dies funktioniert nur auf 64-Bit-Systemen!

Vorschau

Im nächsten Teil zeige ich, wie man dem Raspberry PI eine feste interne IP-Adresse im heimischen Netzwerk zuweist.

WordPress 6 Schnelleinstieg

09. September 2024 um 04:00

Das Buch „WordPress 6 Schnelleinstieg“ von Vladimir Simovic und Thordis Bonfranchi-Simovic ist in der 1. Auflage 2023 im mitp-Verlag erschienen. Es trägt den Untertitel „Blogs und Webseiten erstellen – Einfach und ohne Vorkenntnisse“. Das Buch hat insgesamt 272 Seiten und richtet sich an Einsteiger, aber auch fortgeschrittene Nutzer des Content-Management-Systems WordPress.

Das Buch „WordPress 6 Schnelleinstieg“ vom MITP-Verlag bietet einen umfassenden Leitfaden für alle, die sich schnell und effektiv mit dem Bloggen und der Webseitengestaltung mit WordPress vertraut machen möchten. Die Autoren geben mit detaillierten Anleitungen und praktischen Tipps einen strukturierten Überblick über die wichtigsten Funktionen und Möglichkeiten des beliebten Content-Management-Systems.

Dieses Buch ist sachlich verfasst und vermittelt dank der Fachkenntnisse der beiden Autoren dem Leser enorm viel Wissen. Durch die klare Strukturierung kann die erste Webseite in kürzester Zeit umgesetzt werden. Es wird detailliert erklärt, wie WordPress installiert wird, wie das Dateisystem und die Datenbank aufgebaut sind. Der Nutzer wird ausreichend in diese Thematik eingearbeitet. Backups spielen hierbei eine zentrale Rolle, auf die die Autoren ausführlich eingehen. Im Buch erfährt man, welche Nutzerberechtigungen in WordPress vergeben werden können und wie das System gewartet und aktualisiert wird.

Besonders erwähnenswert ist das Kapitel „Design anpassen“, in dem sich die Autoren mit dem Full Site Editing auseinandersetzen. Dabei werden anhand des Themes „Twenty
Twenty-Twon“ die Gestaltungsmöglichkeiten mit dem Blockeditor Gutenberg erläutert. Dies ermöglicht nahezu unbegrenzte Anpassungsmöglichkeiten bei der Erstellung oder Bearbeitung eines
Webprojekts.

Am Ende des Buches wird es vom Inhalt etwas technischer, jedoch nicht weniger interessant. Möglichkeiten durch den Eingriff in den Programmcode lassen noch mehr Spielraum zu. Auch die Erstellung von Child-Themes wird ausführlich erklärt, damit Änderungen im Code problemlos ein Upgrade des Themes überstehen können.

Ein weiterer bedeutender Fokus der Autoren liegt auf der Suchmaschinenoptimierung (SEO). Dabei spielt die Qualität des Inhalts, die korrekte Verwendung von Überschriften und die Bereitstellung von ausreichenden Metadaten z.B. für Bilder eine entscheidende Rolle. Diese Maßnahmen sind nicht nur für die Zugänglichkeit der Website von Vorteil, sondern auch für ein verbessertes Ranking in Suchmaschinen und sorgen für optimale Suchergebnisse im Internet.

Das Buch gliedert sich in folgende Kapitel:

  • WordPress installieren und grundlegende Einstellungen
  • WordPress anpassen
  • Seiten und Beiträge verfassen und bearbeiten
  • Design anpassen
  • Funktionalität erweitern mit Plugins
  • Tipps für Fortgeschrittene

Leseproben und Downloads

Inhaltsverzeichnis und Leseprobe

Fazit

Das Buch „WordPress 6 Schnelleinstieg“ ist sowohl für Anfänger als auch Fortgeschrittene eine nützliche Informationsquelle. Ich empfehle dieses kompakte Handbuch jedem, der daran interessiert ist, seine erste Website mit WordPress zu erstellen. Daher rate ich definitiv zum Kauf dieses Buches!

Es sollte auch darauf hingewiesen werden, dass zu dem gedruckten Exemplar ein eBook zum Download zur Verfügung steht.

Firefox: Unterstützung für veraltete Betriebssysteme bis März 2025 verlängert

08. September 2024 um 05:51

Mozilla hat die Unterstützung von Firefox für die veralteten Betriebssysteme Windows 7, Windows 8, macOS 10.12, macOS 10.13 sowie macOS 10.14 offiziell bis März 2025 verlängert.

Bereits im Juli hatte ich darüber berichtet, dass Mozilla die Unterstützung veralteter Betriebssysteme verlängern wird. Dies schließt die Betriebssysteme Windows 7, Windows 8, macOS 10.12, macOS 10.13 sowie macOS 10.14 ein. Entsprechende Nutzer wurden im Juni 2023 mit Erscheinen von Firefox 115 auf Firefox ESR 115 (Firefox ESR ist die Firefox-Version mit Langzeitunterstützung) migriert, da Firefox 116 und höher diese Betriebssysteme nicht mehr unterstützt. Mit Firefox 115.15 erschien vergangenen Dienstag die bis dahin offiziell letzte Version von Firefox ESR 115.

Während Nutzer von Firefox ESR 115 auf einem aktuellen Betriebssystem wie geplant ab dem 1. Oktober 2024 das Update auf Firefox ESR 128.3 erhalten werden, gibt es für Nutzer veralteter Betriebssysteme eine Verlängerung der Lebenszeit von Firefox ESR 115. Genauer gesagt wird Mozilla diese Nutzer noch bis zum 4. März 2025 und dem Erscheinen von Firefox ESR 115.21 mit Updates versorgen.

Basierend auf der weiteren Entwicklung der Nutzerzahlen ist eine erneute Verlängerung nach Ablauf der sechs Monate nicht ausgeschlossen. Nach aktuellem Stand nutzen noch 10,5 Prozent der Firefox-Nutzer Windows 7 oder Windows 8. Vor einem Jahr lag diese Zahl noch bei 13,7 Prozent, vor zwei Jahren bei 19,1 Prozent. Microsoft selbst hatte die Unterstützung bereits im Januar 2020 eingestellt. Firefox-Konkurrent Google Chrome bietet seit Februar 2023 keine Unterstützung mehr an.

Der Beitrag Firefox: Unterstützung für veraltete Betriebssysteme bis März 2025 verlängert erschien zuerst auf soeren-hentzschel.at.

Firefox: Enterprise Policy Generator 6.1 veröffentlicht

07. September 2024 um 20:14

Der Enterprise Policy Generator richtet sich an Administratoren von Unternehmen und Organisationen, welche Firefox konfigurieren wollen. Mit dem Enterprise Policy Generator 6.1 ist nun ein Update erschienen.

Enterprise Policy Generator

Download Enterprise Policy Generator für Firefox

Die Enterprise Policy Engine erlaubt es Administratoren, Firefox über eine Konfigurationsdatei zu konfigurieren. Der Vorteil dieser Konfigurationsdatei gegenüber Group Policy Objects (GPO) ist, dass diese Methode nicht nur auf Windows, sondern plattformübergreifend auf Windows, Apple macOS sowie Linux funktioniert.

Der Enterprise Policy Generator hilft bei der Zusammenstellung der sogenannten Enterprise Policies, sodass kein tiefergehendes Studium der Dokumentation und aller möglichen Optionen notwendig ist und sich Administratoren die gewünschten Enterprise Policies einfach zusammenklicken können.

Neuerungen vom Enterprise Policy Generator 6.1

Technische Verbesserungen der Erweiterung

Der Enterprise Policy Generator verfolgt einen selbst generierenden Ansatz, bei dem sich der Aufbau der Oberfläche, das Generieren der Datei policies.json, das Speichern und Laden sowie das Exportieren und Importieren von Konfigurationen vollständig automatisiert aus einer einzelnen internen Konfigurationsdatei ableitet. Zur Unterstützung neuer Unternehmensrichtlinien, welche sich bisher nicht abbilden ließen, wurde die Unterstützung für mehrere zusätzliche Richtlinien-Typen ergänzt.

Für URL-Felder wurde die Option hinzugefügt, eine sichere Verbindung (https://) zu erfordern, außerdem können Infolinks jetzt an weiteren Stellen ergänzt werden. Für Felder mit mehreren möglichen Werten, die per Plus-Symbol hinzugefügt werden können, ist es nun möglich, auch den letzten Wert wieder zu entfernen.

Neue und erweiterte Unternehmensrichtlinien

Neu ist die Unterstützung für die ManagedBookmarks-Richtlinie, um Lesezeichen zu konfigurieren, welche im Gegensatz zur bereits bestehenden Bookmarks-Richtlinie vom Benutzer weder verändert noch gelöscht werden können. Die Unterstützung für Lesezeichen-Ordner folgt mit einem zukünftigen Update.

Ebenfalls neu ist die Unterstützung für die AllowedDomainsForApps-Richtlinie, um Domains festzulegen, welche auf Google Workspace zugreifen dürfen, sowie für die AutoLaunchProtocolsFromOrigins-Richtlinie, um eine Liste externer Protokolle festzulegen, die von aufgelisteten Quellen aus verwendet werden können, ohne dass der Benutzer dazu aufgefordert wird.

Die OverrideFirstRunPage-Richtlinie wurde aktualisiert, um mehrere URLs zu erlauben. Bestehende Konfigurationen wurden automatisch auf die neue Version migriert.

Die Beschreibung der install_sources-Eigenschaft der ExtensionSettings-Richtlinie wurde überarbeitet und ein Infolink ergänzt, um klar zu machen, dass sogenannte Match Patterns in URLs erlaubt sind.

Optionen, welche noch den alten Weg nutzten, Einstellungen für about:config zu verändern, verwenden jetzt die neue Syntax der Preferences-Richtlinie, sodass hier keine Mischung aus alter und neuer Richtlinie mehr stattfindet.

Fehlerbehebungen

Ein großer Schwerpunkt lag auf der Behebung von Problemen in Zusammenhang mit der Handlers-Richtlinie, insbesondere dann, wenn diese in einer Konfiguration gespeichert und dann wieder aus der Konfiguration heraus geladen worden ist.

Außerdem war es bei der Preferences-Richtlinie trotz Validierung möglich, Optionen mit nicht erlaubtem Optionsnamen in einer Konfiguration zu speichern. Wurde eine solche Konfiguration dann geladen, wurde der ungültige Optionsname nicht beanstandet, obwohl Firefox die entsprechende Option nicht unterstützt.

Ausblick

Damit ist die Unterstützung aller Unternehmensrichtlinien bis einschließlich Firefox 78 komplett. Einzige Ausnahme ist die Ordner-Unterstützung für die MangedBookmarks-Richtlinie, welche nachgereicht werden wird. Schon bald wird der Enterprise Policy Generator 6.2.0 erscheinen, welcher die Unterstützung für alle neuen Richtlinien ergänzen wird, welche während der Lebenszeit von Firefox 91 dazugekommen sind. Danach folgen Enterprise Policy Generator 6.3.0 (Firefox 102) und Enterprise Policy Generator 6.4.0 (Firefox 115), ehe schließlich der Enterprise Policy Generator 7.0.0 Firefox 128 oder höher voraussetzen wird.

Entwicklung unterstützen

Wer die Entwicklung des Add-ons unterstützen möchte, kann dies tun, indem er der Welt vom Enterprise Policy Generator erzählt und die Erweiterung auf addons.mozilla.org bewertet. Auch würde ich mich sehr über eine kleine Spende freuen, welche es mir ermöglicht, weitere Zeit in die Entwicklung des Add-on zu investieren, um zusätzliche Features zu implementieren.

Der Beitrag Firefox: Enterprise Policy Generator 6.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

Ubuntu-Server-Upgrade von 22.04 auf 24.04

05. September 2024 um 09:27

Generell lautet ja meine Empfehlung, bei produktiven Servern niemals ein Distributions-Upgrade durchzuführen, als z.B. ohne Neuinstallation von Ubuntu 22.04 auf 24.04 umzustellen. Manchmal halte ich mich aber selbst nicht an diese Regel. Testobjekt war ein Server mit Apache, MySQL, PHP, Mail (Postfix, Dovecot, OpenDKIM) und Docker.

Natürlich gab es Schwierigkeiten …

Fairerweise muss ich zugeben, dass do-release-upgrade noch gar kein Server-Update auf Version 24.04 vorsieht. Das ist ein wenig überraschend, als Ubuntu 24.04.1 ja bereits freigegeben wurde. Normalerweise ist das der Zeitpunkt, ab dem do-release-upgrade funktionieren sollte. Ich habe das Upgrade mit do-release-upgrade -d erzwungen. Selbst schuld also.

Update: Canonical rät aktuell wegen APT-Problemen explizit davon ab, Upgrades von 22.04 auf 24.04 durchzuführen (siehe https://lists.ubuntu.com/archives/ubuntu-release/2024-September/006225.html).

Distributions-Upgrade

Zuerst habe ich ein letztes Mal alle 22.04-Updates installiert (also apt update und apt full-upgrade) und den Server dann neu gestartet.

Danach habe ich ein Backup des in einer virtuellen Maschine laufenden Servers durchgeführt. Zur Not hätte ich aus der gesicherten Image-Datei problemlos den bisherigen Zustand des Servers wiederherstellen können. Das war aber zum Glück nicht notwendig.

Das Distributions-Upgrade habe ich dann mit do-release-upgrade -d eingeleitet, wobei -d für --devel-release steht und das Update erzwingt. Es dauerte ca. 1/4 Stunde und lief an sich überraschend flüssig durch. Ein paar Mal musste ich bestätigen, dass meine eigenen Konfigurationsdateien erhalten bleiben und nicht durch neue Konfigurationsdateien überschrieben werden sollten.

Der nachfolgende Reboot verursachte keine Probleme, ich konnte mich nach kurzer Zeit wieder mit SSH einloggen. So weit so gut!

Kein DNS

Die statische Netzwerkkonfiguration meines Servers erfolgt durch /etc/netplan/01.yaml. Dort sind sechs Nameserver eingetragen, je drei für IPv4 und IPv6. Überraschenderweise funktioniert im aktualisierten 24.04-Server keine Namensauflösung mehr — ein wirklich grundlegendes Problem! ping google.com führt also zum Fehler, dass die IP-Adresse von google.com unbekannt sei.

Ein kurzer Blick auf resolv.conf zeigt, dass es sich dabei um einen Link auf eine gar nicht existierende Datei handelt.

ls -l /etc/resolv.conf

  /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf (existiert nicht)

dpkg -l | grep resolve verrät, dass systemd-resolved nicht installiert ist. Sehr merkwürdig!

Abhilfe schafft die Installation dieses Pakets. Die Installation ist aber ohne DNS gar nicht so einfach! Ich musste zuerst /etc/resolv.conf löschen und dann einen Eintrag auf den Google-DNS dort speichern:

rm /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
apt install systemd-resolved 
reboot

Nach einem Reboot läuft DNS. resolvectl listet jetzt meine in /etc/netplan/01.yaml aufgeführten Nameserver auf.

PHP-Probleme

Nächstes Problem: Apache startet nicht. systemctl status apache2 verweist auf einen Fehler in einer Konfigurationsdatei von PHP 8.1. Aber Ubuntu 24.04 verwendet doch PHP 8.3. Was ist da passiert?

Ein Blick in /etc/apache2/mods-enabled zeigt, dass dort noch PHP 8.1 aktiviert ist. Abhilfe:

a2dismod php8.1
a2enmod php8.3
systemctl restart apache2

Apache und PHP laufen jetzt, aber ein Blick auf die Nextcloud-Statusseite zeigt, dass /etc/php/8.3/apache2/php.ini sehr konservative Einstellungen enthält. Nach memory_limit=1024M und ein paar weiteren Änderungen ist auch Nextcloud zufrieden.

OpenDKIM

Auf meinem 22.04-Server hatte ich DKIM aktiv (siehe auch https://kofler.info/dkim-konfiguration-fuer-postfix/). Nach dem Upgrade funktioniert die Signierung der Mails aber nicht mehr. Der Grund war einmal mehr trivial: Beim Upgrade sind die entsprechenden Pakete verloren gegangen. Abhilfe:

apt install opendkim opendkim-tools

Fazit

Keines der Probleme war unüberwindbar. Überraschend war aber die triviale Natur der Fehler. Beim Upgrade verloren gegangene oder nicht installierte Pakete, keine Synchronisierung zwischen den installierten Paketen und den aktivien Apache-Modulen etc. Ich bleibe bei meinem Ratschlag: Wenn Ihnen Stabilität wichtig ist, vermeiden Sie Distributions-Upgrades. Ja, die Neuinstallation eines Servers verursacht mehr Arbeit, aber dafür können Sie den neuen Server in Ruhe ausprobieren und den Wechsel erst dann durchführen, wenn wirklich alles funktioniert. Bei einem Upgrade riskieren Sie Offline-Zeiten, deren Ausmaß im vorhinein schwer abzuschätzen ist.

Links/Quellen

Mozilla veröffentlicht Firefox 130

03. September 2024 um 21:04

Mozilla hat Firefox 130 für Windows, Apple macOS und Linux veröffentlicht. Dieser Artikel fasst die wichtigsten Neuerungen zusammen – wie immer auf diesem Blog weit ausführlicher als auf anderen Websites.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Verbesserungen der Übersetzungsfunktion

Firefox besitzt eine Übersetzungsfunktion für Websites, welche im Gegensatz zu Cloud-Übersetzern wie Google Translate lokal arbeitet, die eingegebenen Texte also nicht an einen fremden Server sendet. Dabei können wahlweise komplette Websites oder nur markierter Text übersetzt werden. Die Übersetzung von markiertem Text steht ab sofort auch unmittelbar nach einer vollständigen Website-Übersetzung zur Verfügung.

Firefox 130

Neben title und placebolder werden jetzt noch eine ganze Reihe weiterer HTML-Attribute übersetzt. Außerdem wurde die Übersetzungsqualität beim Vorkommen sogenannter bedingter Trennstriche verbessert.

Leichterer Vorab-Zugang zu kommenden Features

Im neuen Abschnitt „Firefox Labs“ der Firefox-Einstellungen lassen sich verschiedene Browser-Funktionen und Plattform-Features vorab aktivieren, an denen Mozilla arbeitet und deren standardmäßige Aktivierung für einen späteren Zeitpunkt geplant ist. Auf diese Weise kann Mozilla zusätzliches Feedback einholen, bevor neue Funktionen fertig sind und flächendeckend ausgerollt werden. Zwar gibt es mit about:config bereits einen Mechanismus zur Vorab-Aktivierung neuer Features, allerdings müssen die entsprechenden Optionsnamen dafür bekannt sein. Die Seite „Firefox Labs“ macht bestimmte Funktionen besser sichtbar und gibt dem Nutzer zusätzlich eine Beschreibung, teilweise auch mit erklärenden Links.

Firefox 130

KI-Chatbots

Eines der experimentellen neuen Features ist eine Chatbot-Integration. Dabei stehen Google Gemini, ChatGPT, HuggingChat, Anthropic Claude sowie Le Chat Mistral zur Verfügung. Die Chatbots können direkt über die Sidebar genutzt werden.

Über das Kontextmenü oder, falls über eine weitere Option aktiviert, eine Schaltfläche nach dem Markieren von Text können auch direkt Funktionen zur Zusammenfassung des markierten Inhalts, zur Vereinfachung der Sprache sowie zu einem Abfragen des Inhalts ausgewählt werden.

Firefox 130

Automatischer Bild-im-Bild-Modus bei Tabwechsel

Der sogenannte Bild-im-Bild-Modus erlaubt es, Videos von der Website loszulösen und über andere Tabs und sogar Anwendungen zu legen. Innerhalb des losgelösten Video-Fensters kann die Wiedergabe pausiert und wieder gestartet werden, man sieht den Wiedergabe-Fortschritt und kann an eine andere Stelle des Videos springen, ein Wechsel in den Vollbildmodus ist möglich, der Ton kann aus- und wieder eingeschaltet werden, die Lautstärke kann geändert werden und auch Untertitel werden auf vielen Plattformen unterstützt.

Über die „Firefox Labs“ kann eine neue Funktion aktiviert werden. Wird ein Video auf einer Website wiedergegeben, startet Firefox damit automatisch den Bild-im-Bild-Modus, wenn der Tab gewechselt wird. Sobald man wieder in den ursprünglichen Tab zurückkehrt, wird der Bild-im-Bild-Modus ebenso automatisch wieder beendet.

Automatischer Bild-im-Bild-Modus für Videos, Firefox 130

Lokale KI generiert Alternativtexte für Bilder in PDF-Dateien

PDF-Dateien betrachten ist in jedem Browser möglich. Firefox gehört zu den wenigen Browsern mit einem PDF-Editor. So kann auf PDF-Dateien gezeichnet werden, es können aber auch Texte und Bilder eingefügt werden.

Dabei besitzt Firefox bereits die Möglichkeit, einen Alternativtext für eingefügte Bilder zu hinterlegen. Dies ist aus Gründen der Barrierefreiheit wichtig, damit die Bildinformation auch für Menschen mit eingeschränkten Sehfähigkeiten bis hin zur Blindheit zugänglich bleibt.

Eine lokale KI kann den Anwender ab Firefox 130 dabei unterstützen. Damit schlägt Firefox basierend auf dem Bildinhalt automatisch einen Beschreibungstext für das hinterlegte Bild vor. Lokale KI bedeutet, dass sich Firefox das entsprechende KI-Modell bei der ersten Verwendung des Features herunterlädt und die Arbeit dann auf dem Gerät des Anwenders geschieht. Die eingefügten Bilder werden also zu keinem Zeitpunkt an Mozilla oder eine Drittanbieter-Cloud gesendet.

Firefox 130

Diese Neuerung wird schrittweise im Laufe der kommenden Wochen für alle Nutzer ausgerollt werden.

Zur manuellen Aktivierung müssen drei Schalter per about:config auf true gesetzt werden: browser.ml.enable, pdfjs.enableAltText und pdfjs.enableUpdatedAddImage. Die Vorschläge werden derzeit noch in englischer Sprache generiert.

Wetter und Hintergründe für Firefox-Startseite

Die Firefox-Startseite lässt sich jetzt auf Wunsch mit einem Hintergrundbild oder einer Hintergrundfarbe nutzen.

Für Nutzer in den USA und Kanada wird auf der Firefox-Startseite standardmäßig das Wetter angezeigt. Aber auch alle anderen können dieses Feature via about:config aktivieren, indem der Schalter browser.newtabpage.activity-stream.system.showWeather per Doppelklick auf true gesetzt wird.

Firefox 130

Personalisierung der Pocket-Empfehlungen auf Firefox-Startseite

Ein weiteres neues Feature für die Firefox-Startseite ist die optionale Personalisierung der Pocket-Empfehlungen. Dabei stehen die folgenden Kategorien zur Auswahl: Geschäftliches, Unterhaltung, Essen, Gesundheit, Finanzen, Politik, Sport, Technik, Reisen, Wissenschaft sowie Life-Hacks.

Firefox 130

Diese Neuerung wird schrittweise im Laufe der kommenden Wochen für alle Nutzer ausgerollt werden.

Nutzer in den USA, Kanada und Großbritannien erhalten dieses Feature zuerst. Aber auch alle anderen können dieses Feature via about:config aktivieren, indem der Schalter browser.newtabpage.activity-stream.discoverystream.topicSelection.enabled per Doppelklick auf true gesetzt wird.

Sonstige Endnutzer-Neuerungen von Firefox 130

Der sogenannte Overscroll-Effekt, der in Firefox auf Windows und macOS bereits seit langer Zeit aktiviert ist, ist nun auch auf Linux standardmäßig aktiviert. Dieser Effekt beschreibt das Verhalten, welches zu beobachten ist, wenn man über den Seitenanfang respektive das Seitenende hinaus scrollt.

Das bereits lange bestehende Problem, dass der Eintrag „Kopieren“ im Kontextmenü unter bestimmten Umständen manchmal ausgegraut war, wurde behoben.

Erweiterungen lösen nicht länger auf Websites den Berechtigungs-Indikator (blauer Punkt) in der Schaltfläche für das Erweiterungs-Menü aus, wenn die entsprechende Host-Berechtigung als optional deklariert ist.

Die Schaltfläche für die Aktivierung des Bild-im-Bild-Modus wurde für Hulu anders positioniert, um nicht hinter anderen Elementen des Videoplayers verdeckt zu sein.

Die Wiedergabe von AV1-Videos auf Windows-Systemen mit ARM-CPU wurde aktiviert.

Die Funktion zur Aufnahme eines Bildschirmfotos kann jetzt auch Elemente auswählen, welche sich innerhalb des sogenannten Shadow DOMs einer Website befinden.

Die Texte der Einstellungen für den Nur-HTTPS-Modus wurden vereinfacht und stellen nun klar, dass Firefox auch bei abgeschaltetem Nur-HTTPS-Modus zunächst eine Verbindung via HTTPS versucht.

Mehr Sicherheit für Firefox-Nutzer

Auch in Firefox 130 wurden wieder mehrere Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 130 daher für alle Nutzer dringend empfohlen.

Verbesserungen der Entwicklerwerkzeuge

Im Responsive Design Modus werden nicht länger automatisch der User-Agent und die Touch-Simulation zurückgesetzt, wenn man die Fenstergröße ändert.

Bei geöffneten Entwicklerwerkzeugen zeigt Firefox während des Veränderns der Fenstergröße die aktuelle Fenstergröße in der oberen rechten Ecke an.

Per Doppelklick auf ein Element im Inspektor lassen sich dort jetzt auch zusätzliche Attribute ergänzen.

Verbesserungen der Webplattform

Das name-Attribut des <details>-Elements erlaubt die Gruppierung von Elementen, bei denen nur ein Element einer Gruppe gleichzeitig offen sein kann. Ein Anwendungsfall hierfür sind Akkordeons, ohne dass dafür JavaScript benötigt wird.

Die hyphens-Eigenschaft in CSS funktioniert nun auch für Tschechisch und Slowakisch korrekt.

Firefox 130 unterstützt außerdem die WebCodecs API.

Dies war nur eine kleine Auswahl der Verbesserungen der Webplattform. Eine vollständige Auflistung lassen sich in den MDN Web Docs nachlesen.

Der Beitrag Mozilla veröffentlicht Firefox 130 erschien zuerst auf soeren-hentzschel.at.

❌