Ollama, ein Werkzeug um Large Language Models lokal auszuführen, kann auch auf einem Server z. B. unter Ubuntu 24.04 genutzt werden. Zur Installation wird das Installationsskript auf dem Server ausgeführt:
curl -fsSL https://ollama.com/install.sh | sh
Dieses Skript legt einen Nutzer ollama auf dem System an und installiert Ollama:
curl -fsSL https://ollama.com/install.sh | sh >>> Installing ollama to /usr/local >>> Downloading ollama-linux-amd64.tar.zst ######################################################################## 100.0% >>> Creating ollama user... >>> Adding ollama user to render group... >>> Adding ollama user to video group... >>> Adding current user to ollama group... >>> Creating ollama systemd service... >>> Enabling and starting ollama service... Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service. >>> The Ollama API is now available at 127.0.0.1:11434. >>> Install complete. Run "ollama" from the command line.
Anschließend kann Ollama über das Kommando ollama gesteuert werden. Ein erstes Modell könnte mittels:
ollama run gpt-oss
heruntergeladen und ausgeführt werden. Soll das Modell wieder gestoppt werden, so kann der Befehl:
ollama stop gpt-oss
genutzt werden. Soll ein Modell nur heruntergeladen werden, kann hierfür das Subkommando pull genutzt werden:
ollama pull gpt-oss
Die Daten von Ollama werden im Ordner /usr/share/ollama/ gespeichert. Dort finden sich auch die Modelle im Unterordner .ollama/models. Wer die aktuell laufenden Modelle sehen möchte, kann dies mit dem Befehl:
ollama ps
bewerkstelligen. Das Kommando:
ollama list
hingegen listet alle installierten Modelle auf. Ollama selbst stellt unter 127.0.0.1:11434 eine API bereit, die bei einem sinnvoll konfigurierten Server allerdings nicht von außen erreichbar sein sollte.
Wer diese API von außen erreichbar machen möchte, kann Nginx als Reverse Proxy nutzen. Dazu muss die Datei /etc/systemd/system/ollama.service angepasst und dort kann das Interface auf welchen gehört werden soll, sowie die erlaubten Origins konfiguriert werden:
Environment="OLLAMA_HOST=0.0.0.0" Environment="OLLAMA_ORIGINS=*"
Danach muss die Systemd–Unit neu gestartet werden:
systemctl daemon-reexec systemctl daemon-reload systemctl restart ollama
Anschließend kann die eigentliche Nginx-Konfiguration erstellt werden:
map $http_authorization $allow_ollama {
default 0;
"Bearer secret123" 1;
"Bearer secret345" 1;
}
server {
server_name api.example.org;
...
# Ollama
location ^~ /ollama/ {
# Auth
if ($allow_ollama = 0) { return 401; }
# Proxy pass
proxy_pass http://localhost:11434/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s; # Upstream TCP connect timeout
proxy_send_timeout 60s; # Upstream request send timeout
proxy_read_timeout 300s; # Upstream response read timeout
send_timeout 60s; # Client response send timeout
# Do not forward the token to the backend
proxy_set_header Authorization "";
}
}
In dieser wird eine Map mit Bearern definiert, die der Authentifizierung dienen und die API wird über eine Reverse–Proxy-Konfiguration nach außen gegeben. Ein Beispiel-Aufruf könnte dann wie folgt aussehen:
curl https://api.example.org/ollama/api/chat \
-H "Content-Type: application/json" \
-H "Authorization: Bearer secret123" \
-d '{
"model": "gpt-oss",
"messages": [
{ "role": "user", "content": "Schreibe einen Haiku über den Frühling." }
],
"stream": false
}'
Und schon läutet das Ergebnis den Frühling ein:
Frühling ruft leise,
Bäume wachen, Sonne lacht,
Träume fliegen hoch.