Ollama als Systemd-Dienst
Was dieser Artikel über Ollama als Systemd-Dienst behandelt
- Wie Ollama mit Systemd als Dienst läuft.
- Wie man Umgebungsvariablen und Optionen setzt.
- Wie man Status prüft, neu startet und Fehler sucht.
- Wie man Ollama sicher und stabil im Hintergrund betreibt.
Einleitung: Ollama als Systemd-Dienst
Wer Ollama regelmässig auf einem Server oder in einem Proxmox-LXC nutzt, möchte nicht bei jedem Neustart manuell das Programm starten. Systemd ist der Standard-Diensteverwalter unter den meisten Linux-Distributionen und eignet sich hervorragend, um Ollama automatisch zu starten, zu überwachen und bei Abstürzen neu zu starten.
Dieser Artikel zeigt, wie der Ollama-Systemd-Service konfiguriert, angepasst und gewartet wird.
Wichtige Begriffe
- Systemd: Init-System und Diensteverwalter unter Linux.
- Service: Konfiguration für einen dauerhaften Prozess.
- Unit-Datei: Datei, die den Dienst beschreibt.
- Environment: Umgebungsvariable für den Dienst.
- Override: Ergänzende Konfiguration, die die Hauptkonfiguration erweitert.
- Restart-Policy: Verhalten bei Abstürzen.
- Journal: Systemprotokoll für Dienste.
Standard-Installation
Wenn Ollama mit dem offiziellen Installationsskript installiert wird, legt es meist eine Systemd-Unit an. Prüfen:
systemctl status ollama
Falls der Dienst existiert, ist er wahrscheinlich bereits aktiviert und läuft im Hintergrund.
Manuelle Service-Datei
Falls keine Unit vorhanden ist, kann man sie manuell erstellen:
sudo tee /etc/systemd/system/ollama.service <<EOF
[Unit]
Description=Ollama Service
After=network.target
[Service]
Type=simple
User=ollama
Group=ollama
WorkingDirectory=/home/ollama
ExecStart=/usr/local/bin/ollama serve
Restart=on-failure
RestartSec=10
Environment="HOME=/home/ollama"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[Install]
WantedBy=multi-user.target
EOF
Danach:
sudo systemctl daemon-reload
sudo systemctl enable --now ollama
Umgebungsvariablen setzen
Eigene Umgebungsvariablen sollten nicht direkt in der Haupt-Service-Datei geändert werden, sondern über eine Override-Datei:
sudo systemctl edit ollama
Ein Editor öffnet sich. Beispiel:
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="CUDA_VISIBLE_DEVICES=0"
Danach:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Wichtige Umgebungsvariablen
- OLLAMA_HOST: Bind-Adresse und Port.
- OLLAMA_NUM_PARALLEL: Parallel laufende Anfragen.
- OLLAMA_MAX_LOADED_MODELS: Maximale Anzahl gleichzeitig geladener Modelle.
- OLLAMA_MODELS: Alternativer Pfad für Modell-Dateien.
- CUDA_VISIBLE_DEVICES: Bestimmte Nvidia-GPU auswählen.
- HIP_VISIBLE_DEVICES: Bestimmte AMD-GPU auswählen.
Status prüfen
systemctl status ollama
systemctl is-active ollama
systemctl is-enabled ollama
Logs ansehen
journalctl -u ollama -f
journalctl -u ollama --since "1 hour ago"
Neustart, Stoppen und Starten
sudo systemctl restart ollama
sudo systemctl stop ollama
sudo systemctl start ollama
GPU-Nutzung prüfen
ollama ps
nvidia-smi
Wenn Ollama im Systemd-Kontext läuft, muss der Benutzer Zugriff auf die GPU haben. Zum Beispiel muss der Dienstbenutzer in der video oder render Gruppe sein.
Sicherheit
- Nicht als root laufen lassen: Ein eigener
ollama-Benutzer ist sicherer. - OLLAMA_HOST einschränken: Standard
127.0.0.1, nur bei Bedarf ins Netzwerk binden. - Keine Secrets in der Unit: API-Keys oder Passwörter nicht direkt speichern.
- Dateirechte: Modellverzeichnis sollte dem
ollama-Benutzer gehören.
Mehrere Ollama-Instanzen
Für getrennte Modelle oder Benutzer können mehrere Services definiert werden, zum Beispiel ollama-8b.service und ollama-70b.service, die auf unterschiedlichen Ports lauschen. Das ist aber nur in Spezialfällen sinnvoll, da mehrere Instanzen Speicher duplizieren können.
Typische Stolpersteine
- Dienst startet nicht: Benutzer oder Pfad falsch.
- GPU nicht erkannt: Benutzer fehlt in
video/renderoder Treiber nicht installiert. - Port belegt: Ein anderer Prozess nutzt
11434. - Modellverzeichnis nicht gefunden:
OLLAMA_MODELSfalsch gesetzt oder keine Rechte. - Override wird nicht geladen:
systemctl daemon-reloadvergessen. - Zu viele parallele Anfragen: System überlastet.
Weiterführende Links und Infos
- BotServ.de Ollama Performance
- BotServ.de Ollama absichern
- BotServ.de Proxmox LXC vs. VM
- BotServ.de Proxmox Storage
FAQ: Ollama als Systemd-Dienst
Wird Ollama automatisch gestartet?
Ja, wenn der Dienst mit systemctl enable aktiviert wurde.
Wo finde ich die Ollama-Logs?
Mit journalctl -u ollama.
Wie setze ich Umgebungsvariablen?
Über systemctl edit ollama in einer Override-Datei.
Kann ich Ollama als root laufen lassen? Technisch ja, aber aus Sicherheitsgründen nicht empfohlen.
Was ist, wenn Ollama beim Boot nicht startet?
systemctl status ollama und journalctl -u ollama prüfen.
Quellen und weiterführende Literatur
- Ollama Docs: https://github.com/ollama/ollama/blob/main/docs/
- Systemd ExecStart: https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html
- journalctl: https://www.freedesktop.org/software/systemd/man/latest/journalctl.html
Zusammenfassung: Ollama als Systemd-Dienst
Ollama lässt sich bequem als Systemd-Dienst betreiben, damit es automatisch startet und überwacht wird. Über Override-Dateien lassen sich Umgebungsvariablen wie Host, Port, Parallelität und Modellpfad sicher anpassen, ohne die Haupt-Service-Datei zu ändern. Wichtig sind ein eigener Benutzer, korrekte Berechtigungen für GPU und Modellverzeichnis sowie die regelmässige Prüfung der Logs mit journalctl. Wer Systemd richtig nutzt, bekommt einen stabilen Ollama-Server für das lokale KI-Setup.


