Files

844 lines
25 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Kapitel 18 Ollama (Lokale KI-Inferenz)
## Einleitung
Künstliche Intelligenz ist längst kein Zukunftsthema mehr sie ist ein Werkzeug.
Für viele Aufgaben im Homelab, in der Automatisierung oder Content-Produktion kann eine lokal laufende KI enorme Vorteile bringen:
Antworten in Echtzeit, volle Kontrolle über Daten und keine Abhängigkeit von Cloud-Diensten.
**Ollama** ist eine Open-Source-Plattform, die genau das ermöglicht.
Sie erlaubt es, Sprachmodelle (z. B. Llama 3, Mistral, Phi oder Gemma) direkt auf deinem eigenen System auszuführen
entweder CPU-basiert oder mit GPU-Beschleunigung.
Damit erhältst du eine **lokale Chat- und Inferenz-Engine**, die du in Tools wie n8n, Affine, deinem Kontrollzentrum oder eigenen Apps einsetzen kannst.
Kein API-Key, keine Kosten, kein Tracking volle Datensouveränität.
👉 **Screenshot geeignet:** UCC-Dashboard mit markiertem „Ollama“-Container, sichtbar neben n8n und Nextcloud
> [!NOTE]
> Ollama ist kein einzelnes KI-Modell, sondern eine Laufzeitumgebung.
> Sie stellt einen lokalen API-Server bereit, über den du beliebige Modelle laden, verwalten und abfragen kannst.
> Die Modelle selbst sind eigenständige Dateien und können unabhängig voneinander installiert oder entfernt werden.
Nach diesem Kapitel hast du eine vollständig funktionsfähige lokale KI-Umgebung,
die du direkt über die Kommandozeile, per HTTP-Request oder in anderen UCC-Diensten ansprechen kannst.
---
## Voraussetzungen & Ressourcen
Ollama lässt sich auch auf schwächerer Hardware stabil betreiben entscheidend ist die richtige Modellauswahl.
Da dein Host ein älterer Office-PC ist, liegt der Fokus auf effizientem Ressourceneinsatz statt maximaler Leistung.
### Container-Ressourcen
* **CPU:** 4 vCPU
Ollama nutzt Multithreading, daher sind vier virtuelle Kerne sinnvoll.
Weniger funktioniert, verlängert aber die Antwortzeiten.
* **RAM:** 8 GB
Für leichte Modelle wie Phi-3 Mini, Gemma 2B oder Mistral 7B in Q4-Quantisierung ausreichend.
Wichtig ist, dass nie mehrere große Modelle gleichzeitig geladen werden.
* **Speicherplatz:** 50 GB
Modelle liegen als `.gguf`-Dateien lokal im Container.
Plane je nach Modellgröße zwischen 4 und 15 GB ein, plus 10 GB Reserve für temporäre Daten.
* **Netzwerk:** Statische IP oder DHCP-Reservierung
Damit andere Container (z. B. n8n oder Affine) die API zuverlässig erreichen.
* **Betriebssystem:** Debian 12 (Bookworm)
Stabil, ressourcenschonend und optimal für den Einsatz auf älterer Hardware.
👉 **Screenshot geeignet:** Proxmox-Maske beim Erstellen des Ollama-Containers (4 vCPU | 8 GB RAM | 50 GB Storage | Debian 12)
### Technische Voraussetzungen
Vor der Einrichtung sollte dein UCC folgendes erfüllen:
* **Proxmox VE** ist betriebsbereit und kann Container erstellen.
* **Nginx Proxy Manager (NPM)** ist installiert und erreichbar.
* **DNS-Eintrag** für `ollama.deinedomain.tld` zeigt auf deinen Server.
* **Internetverbindung** ist stabil Modelle werden online geladen.
* **SSH-Zugriff** auf den Container funktioniert:
```bash
ssh root@<IP-des-Containers>
```
Ersetze `<IP-des-Containers>` durch die tatsächliche Adresse des Ollama-LXC.
> [!IMPORTANT]
> GPU-Unterstützung ist hier nicht vorgesehen.
> Ollama läuft vollständig CPU-basiert und kann trotzdem stabile Ergebnisse liefern,
> solange Modelle mit moderater Parameterzahl (bis 7B) verwendet werden.
---
### Schritt 1 Container vorbereiten und System aktualisieren
Starte den frisch erstellten Ollama-Container in Proxmox und öffne die Konsole (Web-Shell oder SSH).
Systempakete aktualisieren:
```bash
apt update && apt upgrade -y
```
Container neu starten:
```bash
reboot
```
Danach wieder einloggen:
```bash
ssh root@<IP-des-Containers>
```
> [!NOTE]
> Ein aktuelles System verhindert Installationsfehler und Abbrüche beim Laden der Modelle.
👉 **Screenshot geeignet:** Proxmox-Konsole nach erfolgreichem `apt upgrade`
### Schritt 2 Ollama installieren
Ollama stellt ein offizielles Installationsskript bereit, das automatisch alle Abhängigkeiten einrichtet und den Dienst als systemd-Service konfiguriert.
Führe im Container folgenden Befehl aus:
```bash
curl -fsSL https://ollama.com/install.sh | sh
```
Nach Abschluss prüfe den Dienststatus:
```bash
systemctl status ollama
```
Die Ausgabe sollte `active (running)` anzeigen.
> [!NOTE]
> Der Dienst startet automatisch beim Booten des Containers und lauscht auf Port `11434`.
> Sollte die Ausgabe `inactive` oder `failed` lauten, kontrolliere mit
> ```bash
> journalctl -u ollama -xe
> ```
> ob Pakete oder Abhängigkeiten fehlgeschlagen sind.
👉 **Screenshot geeignet:** Terminalausgabe von `systemctl status ollama` mit aktivem Dienst
### Schritt 3 Erste Funktionsprüfung & Modelle installieren
Nach der erfolgreichen Installation läuft der Ollama-Dienst bereits im Hintergrund.
Jetzt prüfst du, ob die API reagiert und lädst anschließend die beiden benötigten Modelle.
#### Installation prüfen
```bash
curl http://localhost:11434/api/tags
```
Wenn eine leere JSON-Liste zurückkommt, ist der Server bereit:
```json
[]
```
👉 **Screenshot geeignet:** Terminalausgabe von `curl /api/tags` mit leerer JSON-Liste
#### Modell 1 Mistral 7B
Dieses Modell übernimmt die strukturierten Aufgaben innerhalb deines UCC
z. B. präzise Auswertungen, systemnahe Antworten oder die Verarbeitung von Nachrichten, die über WAHA eingehen.
Modell herunterladen:
```bash
ollama pull mistral
```
Nach dem Download prüfen, ob es korrekt installiert wurde:
```bash
ollama list
```
In der Ausgabe sollte `mistral` erscheinen.
👉 **Screenshot geeignet:** Terminalausgabe von `ollama list` mit sichtbarem Eintrag `mistral`
#### Modell 2 Phi-3 Mini
Phi-3 ist kompakt und läuft stabil auch auf schwächerer Hardware.
Es eignet sich ideal für natürlich klingende, kreative Texte und ergänzt Mistral in allen inhaltlich offeneren Aufgaben.
Modell laden:
```bash
ollama pull phi3
```
Anschließend erneut prüfen:
```bash
ollama list
```
Beide Modelle sollten nun angezeigt werden: `mistral` und `phi3`.
👉 **Screenshot geeignet:** Terminalausgabe von `ollama list` mit sichtbaren Modellen `mistral` und `phi3`
### Schritt 4 Funktionstest und erste Abfrage
Nach der Installation und dem Laden beider Modelle folgt nun der Praxistest.
Damit stellst du sicher, dass Ollama korrekt arbeitet und die Modelle einsatzbereit sind.
#### Test mit Mistral
Starte Mistral direkt über die Konsole:
```bash
ollama run mistral
```
Nach dem Start erscheint die Eingabeaufforderung (`>>>`).
Gib eine einfache Testfrage ein, die sich ohne Internetzugriff beantworten lässt:
```
Erkläre mir, was ein Container ist.
```
Mistral sollte in wenigen Sekunden eine sachliche und technisch korrekte Antwort liefern.
Beende den Lauf anschließend mit `CTRL + C`.
👉 **Screenshot geeignet:** Terminal mit sichtbarer Mistral-Antwort auf Testfrage
#### Test mit Phi-3
Starte danach das zweite Modell:
```bash
ollama run phi3
```
Diese Variante ist sprachlich freier und eignet sich besser für kreative Texte.
Verwende deshalb eine etwas erzählerische Testfrage:
```
Beschreibe eine Fantasiewelt mit einem eigenen Kontrollzentrum.
```
Phi-3 reagiert meist mit lebendigen, bildhaften Formulierungen.
Auch hier die Sitzung mit `CTRL + C` beenden.
👉 **Screenshot geeignet:** Terminal mit Phi-3-Antwort auf Testfrage
> [!NOTE]
> Ollama-Modelle haben **keinen Internetzugriff** und kennen weder „Bratonien“ noch dein reales System.
> Sie antworten ausschließlich auf Basis des Prompt-Inhalts.
> Damit sie künftig deine eigene Welt verstehen, werden wir im Premium-Kapitel zeigen,
> wie du Kontextwissen und interne Dokumente lokal einbindest.
### Schritt 5 API-Zugriff aktivieren
Ollama stellt lokal eine HTTP-API bereit, über die du Anfragen aus anderen Systemen senden kannst etwa von n8n, Affine oder deinem Kontrollzentrum.
Die API läuft standardmäßig auf Port `11434`.
#### Erreichbarkeit prüfen
Führe im Container folgenden Befehl aus:
```bash
curl http://localhost:11434/api/tags
```
Wenn eine JSON-Antwort erscheint, z. B.:
```json
[{"name": "mistral"}, {"name": "phi3"}]
```
dann ist die API aktiv und betriebsbereit.
👉 **Screenshot geeignet:** Terminalausgabe von `curl /api/tags` mit sichtbaren Modellen
#### Zugriff über das Netzwerk
Damit andere Container im UCC (z. B. n8n oder Affine) auf die API zugreifen können,
muss der Nginx Proxy Manager (NPM) den internen Port **11434** weiterleiten.
Dazu braucht Ollama **keine öffentliche Bindung** der Dienst bleibt intern und sicher.
Prüfe zunächst, ob der Dienst korrekt läuft:
```bash
systemctl status ollama
```
Wenn der Status `active (running)` lautet,
kannst du mit `ss` kontrollieren, ob der Port intern aktiv ist:
```bash
ss -tulpen | grep 11434
```
Wird hier `127.0.0.1:11434` angezeigt, ist alles korrekt
Ollama lauscht lokal, und NPM greift intern über die Container-IP zu.
> [!NOTE]
> Du musst **keine** Änderung in der Ollama-Konfiguration vornehmen
> (z. B. `--host 0.0.0.0`).
> Der Dienst bleibt bewusst auf `localhost` beschränkt,
> um keine ungeschützten Ports ins interne Netz zu öffnen.
#### Proxy-Host in NPM anlegen
1. Öffne das **Nginx Proxy Manager Dashboard**.
2. Wähle **Add Proxy Host**.
3. Trage folgende Werte ein:
| Feld | Wert |
|------|------|
| **Domain Names** | `ollama.deinedomain.tld` |
| **Scheme** | `http` |
| **Forward Hostname / IP** | `<IP-des-Ollama-Containers>` |
| **Forward Port** | `11434` |
| **Block Common Exploits** | aktivieren |
| **Websockets Support** | aktivieren |
Wechsle anschließend in den Reiter **SSL** und aktiviere:
- **Request a new SSL Certificate**
- **Force SSL**
- **HTTP/2 Support**
- **HSTS Enabled**
> [!NOTE]
> Achte darauf, dass `ollama.deinedomain.tld` bereits im DNS
> auf deinen Server zeigt und dass interne Firewalls (z. B. Proxmox oder UFW)
> Verbindungen zwischen NPM und Ollama zulassen.
> Eine Freigabe des Ports **11434** nach außen ist nicht erforderlich.
👉 **Screenshot geeignet:** NPM-Dashboard mit geöffnetem Proxy-Host `ollama.deinedomain.tld`
#### Verbindung testen
Öffne im Browser:
```
https://ollama.deinedomain.tld/api/tags
```
Wenn du dieselbe JSON-Ausgabe erhältst wie zuvor, ist die API über HTTPS erreichbar.
Ab diesem Punkt können n8n, Affine oder andere UCC-Dienste Ollama direkt über Requests ansprechen.
> [!TIP]
> Im Premium-Kapitel lernst du, wie Ollama über **llm-axe** zusätzlich aktuelle Webdaten beziehen kann,
> um Antworten mit externen Informationen zu erweitern bei weiterhin vollständiger lokaler Kontrolle.
### Schritt 6 API-Nutzung aus einem anderen Container
Nachdem die Ollama-API über den Nginx Proxy Manager eingerichtet wurde,
kann sie jetzt von jedem anderen Container im UCC-Netzwerk angesprochen werden.
Dieser Schritt zeigt, wie du die Verbindung praktisch nutzt ohne zusätzliche Tools oder Oberflächen.
#### Zugriff aus einem anderen LXC prüfen
Wechsle in die Konsole eines anderen Containers,
z. B. deines n8n-LXC oder eines beliebigen Debian-Containers im selben Netz,
und führe folgenden Befehl aus:
```bash
curl -k https://ollama.deinedomain.tld/api/tags
```
Wenn du eine JSON-Antwort erhältst, z. B.:
```json
[{"name":"mistral"},{"name":"phi3"}]
```
dann ist die Verbindung erfolgreich und die API von außen erreichbar.
👉 **Screenshot geeignet:** Terminalausgabe im anderen Container mit erfolgreicher JSON-Antwort
> [!NOTE]
> Die Option `-k` ignoriert Zertifikatswarnungen.
> Bei gültigem Lets-Encrypt-Zertifikat kann sie entfallen.
#### Erste API-Abfrage an ein Modell
Um die API praktisch zu testen, sende eine kurze Anfrage an das Mistral-Modell:
```bash
curl -X POST https://ollama.deinedomain.tld/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "mistral",
"prompt": "Erkläre in einem Satz, was ein Homelab ist."
}'
```
Wenn alles funktioniert, antwortet Ollama mit einem JSON-Block,
der den generierten Text enthält:
```json
{
"model": "mistral",
"created_at": "2025-10-22T17:32:00Z",
"response": "Ein Homelab ist eine private IT-Umgebung zum Lernen, Testen und Automatisieren."
}
```
👉 **Screenshot geeignet:** Terminalausgabe mit erfolgreicher API-Antwort
#### Verwendung im Alltag
Über diese Schnittstelle kannst du Ollama ab jetzt
aus beliebigen Skripten, Shell-Befehlen oder Tools im UCC aufrufen
z. B. zur Textgenerierung, Zusammenfassung von Logs oder automatisierten Statusmeldungen.
Der Aufruf bleibt dabei vollständig lokal und erfordert keine Cloud-Verbindung.
> [!TIP]
> Diese API bildet die technische Grundlage für spätere Erweiterungen
> etwa automatisierte Workflows oder grafische Oberflächen.
> Für den Moment genügt sie, um Ollama sicher aus jedem Container im UCC zu steuern.
### Schritt 7 Zugriff absichern
Damit die Ollama-API nicht von außen erreichbar ist,
muss der Zugriff konsequent über den Nginx Proxy Manager (NPM) und die interne Firewall geschützt werden.
Dieser Schritt ist zwingend erforderlich, um unbefugten Zugriff auf dein System zu verhindern.
#### Zugriff über NPM absichern
Öffne das Dashboard des **Nginx Proxy Manager**
und bearbeite den Proxy-Host `ollama.deinedomain.tld`.
Wechsle in den Reiter **Access List**
und lege eine neue Zugriffsregel an:
1. **Add Access List** → Name: `ollama-intern`
2. Unter *Access* aktiviere
- **Authorization:** „HTTP Basic Authentication“
- Lege einen sicheren Benutzernamen und ein starkes Passwort fest.
3. Unter *Access Control* wähle
- **Allow IP Addresses:** den internen Adressbereich deines UCC (z. B. `192.168.100.0/24`)
- Alle anderen Zugriffe werden automatisch blockiert.
Speichern und im Proxy-Host diese Access-List aktivieren.
> [!NOTE]
> Damit ist Ollama ausschließlich intern erreichbar
> und erfordert bei jedem Aufruf Benutzername und Passwort.
👉 **Screenshot geeignet:** NPM-Dashboard mit aktivierter Access-List „ollama-intern“
#### Zugriff testen
Von einem erlaubten Container (z. B. n8n-LXC):
```bash
curl -u benutzername:passwort -k https://ollama.deinedomain.tld/api/tags
```
Wenn du die korrekten Zugangsdaten angibst,
antwortet die API wie gewohnt mit der Modellliste.
Ohne Authentifizierung oder von einer nicht freigegebenen IP
erscheint die Meldung `403 Forbidden`.
👉 **Screenshot geeignet:** Terminalausgabe mit erfolgreicher Authentifizierung
#### Firewall-Regeln im Ollama-LXC setzen
Der API-Port 11434 muss zusätzlich auf Systemebene abgesichert werden.
Erlaubt wird ausschließlich der Zugriff vom NPM-Container.
Führe im Ollama-LXC folgende Befehle aus:
```bash
ufw allow from <IP-des-NPM-Containers> to any port 11434
ufw deny 11434
ufw enable
```
Anschließend den Status prüfen:
```bash
ufw status numbered
```
Die Ausgabe sollte zeigen, dass **nur die NPM-IP** Zugriff auf Port 11434 hat.
👉 **Screenshot geeignet:** Terminalausgabe von `ufw status numbered` mit aktiver Regel
> [!IMPORTANT]
> Ohne diese Firewall-Regeln bleibt der Port im internen Netz offen.
> Das wäre ein kritisches Sicherheitsrisiko führe diesen Schritt daher immer durch.
#### Ergebnis
Die Ollama-API ist jetzt:
- nur über den internen Proxy erreichbar,
- durch HTTP-Authentifizierung geschützt,
- über die Firewall auf NPM-IP beschränkt,
- und damit vollständig abgeschottet gegen direkten Zugriff.
Das System ist damit sicher, stabil und bereit
für alle weiteren Integrationen innerhalb deines UCC.
### Schritt 8 Nutzung über die lokale CLI
Neben der API kannst du Ollama auch direkt im Container verwenden.
Das ist der schnellste Weg, um Modelle zu testen, einfache Texte zu generieren oder Systemfunktionen zu prüfen
ohne dass eine Netzwerkverbindung oder Proxy nötig ist.
Alle Befehle in diesem Schritt führst du **innerhalb des Ollama-Containers** aus,
entweder über die Proxmox-Konsole oder per SSH:
```bash
ssh root@<IP-des-Ollama-Containers>
```
Nach dem Login steht dir die Ollama-CLI zur Verfügung.
#### Verfügbare Modelle anzeigen
Um zu prüfen, welche Modelle auf deinem System vorhanden sind:
```bash
ollama list
```
Beispielausgabe:
```
NAME ID SIZE MODIFIED
mistral 5d43f1d3bdfd 4.1GB 3 days ago
phi3 e2412cd927a8 2.8GB 2 days ago
```
👉 **Screenshot geeignet:** Terminalausgabe mit sichtbaren Modellen
#### Interaktive Sitzung starten
Um direkt mit einem Modell zu interagieren, starte es über:
```bash
ollama run mistral
```
Sobald die Eingabeaufforderung (`>>>`) erscheint, kannst du Fragen stellen:
```
>>> Was ist ein Homelab?
Ein Homelab ist eine private IT-Umgebung, in der Systeme, Server und Netzwerke
zu Lern- oder Testzwecken betrieben werden.
```
Beende die Sitzung mit `CTRL + C`.
👉 **Screenshot geeignet:** Terminal mit laufender Mistral-Sitzung und Antwort
#### Einmalige Abfrage (non-interaktiv)
Für einfache Einzelfragen kannst du den Prompt direkt mitgeben:
```bash
ollama run mistral "Erkläre kurz den Unterschied zwischen Container und virtueller Maschine."
```
Das Modell gibt eine einmalige Antwort zurück und beendet sich automatisch.
#### Modelle wechseln
Du kannst jederzeit ein anderes Modell verwenden:
```bash
ollama run phi3
```
Phi-3 eignet sich besonders für kreative Texte, Storylines oder Ideenentwürfe.
#### Modelle aktualisieren oder löschen
Aktualisieren:
```bash
ollama pull mistral
```
Entfernen:
```bash
ollama rm phi3
```
> [!NOTE]
> Der Befehl `pull` benötigt eine aktive Internetverbindung, um das Modell neu zu laden.
> In Offline-Umgebungen bleiben vorhandene Modelle funktionsfähig.
#### Beispiel: praktische Nutzung
```bash
ollama run mistral "Schreibe eine kurze Streamankündigung für Bratonien_TV."
```
Erwartete Antwort:
```
"🎬 Der Stream ist live! Willkommen zu einem neuen Abend voller Chaos, Magie und Möhrenpower."
```
👉 **Screenshot geeignet:** Terminalausgabe mit generierter Beispielantwort
#### Ergebnis
Ollama ist jetzt vollständig nutzbar:
- Du kannst Modelle direkt über die CLI starten.
- Anfragen funktionieren ohne Internetverbindung.
- Alle Aktionen laufen lokal im Container.
## Troubleshooting & Tipps
Ollama läuft im Normalbetrieb sehr stabil. Trotzdem kann es besonders auf älterer Hardware oder bei ersten Installationen zu Problemen kommen.
In diesem Abschnitt lernst du, wie du typische Fehler erkennst, Ursachen findest und dein System stabil hältst.
### Ollama startet nicht
Wenn Ollama sich nicht starten lässt oder direkt wieder beendet wird, liegt das meist an zu wenig Arbeitsspeicher oder beschädigten Dateien.
#### Arbeitsspeicher prüfen
Ollama lädt komplette Modelle in den RAM.
Ist zu wenig Speicher frei, startet der Dienst gar nicht erst oder bricht beim Laden ab.
```bash
free -h
```
In der Zeile **Mem:** siehst du, wie viel Arbeitsspeicher belegt ist und wie viel noch frei ist.
Wenn weniger als 2 GB frei sind, reicht das nicht aus, um ein Modell zu laden.
Starte den Container neu, um Arbeitsspeicher freizugeben:
```bash
reboot
```
> [!NOTE]
> Bei 8 GB Gesamtspeicher sollte Ollama mindestens 6 GB reserviert bekommen.
> Andernfalls kann das Modell nicht stabil geladen werden.
#### Dienststatus prüfen
Wenn genug Speicher vorhanden ist, prüfe, ob der Dienst aktiv ist:
```bash
systemctl status ollama
```
Wenn dort **inactive** oder **failed** steht, starte ihn neu:
```bash
systemctl restart ollama
```
Zeigt der Status anschließend **active (running)**, läuft der Dienst korrekt.
Wenn er erneut fehlschlägt, schaue dir die Logdateien an.
#### Logdateien prüfen
```bash
journalctl -u ollama -xe
```
Die Ausgabe zeigt, warum der Dienst nicht startet.
Häufige Ursachen sind:
- beschädigte oder unvollständige Modelldateien
- kein freier Speicherplatz auf der Systempartition
- fehlende Berechtigungen
Wenn ein Modell beschädigt ist, entferne es und lade es neu:
```bash
ollama rm mistral
ollama pull mistral
```
> [!TIP]
> Wenn Ollama nach einem Neustart automatisch wieder startet, ist alles korrekt konfiguriert.
> Sollte der Dienst dauerhaft ausfallen, prüfe die Datei `/etc/systemd/system/ollama.service`.
> Achte darauf, dass dort `Restart=always` gesetzt ist.
### Modelle reagieren nicht oder brechen ab
Wenn ein Modell zwar startet, aber nicht antwortet oder mitten im Text abbricht, liegt das meist an Speicherproblemen oder unvollständigen Downloads.
#### Modellverfügbarkeit prüfen
```bash
ollama list
```
Wenn das Modell fehlt oder eine ungewöhnliche Größe hat, lade es neu:
```bash
ollama pull mistral
```
#### Testlauf mit Debug-Informationen
```bash
ollama run mistral -v
```
Der Parameter `-v` zeigt dir den Fortschritt beim Laden.
Wenn der Prozess bei „Loading model…“ stehen bleibt, hat Ollama nicht genug RAM oder die Datei ist defekt.
> [!NOTE]
> Beende alle laufenden Sitzungen mit `CTRL + C`, bevor du ein neues Modell startest.
> Mehrere aktive Prozesse können den Speicher blockieren.
### API antwortet nicht
Wenn du über den Browser oder per `curl` keine Antwort erhältst, kann die Verbindung zwischen Ollama und dem Nginx Proxy Manager (NPM) unterbrochen sein.
#### Verbindung prüfen
Prüfe zunächst, ob der Ollama-Dienst läuft:
```bash
systemctl status ollama
```
Wenn er aktiv ist, teste die direkte Verbindung aus dem NPM-Container:
```bash
curl http://<IP-des-Ollama-Containers>:11434/api/tags
```
Wenn keine Antwort kommt, stimmt etwas mit der Firewall oder dem Routing nicht.
#### Firewall-Regeln prüfen
```bash
ufw status numbered
```
Achte darauf, dass die IP-Adresse des NPM-Containers für Port 11434 freigegeben ist.
Wenn keine entsprechende Regel vorhanden ist, füge sie hinzu:
```bash
ufw allow from <IP-des-NPM-Containers> to any port 11434
ufw reload
```
Danach den Zugriff erneut testen.
Wenn du dich vertippt hast, kannst du falsche Regeln mit
```bash
ufw delete <Nummer>
```
entfernen. Die Nummer siehst du in der Ausgabe von `ufw status numbered`.
> [!TIP]
> Wenn der Browser trotz korrekter Firewall keine Verbindung aufbaut, starte den NPM-Container neu:
> ```bash
> docker restart npm-app
> ```
### Modelle laden nicht oder brechen beim Download ab
Wenn `ollama pull` mit Fehlermeldungen stoppt oder sehr langsam lädt, liegt das meist an DNS-Problemen oder instabiler Verbindung.
#### Internetverbindung prüfen
```bash
ping google.com
```
Wenn keine Antwort kommt, fehlt die Netzverbindung.
Prüfe die DNS-Einstellungen:
```bash
cat /etc/resolv.conf
```
Falls die Datei leer ist oder fehlerhafte Einträge enthält, setze die Nameserver neu (z. B. `1.1.1.1` oder `8.8.8.8`).
#### Download neu starten
Wenn ein Modell unvollständig heruntergeladen wurde, entferne es und lade es neu:
```bash
ollama rm mistral
ollama pull mistral
```
> [!NOTE]
> Wenn die Verbindung regelmäßig abbricht, liegt das Problem meist am Hostnetzwerk oder einer Proxy-Instanz.
> Teste den Download direkt im Hostsystem wenn er dort stabil ist, prüfe die Container-Netzwerkkonfiguration.
### Hohe CPU- oder RAM-Auslastung
Wenn Ollama dauerhaft hohe CPU-Last oder Speicherverbrauch zeigt, liegt das meist an zu vielen gleichzeitig laufenden Prozessen.
```bash
htop
```
Damit kannst du sehen, welches Modell gerade aktiv ist.
Beende unnötige Prozesse mit:
```bash
pkill ollama
```
Starte den Container anschließend neu, um Speicher freizugeben:
```bash
reboot
```
Wenn die Auslastung danach weiter hoch bleibt, erhöhe die CPU-Zuteilung oder reduziere die Anzahl gleichzeitig geladener Modelle.
> [!TIP]
> Eine dedizierte CPU-Zuweisung in Proxmox (z. B. 2 Kerne fest, keine Lastverteilung) sorgt für stabileres Verhalten.
### Logdateien und Statusüberwachung
Ollama protokolliert alle Ereignisse über das Systemjournal.
Das ist hilfreich, um Startverhalten und API-Aufrufe nachzuvollziehen.
```bash
journalctl -u ollama -f
```
Damit siehst du in Echtzeit, welche Anfragen ankommen und ob Fehler auftreten.
> [!TIP]
> Wenn Ollama längere Zeit stabil läuft, ändere an der Grundkonfiguration nichts.
> Teste neue Modelle oder Versionen immer zuerst in einem separaten Container.
> Das verhindert Konflikte und sichert dir ein zuverlässiges Hauptsystem.
---
## Ergebnis
Mit diesem Kapitel hast du ein voll funktionsfähiges, lokales KI-System in dein UCC integriert.
Ollama läuft stabil, ist abgesichert und kann sowohl über die Konsole als auch über die interne API genutzt werden.
Alle Vorgänge bleiben vollständig innerhalb deiner eigenen Infrastruktur keine Cloud, keine externen Server, keine Abhängigkeiten.
### Dein aktueller Stand
- **Ollama-Container** ist eingerichtet und betriebsbereit
- **API-Zugriff** funktioniert sicher über den internen Proxy
- **Modelle Mistral und Phi-3** sind geladen und getestet
- **Firewall- und Zugriffsschutz** sind aktiv
- **CLI-Nutzung** erlaubt direkte Arbeit im Container
- **Fehlerdiagnose und Logs** sind bekannt und überprüft
Damit steht dir nun ein autarkes, datensicheres KI-System zur Verfügung,
das sich in deine bestehende UCC-Umgebung nahtlos einfügt.
Du kannst Ollama direkt für eigene Projekte verwenden oder als Grundlage für zukünftige Erweiterungen nutzen.
> [!TIP]
> In den erweiterten Kapiteln werden diese Grundlagen ausgebaut:
> Dort geht es um komfortablere Bedienung, Automatisierungen und erweiterte Einsatzmöglichkeiten
> die Basis bleibt jedoch immer dein hier aufgebautes, lokales System.
👉 **Screenshot geeignet:** Proxmox-Interface mit aktivem Ollama-Container, daneben NPM- und n8n-Container sichtbar