Stable Diffusion ist ein fortschrittliches KI-Modell, das Texteingaben in visuelle Darstellungen umwandelt. Diese Technologie nutzt moderne Algorithmen, um aus Textbefehlen (sogenannten „Prompts“) hochwertige und kreative Bilder zu erstellen. Die Technologie basiert auf Diffusionsmodellen, die schrittweise Rauschen aus einem Bild entfernen, bis das gewünschte Bild entsteht. Dieser Prozess, inspiriert von physikalischen Diffusionsprozessen, führt zu äußerst detaillierten und präzisen Ergebnissen.
Ein wesentlicher Vorteil von Stable Diffusion ist die Möglichkeit, die Technologie lokal auf dem eigenen Rechner zu installieren. Dies bietet nicht nur größere Kontrolle und Flexibilität, sondern auch Datenschutz und Unabhängigkeit von externen Servern.
Stable Diffusion Automatic1111 auf Debian 13 (Netinstall) mit pyenv installieren
- Debian 13 Netinstall (minimal, headless oder mit Desktop)
- NVIDIA-Treiber bereits installiert (nvidia-smi zeigt die GPU an)
- Wenig RAM (z. B. 6 GB) → Downloads/Builds dürfen nicht im RAM landen
Debian 13 bringt standardmäßig Python 3.13 mit. Stable Diffusion Automatic1111 ist aber auf Python 3.10/3.11 mit fest gepinnten, alten Paketversionen (torch==2.1.2, Pillow==9.5.0, clip, tokenizers etc.) ausgelegt. Mit Python 3.13 fehlen für fast alle dieser alten Pins vorgefertigte Wheels — das führt zu einer langen Kette an Kompilierfehlern (fehlender Rust-Compiler, pkg_resources, avif.h, Versionskonflikte). Der zuverlässigste Weg ist daher, Python 3.11.11 parallel per pyenv zu installieren, ohne das System-Python zu verändern, und Stable Diffusion Automatic1111 ausschließlich mit dieser Version laufen zu lassen.
Bevor mit der Installation begonnen wird, lohnt sich eine kurze Entscheidung: Soll pyenv nur für den aktuellen Benutzer installiert werden (Standardfall, einfacher) oder systemweit für alle Benutzer (sinnvoll, wenn mehrere Linux-User auf demselben Rechner später Automatic1111 nutzen sollen)? Beide Varianten werden im Folgenden beschrieben.
1. Temporäre Dateien von Ramdisk auf Disk umleiten
Bei wenig RAM ist es sinnvoll, dass temporäre Build- und Download-Dateien (pip, Torch-Wheels) auf der Festplatte landen, nicht im Arbeitsspeicher. Da pip und die meisten Python-Build-Tools die Umgebungsvariable TMPDIR respektieren, genügt es, diese auf ein Verzeichnis auf der Festplatte zu setzen:
|
1 |
export TMPDIR=/var/tmp |
Das reicht für den gesamten weiteren Installationsprozess aus, da /tmp selbst dabei unangetastet bleibt und nur pip/Python-Prozesse ihre temporären Dateien nach /var/tmp schreiben. (Wichtig: Diese Prüfung setzt voraus, dass /var/tmp selbst nicht bereits als tmpfs im RAM liegt — prüfbar mit mount | grep '/var/tmp'.)
2. Systempakete installieren
Die grundlegenden Abhängigkeiten werden wie folgt direkt aus den Debian-Repos installiert:
|
1 2 |
sudo apt update sudo apt install -y git python3 python3-venv python3-full python3-pip wget libgl1 libglib2.0-0 google-perftools bc |
google-perftools liefert libtcmalloc, das Automatic1111 automatisch nutzt und RAM-Fragmentierung reduziert.
3. pyenv installieren
pyenv ermöglicht es, mehrere Python-Versionen parallel zu installieren und pro Anwendung gezielt eine bestimmte Version zu verwenden.
3a. Standardfall: pyenv im Userspace installieren (nur für den aktuellen Benutzer)
Die Installation erfolgt mittels:
|
1 |
curl https://pyenv.run | bash |
Das Installationsskript legt pyenv standardmäßig im Verzeichnis ~/.pyenv an. Damit pyenv bei jeder neuen Bash-Sitzung verfügbar ist, müssen die entsprechenden Einstellungen in der ~/.bashrc hinzugefügt und folgende Zeilen am Ende der Datei eingetragen werden:
|
1 2 3 |
export PYENV_ROOT="$HOME/.pyenv" [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" |
Nachdem via source ~/.bashrc die Konfiguration neu geladen wurde, ist pyenv einsatzbereit.
Wichtige Einschränkung: Diese Variante legt pyenv (und später Python 3.11.11) ausschließlich unter dem Home-Verzeichnis des installierenden Benutzers ab. Soll Automatic1111 später unter einem anderen Linux-Benutzer laufen (z. B. ein dedizierter Service-User), findet dieser den in webui-user.sh hinterlegten Python-Pfad ($HOME/.pyenv/...) nicht, da sich $HOME je nach Benutzer ändert. Die WebUI startet dann nicht mehr.
3b. Alternative: pyenv systemweit installieren (/opt/pyenv, für alle Benutzer)
Wird Automatic1111 möglicherweise später unter mehreren oder wechselnden Linux-Benutzern betrieben, empfiehlt sich stattdessen eine systemweite Installation. Dabei wird pyenv nicht per Installationsskript, sondern direkt per Git-Klon in ein für alle Benutzer lesbares Systemverzeichnis (/opt/pyenv) installiert:
|
1 |
sudo git clone https://github.com/pyenv/pyenv.git /opt/pyenv |
Damit auch spätere Python-Builds (siehe Schritt 4) durchgeführt werden können, muss das Verzeichnis vorübergehend dem aktuellen Benutzer gehören:
|
1 |
sudo chown -R "$USER":"$USER" /opt/pyenv |
Anschließend werden die Umgebungsvariablen nicht in die persönliche ~/.bashrc, sondern systemweit über /etc/profile.d/ gesetzt, sodass sie für jeden Benutzer beim Login automatisch geladen werden:
|
1 2 3 4 5 6 |
sudo tee /etc/profile.d/pyenv.sh > /dev/null <<EOF export PYENV_ROOT="$PYENV_ROOT" export PATH="\$PYENV_ROOT/bin:\$PATH" eval "\$(pyenv init -)" EOF sudo chmod +x /etc/profile.d/pyenv.sh |
Neu einloggen oder direkt laden:
|
1 |
source /etc/profile.d/pyenv.sh |
Nach Abschluss der Python-Installation (Schritt 4) müssen die Leserechte für alle anderen Benutzer wiederhergestellt werden, da der chown-Schritt oben das Verzeichnis exklusiv dem installierenden Benutzer zugewiesen hat:
|
1 |
sudo chmod -R o+rX /opt/pyenv |
Wichtig zu wissen: Diese systemweite Installation betrifft nur pyenv und den Python-3.11.11-Interpreter selbst. Die eigentliche venv von Automatic1111 (siehe Schritt 9) bleibt weiterhin pro Benutzer im jeweiligen stable-diffusion-webui-Verzeichnis. Jeder Benutzer muss also weiterhin sein eigenes Repository klonen und seine eigene venv einrichten — kann dabei aber denselben, bereits kompilierten Python-3.11.11-Interpreter referenzieren, ohne ihn erneut bauen zu müssen. Zukünftige Python-Versionsinstallationen über pyenv install durch andere Benutzer erfordern erneut einen chown-Schritt auf /opt/pyenv, da nur der jeweils installierende Benutzer Schreibrechte benötigt.
4. Python 3.11.11 über pyenv installieren
Nachdem pyenv installiert ist (egal ob Userspace- oder systemweite Variante), kann jede beliebige Python-Version installiert werden. Für Stable Diffusion Automatic1111 wird Version 3.11.11 installiert:
|
1 |
pyenv install 3.11.11 |
pyenv lädt dazu den Python-Quellcode herunter und kompiliert ihn lokal. Dieser Vorgang kann je nach Prozessor mehrere Minuten dauern. Die Installation verändert dabei nicht das Debian-System-Python. Nach erfolgreicher Installation kann die Version direkt geprüft werden und sollte als Ausgabe Python 3.11.11 liefern:
Bei Userspace-Installation:
|
1 |
$HOME/.pyenv/versions/3.11.11/bin/python3.11 --version |
Bei systemweiter Installation:
|
1 |
/opt/pyenv/versions/3.11.11/bin/python3.11 --version |
Für Automatic1111 wird später genau diese Python-Binary verwendet (je nachdem, welche Variante gewählt wurde).
5. Automatic1111 aus GitHub-Repository klonen
Der master-Branch reicht mit Python 3.11, da die originalen Paket-Pins (requirements_versions.txt) für diese Version passende, vorgefertigte Wheels haben.
|
1 2 3 |
cd ~ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui |
6. webui-user.sh konfigurieren
Um die passende Python-Version sowie verschiedene Parameter zu konfigurieren, wird die Datei webui-user.sh wie folgt ergänzt:
Bei Userspace-Installation:
|
1 2 3 |
export python_cmd="$HOME/.pyenv/versions/3.11.11/bin/python3.11" export COMMANDLINE_ARGS="--medvram --xformers --listen --port 7860" export STABLE_DIFFUSION_REPO="https://github.com/w-e-w/stablediffusion.git" |
Bei systemweiter Installation:
|
1 2 3 |
export python_cmd="/opt/pyenv/versions/3.11.11/bin/python3.11" export COMMANDLINE_ARGS="--medvram --xformers --listen --port 7860" export STABLE_DIFFUSION_REPO="https://github.com/w-e-w/stablediffusion.git" |
export python_cmd sorgt dafür, dass Automatic1111 nicht das Debian-System-Python verwendet. Stattdessen wird immer Python 3.11.11 verwendet.
Unter export COMMANDLINE_ARGS werden zusätzliche Startparameter definiert.
–medvram reduziert den benötigten VRAM, indem bestimmte Berechnungen zwischen GPU-VRAM und Arbeitsspeicher verschoben werden.
–xformers aktiviert die xFormers-Optimierungen. Diese können den Speicherverbrauch reduzieren und die Berechnung bestimmter Operationen beschleunigen.
–listen –port 7860 aktiviert den Netzwerkzugriff des Webinterface auf Port 7860.
Bei sehr wenig VRAM kann alternativ verwendet werden: export COMMANDLINE_ARGS="--lowvram --xformers"
–lowvram reduziert den VRAM-Verbrauch stärker, kann die Bildgenerierung jedoch verlangsamen.
Wichtige Erklärung zu STABLE_DIFFUSION_REPO: Das ursprüngliche Repository Stability-AI/stablediffusion wurde seit Dezember 2025 aus dem öffentlichen GitHub entfernt/privatisiert (bestätigter, weltweiter Bug, betrifft alle Automatic1111-Neuinstallationen). Ohne diese Zeile bricht der Klon-Vorgang mit „Repository not found” bzw. einer Login-Abfrage ab. Der Fork w-e-w/stablediffusion.git ist der vom Automatic1111-Projekt selbst empfohlene Ersatz mit identischem Inhalt. Durch export STABLE_DIFFUSION_REPO wird ein kompatibler Fork verwendet.
7. Ersten Start durchführen
|
1 |
./webui.sh |
Lädt venv (mit Python 3.11.11), Torch (CUDA-Build), das Stable-Diffusion-Basisrepository und ein Standardmodell herunter.
8. Bekannte Stolpersteine bei diesem Schritt
CLIP-Installationsfehler (ModuleNotFoundError: No module named ‘pkg_resources’)
Neuere setuptools-Versionen haben pkg_resources entfernt. Das alte CLIP-Paket (2021) braucht es aber für den Build. Pip zieht sich in der isolierten Build-Umgebung automatisch ein zu neues setuptools — das Downgrade in der venv allein reicht nicht.
Fix:
|
1 2 3 |
source venv/bin/activate pip install "setuptools<81" wheel pip install --no-build-isolation "https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip" |
Prüfen:
|
1 |
python -c "import clip; print('ok')" |
NumPy-Kompatibilitätswarnung (A module that was compiled using NumPy 1.x cannot be run in NumPy 2.x)
torch==2.1.2 wurde gegen NumPy 1.x kompiliert, pip installiert aber standardmäßig NumPy 2.x.
Fix:
|
1 |
pip install "numpy<2" |
Danach erneut prüfen:
|
1 |
python -c "import torch, clip; print('torch', torch.__version__); print('clip ok')" |
Wenn keine Warnung mehr erscheint und clip ok ausgegeben wird:
|
1 2 |
deactivate ./webui.sh |
9. WebUI läuft
Nach erfolgreichem Laden des SafeTensors-Modells erscheint im Terminal:
|
1 |
Running on local URL: http://127.0.0.1:7860 |
Im Browser öffnen: http://127.0.0.1:7860 oder über die IP des Stable-Diffusion-Systems. Alternativ kann auch ein SSH-Tunnel verwendet werden.
Die einmal eingerichteten Umgebungsvariablen aus webui-user.sh werden automatisch geladen — kein erneutes manuelles Setzen von python_cmd, STABLE_DIFFUSION_REPO etc. nötig.
Hinweis: Falls später Extensions installiert werden, die zusätzliche Python-Pakete benötigen, kann es sein, dass beim nächsten Start erneut pip-install-Schritte laufen — dabei ggf. wieder auf pkg_resources- oder NumPy-Konflikte bei sehr alten Zusatzpaketen achten und nach demselben Muster lösen (–no-build-isolation, Versions-Pin anpassen, oder numpy<2 sicherstellen).
Kurz-Referenz: Warum dieser Weg funktioniert
| Problem mit Python 3.13 | Lösung mit Python 3.11.11 (pyenv) |
|---|---|
| torch==2.1.2 hat kein cp313-Wheel | Für cp311 verfügbar |
| Pillow==9.5.0 baut nicht (kein cp313) | Für cp311 als Wheel verfügbar |
| tokenizers braucht Rust-Compiler (kein Wheel) | Für cp311 als Wheel verfügbar |
| clip/pkg_resources-Fehler | Tritt weiterhin auf, aber mit einfachem, bekanntem Fix lösbar |
| blendmodes/Pillow-Versionskonflikt | Entfällt, da Original-Pins zueinander passen |
10. WebUI als systemd-Dienst betreiben (Start/Stop/Autostart)
Damit die WebUI nicht manuell per ./webui.sh gestartet werden muss, lässt sie sich als systemd-Dienst einrichten. Das ermöglicht Start/Stop über systemctl, automatischen Neustart bei Absturz sowie optional den automatischen Start beim Booten.
Zunächst die Unit-Datei anlegen (Platzhalter user, Pfade und TMPDIR an das eigene System anpassen):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
sudo tee /etc/systemd/system/stable-diffusion-webui.service <<'EOF' [Unit] Description=AUTOMATIC1111 Stable Diffusion WebUI After=network.target [Service] Type=simple User=user Group=user WorkingDirectory=/home/user/stable-diffusion-webui Environment=HOME=/home/user Environment=TMPDIR=/var/tmp ExecStart=/home/user/stable-diffusion-webui/webui.sh KillSignal=SIGTERM TimeoutStopSec=30 Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload |
Webui.sh selbst liest weiterhin webui-user.sh aus, daher muss diese Konfiguration wie in Schritt 6 beschrieben bereits vorhanden sein, damit der Dienst startet.
Die Environment=TMPDIR=/var/tmp-Zeile ist nicht nur für die einmalige Installation relevant, sondern gilt für die gesamte Laufzeit des Dienstes — also auch für spätere Modell-Downloads über die WebUI oder temporäre Dateien während der Bildgenerierung, sofern die jeweilige Komponente TMPDIR beachtet.
Webui kann jetzt mittels Systemd befehlen gesteuert werden:
|
1 2 3 |
sudo systemctl start stable-diffusion-webui sudo systemctl stop stable-diffusion-webui sudo systemctl status stable-diffusion-webui |
Automatischer Start beim Booten (optional):
|
1 |
sudo systemctl enable stable-diffusion-webui |
Logs live verfolgen
|
1 |
journalctl -u stable-diffusion-webui -f |
So lässt sich prüfen, ob der Start erfolgreich durchläuft und wann die WebUI unter http://127.0.0.1:7860 (bzw. per LAN-IP bei --listen) erreichbar ist.
Hinweis bei systemweiter pyenv-Installation (Abschnitt 3b): Da python_cmd in webui-user.sh bereits den vollständigen Pfad (/opt/pyenv/versions/3.11.11/bin/python3.11) enthält, braucht der systemd-Dienst keinen zusätzlichen PATH-Eintrag für pyenv — systemd startet ohnehin ohne Login-Shell und würde /etc/profile.d/pyenv.sh nicht automatisch einlesen.
Installationsscript für Debian 13
Kurz-Referenz: Userspace vs. systemweite pyenv-Installation
| Aspekt | Userspace (~/.pyenv) |
Systemweit (/opt/pyenv) |
|---|---|---|
| Installationsmethode | curl https://pyenv.run | bash |
sudo git clone ... nach /opt/pyenv |
| Umgebungsvariablen | in ~/.bashrc |
in /etc/profile.d/pyenv.sh |
| Zugriff | nur installierender Benutzer | alle Benutzer (lesend) |
| Benötigt sudo | nein | ja, für Klon und Rechtevergabe |
| Python-Rebuild bei Benutzerwechsel nötig | ja | nein |
| venv pro Automatic1111-Installation | trotzdem pro Benutzer | trotzdem pro Benutzer |
| Empfehlung | Einzelplatz-/Einzelbenutzer-System | Mehrbenutzer-System, Server |
Installationsscript für Debian 13
Installation auf Debian 12 (stable-diffusion-webui via AUTOMATIC1111)
Automatic1111 ist eine beliebte, benutzerfreundliche grafische Benutzeroberfläche (GUI) für Stable Diffusion. Diese Web-basierte Oberfläche wurde entwickelt, um die Interaktion mit Stable Diffusion zugänglicher und effizienter zu gestalten, insbesondere für Nutzer ohne tiefgehende technische Kenntnisse. Automatic1111 bietet zahlreiche Konfigurationsmöglichkeiten, um beispielsweise das Webinterface über das Netzwerk zu nutzen.
Die Installation unter Linux erfolgt mittels eines Installationsscripts. Dabei wird eine virtuelle Python-Umgebung erstellt und in diese alle benötigten Bibliotheken und Programme installiert.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# install stable diffusion webinterface automatic1111 # Debian-based: sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0 # Red Hat-based: sudo dnf install wget git python3 gperftools-libs libglvnd-glx # openSUSE-based: sudo zypper install wget git python3 libtcmalloc4 libglvnd # Arch-based: sudo pacman -S wget git python3 # Navigate to the directory you would like the webui to be installed and execute the following command: sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0 google-perftools mkdir -p $HOME/stable-diffusion-webui cd $HOME/stable-diffusion-webui wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh # run webui.sh, further installation will be managed by webui.sh script webui.sh |
*TCMalloc (improves CPU memory usage) wird nach der Installation von google-perftools aktiviert. Keine Fehlermeldung mehr.
Eine Alternative ist die Installation direkt über GitHub mittels „git clone”:
|
1 2 3 |
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui ./webu |
Das reine GUI/Web-Interface bietet allerdings nur eine Art Framework, um verschiedene Stable-Diffusion-Modelle zu nutzen und zu konfigurieren.
Konfiguration – Startparameter / Python-Environment-Parameter
Die grundlegende Konfiguration von Stable Diffusion wird in der Datei “webui-user.sh” im Ordner stable-diffusion-webui festgelegt. Neben dem Installationsverzeichnis (falls sich dies nach der Installation ändert) werden hier sämtliche Parameter der virtuellen Python-Umgebung festgelegt. Das betrifft CPU/GPU, Verzeichnisse, Caching, Webinterface etc. Optionen können neben der o. g. Konfiguration über eine Datei auch direkt mit dem Startbefehl (webui.sh –<option>) übergeben werden. Einige häufig verwendete Startoptionen sind wie folgt aufgeführt:
| Parameter | Beschreibung |
|---|---|
--model-dir <path/to/modeldir> |
Angabe des Ordners der verfügbaren KI-Modelle |
--listen |
Aktiviert die Erreichbarkeit des Webinterface außerhalb von localhost |
--port <number> |
Legt den Port für Netzwerkzugriffe fest |
--enable-insecure-extension-access |
Aktiviert GitHub-Extension-Repository |
--gradio-auth "<user>:<pass>" |
Logindaten des Webinterfaces (falls WebUI außerhalb von localhost erreichbar) |
--xformers |
Aktiviert die xFormers-Bibliothek, verbessert Speicherverbrauch und Geschwindigkeit erheblich. Nur für Nvidia-GPUs |
--opt-split-attention |
Führt auf einigen Systemen zu höheren Geschwindigkeiten als xFormers, erfordert jedoch mehr VRAM |
--theme dark |
Aktiviert ein dunkles WebUI-Theme |
--medvram |
Reduzierter VRAM-Verbrauch durch Aufteilung des Stable-Diffusion-Modells in drei Teile: cond (Textumwandlung), first_stage (Bildumwandlung) und unet (Entrauschung). Nur ein Teil bleibt im VRAM, die anderen werden in den CPU-RAM ausgelagert. Geringe Leistungseinbußen, außer bei Live-Vorschauen. Führt mitunter zu Systemabstürzen |
--upcast-sampling |
Beschleunigt die Generierung auf Nvidia- und AMD-Karten, die normalerweise mit “–no-half” laufen |
Eine ausführliche Liste aller Konfigurations- und Startparameter findet sich auf GitHub (Optimizations) | GitHub (CLI-Arguments-and-Settings)
Automatic1111 Erweiterungen
Stable Diffusion ist mit zahlreichen Add-ons erweiterbar. Viele Erweiterungen von der Automatic1111-GitHub-Seite sind nur über das Webinterface installierbar, wenn die Startoption “–enable-insecure-extension-access” aktiviert ist. Alternativ kann auch eine manuelle Installation in das Extension-Verzeichnis der Automatic1111-Installation erfolgen.
| Erweiterung | Beschreibung |
|---|---|
| StyleSelectorXL | Positive und negative Prompt-Vorlagen zur Erzeugung stilisierter Anfragen |
| sd-webui-creaprompt | Eigene Prompts über CSV-Datei möglich (not tested) |
| sd-webui-hardware-info-in-metadata | Fügt Hardware-Informationen (GPU-Name, VRAM, CPU-Name, RAM), Bearbeitungszeit den Metadaten der generierten Bilder hinzu |
| sd-webui-tabs-extension | Tab-Ansicht für Automatic1111-Webui-Erweiterungen, bessere UI-Übersicht |
| stable-diffusion-webui-images-browser | Galerie zur Anzeige bisher generierter Bilder, deren Bildinformationen, sowie Speichern von Favoriten und Löschen nicht benötigter Bilder. Weiterleiten an andere Programme wie txt2img oder img2img |
| sd-webui-old-photo-restoration | — |
| a1111-stable-diffusion-webui-vram-estimator | Sammelt Statistiken von txt2img und img2img mit verschiedenen Einstellungen und schätzt dann den VRAM-Bedarf mithilfe von Extrapolation |
Prompt-Eingaben und Strings
easynegative
EasyNegative in Stable Diffusion ist ein eingebettetes Werkzeug, das entwickelt wurde, um die Qualität der negativen Prompts zu verbessern. Im Wesentlichen wurden viele schlechte Bilder anstelle von guten für das Training genutzt, um ein Embedding zu erstellen. Dieses Embedding wird dann in die Negative-Box integriert.
Weitere Informationen und Beispiele:
- https://aibilderagentur.com/stable-diffusion-sdxl-1-0-automatic1111/
- https://urban-base.net/2024/01/bildstile-meistern-mit-stable-diffusion-ein-guide-fuer-einsteiger/
- https://urban-base.net/2023/03/stable-diffusion-der-ultimative-guide-fuer-anfaenger/
- https://diffusion-news.org/stable-diffusion-settings-parameters
- https://www.adesso.de/de/news/blog/stable-diffusion-eine-einfuehrung.jsp
- https://steemit.com/deutsch/@janisplayer/stable-diffusion-einrichtung-models-einstellungen-or-hintergrund-entfernung-per-ki
- https://github.com/darkhemic/stable-diffusion-cpuonly
Speefak | www.urban-base.net |
Stable Diffusion ist ein fortschrittliches KI-Modell, das Texteingaben in visuelle Darstellungen umwandelt. Diese Technologie nutzt moderne Algorithmen, um aus Textbefehlen (sogenannten „Prompts“) hochwertige und kreative Bilder zu erstellen. Die Technologie basiert auf Diffusionsmodellen, die schrittweise Rauschen aus einem Bild entfernen, bis das gewünschte Bild entsteht. Dieser Prozess, inspiriert von physikalischen Diffusionsprozessen, führt zu äußerst detaillierten und präzisen Ergebnissen.
Ein wesentlicher Vorteil von Stable Diffusion ist die Möglichkeit, die Technologie lokal auf dem eigenen Rechner zu installieren. Dies bietet nicht nur größere Kontrolle und Flexibilität, sondern auch Datenschutz und Unabhängigkeit von externen Servern.
Stable Diffusion Automatic1111 auf Debian 13 (Netinstall) mit pyenv installieren
- Debian 13 Netinstall (minimal, headless oder mit Desktop)
- NVIDIA-Treiber bereits installiert (
nvidia-smizeigt die GPU an) - Wenig RAM (z. B. 6 GB) → Downloads/Builds dürfen nicht im RAM landen
Debian 13 bringt standardmäßig Python 3.13 mit. Stable Diffusion Automatic1111 ist aber auf Python 3.10/3.11 mit fest gepinnten, alten Paketversionen (torch==2.1.2, Pillow==9.5.0, clip, tokenizers etc.) ausgelegt. Mit Python 3.13 fehlen für fast alle dieser alten Pins vorgefertigte Wheels — das führt zu einer langen Kette an Kompilierfehlern (fehlender Rust-Compiler, pkg_resources, avif.h, Versionskonflikte). Der zuverlässigste Weg ist daher, Python 3.11.11 parallel per pyenv zu installieren, ohne das System-Python zu verändern, und Stable Diffusion Automatic1111 ausschließlich mit dieser Version laufen zu lassen.
1. Temporäre Dateien von Ramdisk auf Disk umleiten
Bei wenig RAM ist es kritisch, dass temporäre Build- und Download-Dateien (pip, Torch-Wheels) auf der Festplatte landen, nicht im Arbeitsspeicher. Da pip und die meisten Python-Build-Tools die Umgebungsvariable TMPDIR respektieren, genügt es, diese auf ein Verzeichnis auf der Festplatte zu setzen:
|
1 2 |
mkdir -p ~/tmp export TMPDIR=~/tmp |
Das reicht für den gesamten weiteren Installationsprozess aus, da /tmp selbst dabei unangetastet bleibt und nur pip/Python-Prozesse ihre temporären Dateien nach ~/tmp schreiben.
2. Systempakete installieren
Die grundlegenden Abhängigkeiten werden wie folgt direkt aus den Debian Repos installiert:
|
1 2 |
sudo apt update sudo apt install -y git python3 python3-venv python3-full python3-pip wget libgl1 libglib2.0-0 google-perftools bc |
google-perftools liefert libtcmalloc, das Automatic1111 automatisch nutzt und RAM-Fragmentierung reduziert.
3. pyenv installieren
pyenv ermöglicht es, mehrere Python-Versionen parallel zu installieren und pro Anwendung gezielt eine bestimmte Version zu verwenden. Die Installation erfolgt mittels:
|
1 |
curl https://pyenv.run | bash |
Das Installationsskript legt pyenv standardmäßig im Verzeichnis ~/.pyenvan. Damit pyenv bei jeder neuen Bash-Sitzung verfügbar ist, müssen die entsprechenden Einstellungen in der ~/.bashrc hinzugefügt und folgende Zeilen am Ende der Datei eintragen werden:
|
1 2 3 |
export PYENV_ROOT="$HOME/.pyenv" [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" |
Nachdem via source ~/.bashrc die Konfiguration neu geladen wurde ist pyenv einsatzbereit
4. Python 3.11.11 via pyenv installieren
Nachdem pyenv installiert ist kann jede beliebige Pythonversion jetzt installiert werden. für Stable Diffusion Automatic1111 wird Version 3.11.11 installiert.
|
1 |
pyenv install 3.11.11 |
pyenv lädt dazu den Python-Quellcode herunter und kompiliert ihn lokal. Dieser Vorgang kann je nach Prozessor mehrere Minuten dauern. Die Installation verändert dabei nicht das Debian-System-Python. Nach erfolgreicher Installation kann die Version direkt geprüft werden und sollte als Ausgabe Python 3.11.11 liefern:
|
1 |
$HOME/.pyenv/versions/3.11.11/bin/python3.11 --version<code dir="ltr"> |
Für Automatic1111 wird später genau diese Python-Binary verwendet.
5. Automatic1111 aus Github Repository klonen
Der master-Branch reicht mit Python 3.11, da die originalen Paket-Pins (requirements_versions.txt) für diese Version passende, vorgefertigte Wheels haben.
|
1 2 3 |
cd ~ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui |
6. webui-user.sh konfigurieren
Um die passende Pythonversion sowie verschiedene Paramerter zu konfigurieren wird die Datei webui-user.sh wie folgt ergänzt:
|
1 2 3 |
export python_cmd="$HOME/.pyenv/versions/3.11.11/bin/python3.11" export COMMANDLINE_ARGS="--medvram --xformers --listen --port 7860" export STABLE_DIFFUSION_REPO="https://github.com/w-e-w/stablediffusion.git" |
export python_cmd sorgt dafür, dass Automatic1111 nicht das Debian-System-Python verwendet. Stattdessen wird immer Python 3.11.11 verwendet.
Unter export COMMANDLINE_ARGS werden zusätzliche Startparameter definiert.
--medvram reduziert den benötigten VRAM, indem bestimmte Berechnungen zwischen GPU-VRAM und Arbeitsspeicher verschoben werden.
--xformers aktiviert die xFormers-Optimierungen. Diese können den Speicherverbrauch reduzieren und die Berechnung bestimmter Operationen beschleunigen.
--listen --port 7860 aktiviert den Netzwerkzugriff des Webinterface auf Port 7860
Bei sehr wenig VRAM kann alternativ verwendet werden: export COMMANDLINE_ARGS="--lowvram --xformers"
--lowvram reduziert den VRAM-Verbrauch stärker, kann die Bildgenerierung jedoch verlangsamen.
Wichtige Erklärung zu STABLE_DIFFUSION_REPO: Das ursprüngliche Repository Stability-AI/stablediffusion wurde seit Dezember 2025 aus dem öffentlichen GitHub entfernt/privatisiert (bestätigter, weltweiter Bug, betrifft alle Automatic1111-Neuinstallationen). Ohne diese Zeile bricht der Klon-Vorgang mit Repository not found bzw. einer Login-Abfrage ab. Der Fork w-e-w/stablediffusion.git ist der vom Automatic1111-Projekt selbst empfohlene Ersatz mit identischem Inhalt. Durch export STABLE_DIFFUSION_REPO wird ein kompatibler Fork verwendet.
9. Ersten Start durchführen
|
1 |
./webui.sh |
Lädt venv (mit Python 3.11.11), Torch (CUDA-Build), das Stable-Diffusion-Basisrepository und ein Standardmodell herunter.
10. Bekannte Stolpersteine bei diesem Schritt
CLIP-Installationsfehler (ModuleNotFoundError: No module named 'pkg_resources')
Neuere setuptools-Versionen haben pkg_resources entfernt. Das alte CLIP-Paket (2021) braucht es aber für den Build. Pip zieht sich in der isolierten Build-Umgebung automatisch ein zu neues setuptools — das Downgrade in der venv allein reicht nicht.
Fix:
|
1 2 3 |
source venv/bin/activate pip install "setuptools<81" wheel pip install --no-build-isolation "https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip" |
Prüfen:
|
1 |
python -c "import clip; print('ok')" |
NumPy-Kompatibilitätswarnung (A module that was compiled using NumPy 1.x cannot be run in NumPy 2.x)
torch==2.1.2 wurde gegen NumPy 1.x kompiliert, pip installiert aber standardmäßig NumPy 2.x.
Fix:
|
1 |
pip install "numpy<2" |
Danach erneut prüfen:
|
1 |
python -c "import torch, clip; print('torch', torch.__version__); print('clip ok')" |
Wenn keine Warnung mehr erscheint und clip ok ausgegeben wird:
|
1 2 |
deactivate ./webui.sh |
11. WebUI läuft
Nach erfolgreichem Laden des SafeTensors-Modells erscheint im Terminal:
|
1 |
Running on local URL: http://127.0.0.1:7860 |
Im Browser öffnen: http://127.0.0.1:7860 oder über die IP des Stable Diffusion Systems. Alternativ kann auch ein SSH Tunnel verwendet werden.
Die einmal eingerichteten Umgebungsvariablen aus webui-user.sh werden automatisch geladen — kein erneutes manuelles Setzen von python_cmd, STABLE_DIFFUSION_REPO etc. nötig.
Hinweis: Falls später Extensions installiert werden, die zusätzliche Python-Pakete benötigen, kann es sein, dass beim nächsten Start erneut pip install-Schritte laufen — dabei ggf. wieder auf pkg_resources– oder NumPy-Konflikte bei sehr alten Zusatzpaketen achten und nach demselben Muster lösen (--no-build-isolation, Versions-Pin anpassen, oder numpy<2 sicherstellen).
Kurz-Referenz: Warum dieser Weg funktioniert
| Problem mit Python 3.13 | Lösung mit Python 3.11.11 (pyenv) |
|---|---|
torch==2.1.2 hat kein cp313-Wheel |
Für cp311 verfügbar |
Pillow==9.5.0 baut nicht (kein cp313) |
Für cp311 als Wheel verfügbar |
tokenizers braucht Rust-Compiler (kein Wheel) |
Für cp311 als Wheel verfügbar |
clip/pkg_resources-Fehler |
Tritt weiterhin auf, aber mit einfachem, bekanntem Fix lösbar |
blendmodes/Pillow-Versionskonflikt |
Entfällt, da Original-Pins zueinander passen |
Installationsscript für Debian 13
Installation auf Debian 12 (stable-diffusion-webui via AUTOMATIC1111)
Automatic1111 ist eine beliebte, benutzerfreundliche grafische Benutzeroberfläche (GUI) für Stable Diffusion. Diese Web-basierte Oberfläche wurde entwickelt, um die Interaktion mit Stable Diffusion zugänglicher und effizienter zu gestalten, insbesondere für Nutzer ohne tiefgehende technische Kenntnisse. Automatic 11111 bietet zahlreiche Konfigurationsmöglichkeiten, um beispielsweise das Webinterface über das Netzwerk zu nutzen.
Die Installation unter Linux erfolgt mittels eines Installationsscripts. Dabei wird eine virtuelle Pythonumgebung erstellt und in diese alle benötigten Bibliotheken und Programme installiert.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# install stable diffusion webinterface automatic1111 # Debian-based: sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0 # Red Hat-based: sudo dnf install wget git python3 gperftools-libs libglvnd-glx # openSUSE-based: sudo zypper install wget git python3 libtcmalloc4 libglvnd # Arch-based: sudo pacman -S wget git python3 # Navigate to the directory you would like the webui to be installed and execute the following command: sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0 google-perftools mkdir -p $HOME/stable-diffusion-webui cd $HOME/stable-diffusion-webui wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh # run webui.sh, further installation will managed by webui.sh script webui.sh |
* TCMalloc (improves CPU memory usage) wird nach der Installation von google-perftools aktiviert. Keine Fehlermeldung mehr.
Eine Alternative ist die Installation direkt über GitHub mittels “git clone”:
|
1 2 3 |
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui ./webui |
Das reine GUI/Web Interface bietet allerdings nur eine Art Framework, um verschiedene Stable Diffusion Modelle zu nutzen und zu konfigurieren.
Konfiguration – Startparameter / Python Environment Parameter
Die grundlegende Konfiguration von Stable Diffusion wird in der Datei “webui-user.sh” im Ordner stable-diffusion-webui festgelegt. Neben dem Installationsverzeichnis (falls sich dies nach der Installation ändert) werden hier sämtliche Parameter der virtuellen Pythonumgebung festgelegt. Das betrifft CPU/GPU, Verzeichnisse, Caching, Webinterface etc. Optionen können neben der o.g. Konfiguration über eine Datei auch direkt mit dem Startbefehl (webui.sh –<option>) übergeben werden. Einige häufig verwendete Startoptionen sind wie folgt aufgeführt:
--model-dir <path/to/modeldir> |
Angabe des Ordners der verfügbaren KI Modelle |
--listen |
Aktiviert die Erreichbarkeit des Webinterface außerhalb von localhost |
--port <number> |
Legt den Port für Netzwerkzugriffe fest |
--enable-insecure-extension-access |
Aktiviert GITHub Extension Repository |
--gradio-auth "<user>:<pass>" |
Logindaten des Webinterfaces (falls WebUI außerhalb von localhost erreichbar) |
--xformers |
Aktiviert die xFormers-Bibliothek, verbessert Speicherverbrauch und Geschwindigkeit erheblich. Nur für Nvidia-GPUs |
--opt-split-attention |
Führt auf einigen Systemen zu höheren Geschwindigkeiten als xFormers, erfordert jedoch mehr VRAM |
--theme dark |
Aktiviert ein Dunkles WebUI Theme |
--medvram |
Reduzierter VRAM-Verbrauch durch Aufteilung des Stable Diffusion-Modell in drei Teile: cond (Textumwandlung), first_stage (Bildumwandlung) und unet (Entrauschung). Nur ein Teil bleibt im VRAM, die anderen werden in den CPU-RAM ausgelagert. Geringe Leistungseinbußen, außer bei Live-Vorschauen. Führt mitunter zu Systemabstürzen |
--upcast-sampling |
Beschleunigt die Generierung auf Nvidia- und AMD-Karten, die normalerweise mit “–no-half” laufen. |
Eine ausführliche Liste aller Konfigurations- und Startparameter findet sich auf GitHub (Optimizations) | GitHub (CLI-Arguments-and-Settings)
Automatic1111 Erweiterungen
Stable Diffusion ist mit zahlreichen Add-ons erweiterbar. Viele Erweiterungen von der Automatic1111 GitHub-Seite sind nur über das Webinterface installierbar, wenn die Startoption “–enable-insecure-extension-access” aktiviert ist. Alternativ kann auch eine manuelle Installation in das Extension-Verzeichnis der Automatic1111-Installation erfolgen.
| StyleSelectorXL | Positive und negative Prompt Vorlagen zur Erzeugung stilisierter Anfragen |
| sd-webui-creaprompt | Eigene Prompts über CSV Datei möglich (not tested) |
| sd-webui-hardware-info-in-metadata | Fügt Hardware-Informationen (GPU-Name, VRAM, CPU-Name, RAM), Bearbeitungszeit den Metadaten der generierten Bilder hinzu. |
| sd-webui-tabs-extension | Tab Ansicht für Automatic1111 Webui Erweiterungen, bessere UI Übersicht |
| stable-diffusion-webui-images-browser | Galerie zur Anzeige bisher generierter Bilder, deren Bildinformationen, sowie Speichern von Favoriten und Löschen nicht benötigter Bilder. Weiterleiten an andere Programme wie txt2img oder img2img. |
| sd-webui-old-photo-restoration | |
| a1111-stable-diffusion-webui-vram-estimator | sammelt Statistiken von txt2img und img2img mit verschiedenen Einstellungen und schätzt dann den VRAM-Bedarf mithilfe von Extrapolation. |
Prompt Eingaben und Strings
| easynegative | EasyNegative in Stable Diffusion ist ein eingebettetes Werkzeug, das entwickelt wurde, um die Qualität der negativen Prompts zu verbessern. Im Wesentlichen wurden viele schlechte Bilder anstelle von guten für das Training genutzt, um ein Embedding zu erstellen. Dieses Embedding wird dann in die Negative-Box integriert. |
Weitere Informationen und Bespiele
| https://aibilderagentur.com/stable-diffusion-sdxl-1-0-automatic1111/ | ||
| https://urban-base.net/2024/01/bildstile-meistern-mit-stable-diffusion-ein-guide-fuer-einsteiger/ | ||
| https://urban-base.net/2023/03/stable-diffusion-der-ultimative-guide-fuer-anfaenger/ | ||
| https://diffusion-news.org/stable-diffusion-settings-parameters | ||
| https://www.adesso.de/de/news/blog/stable-diffusion-eine-einfuehrung.jsp | ||
| https://steemit.com/deutsch/@janisplayer/stable-diffusion-einrichtung-models-einstellungen-or-hintergrund-entfernung-per-ki | ||
| https://github.com/darkhemic/stable-diffusion-cpuonly |
Speefak | www.urban-base.net |