Tutorials  /  Ubuntu

Ollama auf Ubuntu 24.04 installieren und als Dienst betreiben

LLudwig · August 2026 ·9 Min. Lesezeit ·Ubuntu, Tutorial

Ein per Hand gestartetes ollama serve beendet sich, sobald die SSH-Session schließt, und überlebt keinen Reboot. Diese Anleitung installiert Ollama auf Ubuntu 24.04 LTS, konfiguriert den mitgelieferten systemd-Dienst über eine Drop-in-Datei und stellt die HTTP-API kontrolliert im Netz bereit.

Was ist Ollama?

Ollama ist ein lokaler Laufzeit-Server für große Sprachmodelle, der Modelle im GGUF-Format verwaltet, sie in RAM oder VRAM lädt und über eine HTTP-API auf Port 11434 für Clients bereitstellt.

Das Linux-Installationsskript legt neben der Binary auch einen Systembenutzer ollama und eine systemd-Unit an. Der Dauerbetrieb als Dienst unterscheidet sich damit deutlich vom manuellen Start im Terminal:

Aspekt ollama serve im Terminal systemd-Dienst
Start nach Reboot Nein Ja, über systemctl enable
Überlebt SSH-Logout Nein Ja
Logs stdout im Terminal journalctl -u ollama
Konfiguration Shell-Variablen Drop-in mit Environment=
Läuft als dein Benutzer Systembenutzer ollama

Voraussetzungen

  • Ubuntu 24.04 LTS (Server oder Desktop), systemd 255
  • Ein Benutzerkonto mit sudo-Rechten
  • Mindestens 8 GB RAM für 3B-Modelle, 16 GB für 7B- und 8B-Modelle in 4-Bit-Quantisierung
  • Rund 20 GB freier Speicherplatz für die Modellgewichte
  • Optional eine NVIDIA-GPU mit installiertem Treiber. Ohne GPU läuft die Inferenz auf der CPU, spürbar langsamer, aber funktional identisch

Als Testumgebung eignet sich eine skalierbare Cloud-VM mit dediziertem oder geteiltem CPU-Anteil, weil du RAM und Storage nachträglich erhöhen kannst, sobald ein größeres Modell dazukommt.

Prüfe vorab Architektur, Arbeitsspeicher und freien Platz:

Konsole
$ uname -m
x86_64
$ free -g | awk '/Mem:/ {print $2" GB RAM"}'
$ df -h /var

Ollama unterstützt unter Linux x86_64 und arm64. Andere Architekturen bricht das Installationsskript mit einer Fehlermeldung ab.

Ollama installieren

Installationsskript prüfen

Das offizielle Skript unter https://ollama.com/install.sh schreibt nach /usr/local und legt einen Systembenutzer an. Lade es herunter und sieh es dir an, bevor du es ausführst:

Konsole
$ curl -fsSL https://ollama.com/install.sh -o /tmp/ollama-install.sh
$ less /tmp/ollama-install.sh

Relevant sind drei Stellen: das Zielverzeichnis /usr/local/bin/ollama, die Funktion, die den Benutzer ollama anlegt, und der Block, der die Unit /etc/systemd/system/ollama.service schreibt.

Installation ausführen

Konsole
$ sh /tmp/ollama-install.sh
>>> Installing ollama to /usr/local
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...

Das Skript ruft intern sudo auf und fragt bei Bedarf nach deinem Passwort. Anschließend prüfst du Version und Dienststatus:

Konsole
$ ollama --version
ollama version is 0.12.3
$ systemctl is-active ollama
active

Die ausgegebene Versionsnummer richtet sich nach dem aktuellen Release und weicht bei dir ab. Wichtig ist nur, dass der Befehl ohne Fehler antwortet und der Dienst active meldet.

Wenn du kein Skript ausführen willst, funktioniert auch der manuelle Weg über das Release-Archiv. Die Unit-Datei musst du dann selbst anlegen:

Konsole
$ curl -fsSL https://ollama.com/download/ollama-linux-amd64.tgz -o /tmp/ollama.tgz
$ sudo tar -C /usr -xzf /tmp/ollama.tgz
$ sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
VM

Passende Infrastruktur bei centron

Zum Mitmachen braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff, stundengenau abgerechnet und in Sekunden startklar. Cloud-Server mieten →

Warum ist Ollama nach der Installation nur lokal erreichbar?

Ollama lauscht nach der Installation ausschließlich auf 127.0.0.1:11434, weil der Server keine Authentifizierung mitbringt: Jeder Client, der den Port erreicht, darf Modelle laden, löschen und beliebige Prompts ausführen.

Die Bindung an Localhost ist deshalb kein Versehen, sondern die einzige sichere Voreinstellung. Sobald du OLLAMA_HOST auf 0.0.0.0 änderst, brauchst du eine zweite Schutzschicht: eine Firewall-Regel auf Quell-IP-Ebene, ein privates Netz oder einen vorgelagerten Reverse-Proxy mit Basic Auth oder mTLS. Ein offener Port 11434 im Internet ist gleichbedeutend mit offenem Zugriff auf deine GPU.

Den systemd-Dienst konfigurieren

Die von Ollama ausgelieferte Unit wird bei jedem Update überschrieben. Konfiguriere den Dienst deshalb ausschließlich über eine Drop-in-Datei unter /etc/systemd/system/ollama.service.d/.

graph TD
    A["systemd startet ollama.service"] --> B["Drop-in: override.conf"]
    B --> C["ollama serve lauscht auf OLLAMA_HOST"]
    D["Client-Anfrage an /api/generate"] --> C
    C --> E{"Modell bereits im Speicher?"}
    E -->|ja| F["Antwort direkt erzeugen"]
    E -->|nein| G["Gewichte aus OLLAMA_MODELS lesen"]
    G --> H{"GPU erkannt?"}
    H -->|ja| I["Layer in den VRAM übertragen"]
    H -->|nein| J["Berechnung über die CPU"]
    I --> F
    J --> F
    F --> K{"OLLAMA_KEEP_ALIVE abgelaufen?"}
    K -->|ja| L["Modell aus dem Speicher entfernen"]
    K -->|nein| M["Modell bleibt geladen"]

Drop-in-Datei anlegen

Konsole
$ sudo systemctl edit ollama.service

systemctl edit öffnet einen Editor und legt beim Speichern /etc/systemd/system/ollama.service.d/override.conf an. Trage deine Werte zwischen den Kommentarmarkierungen ein:

ini
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/var/lib/ollama/models"
Environment="OLLAMA_KEEP_ALIVE=10m"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_NUM_PARALLEL=2"

Die wichtigsten Variablen im Überblick:

Variable Standard Wirkung
OLLAMA_HOST 127.0.0.1:11434 Bind-Adresse und Port des Servers
OLLAMA_MODELS /usr/share/ollama/.ollama/models Ablageort der Modellgewichte
OLLAMA_KEEP_ALIVE 5m Verweildauer eines Modells im Speicher nach der letzten Anfrage
OLLAMA_MAX_LOADED_MODELS 3 pro GPU Anzahl gleichzeitig geladener Modelle
OLLAMA_NUM_PARALLEL automatisch Gleichzeitige Anfragen pro Modell

OLLAMA_KEEP_ALIVE=-1 hält ein Modell dauerhaft geladen. Das eliminiert die Ladezeit beim ersten Request, blockiert aber den belegten VRAM permanent.

Modellverzeichnis verschieben

Modelle sind groß: Ein 8B-Modell in Q4-Quantisierung belegt rund 4,7 GB, ein 70B-Modell über 40 GB. Wenn /usr auf einer knappen Root-Partition liegt, lege das Verzeichnis auf ein separates Volume und übergib den Pfad per OLLAMA_MODELS. Das Verzeichnis muss dem Dienstbenutzer gehören, sonst startet der Server mit einem Rechtefehler:

Konsole
$ sudo mkdir -p /var/lib/ollama/models
$ sudo chown -R ollama:ollama /var/lib/ollama
$ sudo chmod 755 /var/lib/ollama

Liegt das Volume auf zusätzlichem Blockspeicher, prüfe vor dem Umzug, ob der Mount in /etc/fstab eingetragen ist. Fehlt der Eintrag, ist das Verzeichnis nach dem nächsten Reboot leer und Ollama lädt jedes Modell erneut herunter.

Zugriff begrenzen

Gib Port 11434 nur für die Quellen frei, die ihn tatsächlich brauchen:

Konsole
$ sudo ufw allow from 10.0.0.0/24 to any port 11434 proto tcp
$ sudo ufw reload
$ sudo ufw status numbered

Danach lädst du die Unit-Definitionen neu und startest den Dienst:

Konsole
$ sudo systemctl daemon-reload
$ sudo systemctl restart ollama
$ systemctl show ollama --property=Environment

Der letzte Befehl gibt die effektiv gesetzten Variablen aus. Erscheint dort noch der alte Wert, wurde das Drop-in nicht eingelesen.

Modell laden und ausführen

ollama pull spricht die lokale API an. Den Download schreibt der Server-Prozess, also landen die Dateien automatisch unter dem in OLLAMA_MODELS gesetzten Pfad. Du brauchst dafür keine Root-Rechte:

Konsole
$ ollama pull llama3.2:3b
$ ollama list
NAME             ID              SIZE      MODIFIED
llama3.2:3b      a80c4f17acd5    2.0 GB    9 seconds ago

Ein interaktiver Test im Terminal, beenden mit /bye:

Konsole
$ ollama run llama3.2:3b "Nenne drei journalctl-Optionen für Live-Logs."

Derselbe Aufruf über die HTTP-API, so wie ihn eine Anwendung absetzen würde:

Konsole
$ curl -s http://localhost:11434/api/generate \
  -d '{"model":"llama3.2:3b","prompt":"Was macht systemctl daemon-reload?","stream":false}' \
  | jq -r '.response'

Ollama stellt zusätzlich einen OpenAI-kompatiblen Endpunkt unter /v1/chat/completions bereit. Bestehende Clients funktionieren damit, wenn du die Base-URL auf http://<server-ip>:11434/v1 setzt und einen beliebigen API-Key-String mitgibst.

Verifikation

Vier Prüfungen zeigen, dass Setup und Dauerbetrieb stimmen:

Konsole
$ systemctl is-enabled ollama
enabled
$ curl -s http://localhost:11434/api/tags | jq -r '.models[].name'
llama3.2:3b
$ ollama ps
NAME             ID              SIZE      PROCESSOR    UNTIL
llama3.2:3b      a80c4f17acd5    3.5 GB    100% GPU     9 minutes from now
$ sudo reboot

Die Spalte PROCESSOR in ollama ps ist der schnellste Hinweis auf die tatsächliche Ausführungsart. Steht dort 100% CPU, obwohl eine GPU verbaut ist, greift der Abschnitt Troubleshooting. Nach dem Reboot muss systemctl is-active ollama erneut active melden, ohne dass du etwas startest.

Troubleshooting

curl: (7) Failed to connect to port 11434

Der Dienst läuft nicht oder lauscht auf einer anderen Adresse. Prüfe beides:

Konsole
$ systemctl status ollama --no-pager
$ sudo ss -tlnp | grep 11434
$ journalctl -u ollama -n 50 --no-pager

Zeigt ss nur 127.0.0.1:11434, obwohl du 0.0.0.0 gesetzt hast, wurde das Drop-in nicht geladen. Kontrolliere den Dateinamen: Er muss auf .conf enden.

Error: llama runner process has terminated

Meist fehlt Arbeitsspeicher. Der Kernel beendet den Prozess über den OOM-Killer, sichtbar in dmesg:

Konsole
$ sudo dmesg -T | grep -i "out of memory"

Wähle ein kleiner quantisiertes Modell (:q4_K_M statt :q8_0) oder erhöhe den RAM der Instanz.

Modell läuft auf der CPU, obwohl eine NVIDIA-GPU vorhanden ist

Ollama erkennt die GPU nur, wenn der Treiber vor dem Dienststart geladen war:

Konsole
$ nvidia-smi
$ sudo ubuntu-drivers install
$ sudo reboot
$ journalctl -u ollama | grep -i "inference compute"

Die Zeile mit inference compute nennt das erkannte Gerät und dessen VRAM. Fehlt sie komplett, sieht Ollama keine kompatible GPU.

permission denied beim Schreiben der Modelle

Das über OLLAMA_MODELS gesetzte Verzeichnis gehört nicht dem Dienstbenutzer. Korrigiere Eigentümer und Rechte mit sudo chown -R ollama:ollama /var/lib/ollama und starte den Dienst neu.

Fazit

Ollama läuft auf Ubuntu 24.04 nach der Installation bereits als systemd-Dienst. Die eigentliche Arbeit steckt in der Drop-in-Datei: OLLAMA_HOST entscheidet über die Erreichbarkeit, OLLAMA_MODELS über den Speicherort und OLLAMA_KEEP_ALIVE über die Latenz der ersten Anfrage. Setze OLLAMA_HOST=0.0.0.0 nur zusammen mit einer Firewall-Regel oder einem authentifizierenden Reverse-Proxy, denn die API selbst prüft keine Zugangsdaten.

Weiterlesen

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

Ludwig Technische Redaktion

Schreibt bei centron über Linux-Administration, Container und Datenbanken – mit Fokus auf Anleitungen, die im Betrieb tatsächlich funktionieren.

Kategorie Ubuntu
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren