Ollama: instalacija na Linux serveru od nule
Do sada je sve bila priprema: računica memorije, drajveri, kvantizacija. Ovim tekstom se prvi put pokreće model.
Ollama je najbrži put do toga. Jedna komanda instalira servis, druga preuzima model, treća otvara razgovor. Sve ostalo — systemd, mrežni pristup, Docker, produkciona inferencija — nadogradnja je na ovo.
Šta Ollama zapravo jeste
Iz ugla administratora, Ollama je HTTP servis koji sluša na portu 11434 i ima klijent u terminalu. Ispod haube koristi llama.cpp, ali od tebe krije kompajliranje, izbor slojeva za karticu i sklapanje prompta u format koji model očekuje.
| Preuzima na sebe | Ostaje tvoj posao |
|---|---|
| Preuzimanje i čuvanje modela | Drajveri i hardver |
| Raspoređivanje slojeva na karticu | Izbor modela koji staje u memoriju |
| Format prompta po modelu | Mrežni pristup i zaštita |
| HTTP API, uključujući OpenAI-kompatibilan | Nadzor i kapacitet |
Ollama je namenjena postavci sa jednim ili nekoliko korisnika. Kada ti treba desetine paralelnih zahteva, prelazi se na vLLM, o čemu ima poseban tekst. Za sve ostalo je Ollama sasvim dovoljna i ostaje najjednostavnije rešenje.
Pre instalacije
Dve provere. Prva — da li kartica radi, o čemu detaljno govori tekst o drajverima:
$ nvidia-smi $ lsmod | grep nvidia_uvm
Ako nvidia_uvm nedostaje, Ollama će se instalirati bez problema i tiho raditi na procesoru. Nikakvu grešku nećeš videti — samo brzinu od nekoliko tokena u sekundi.
Druga provera je prostor na disku. Modeli su veliki i nagomilavaju se brže nego što očekuješ:
$ df -h /usr/share
Za početak računaj bar pedeset gigabajta. Ako je taj particija tesna, u odeljku o smeštanju modela stoji kako se putanja menja.
Instalacija
Zvaničan način je skripta:
$ curl -fsSL https://ollama.com/install.sh | sh
Skripta radi četiri stvari: preuzima binarni fajl u /usr/local/bin/ollama, pravi sistemskog korisnika ollama, postavlja systemd jedinicu i pokreće je. Prepoznaje i NVIDIA i AMD kartice i sama povlači odgovarajuće biblioteke.
Ako ti pravilo firme ne dozvoljava izvršavanje skripte sa interneta — a to je razumno pravilo — prvo je pročitaj:
$ curl -fsSL https://ollama.com/install.sh -o install.sh $ less install.sh $ sh install.sh
Ručna instalacija
Bez skripte, sa arhivom:
$ curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama.tgz $ sudo tar -C /usr -xzf ollama.tgz
Ovo postavlja samo binarni fajl. Korisnika i servis praviš sam:
$ sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
Kompletna systemd jedinica sa svim podešavanjima je tema sledećeg teksta. Za sada je dovoljno da servis radi.
Provera
$ ollama --version ollama version is 0.12.3
$ systemctl status ollama
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled)
Active: active (running) since Sat 2026-08-22 14:03:11 CEST
Da servis stvarno odgovara:
$ curl http://localhost:11434 Ollama is running
Ako ovde nema odgovora, pogledaj logove — komanda je ista kao za svaki drugi servis, kako pokazuje tekst o journalctl:
$ sudo journalctl -u ollama -n 50 --no-pager
Prvi model
Preuzimanje:
$ ollama pull qwen3:8b pulling manifest pulling 3a1b8c9d2e4f... 100% ▕████████████▏ 4.9 GB verifying sha256 digest writing manifest success
Razgovor u terminalu:
$ ollama run qwen3:8b
>>> Kako da vidim koji procesi najviše troše memoriju?
Koristi komandu ps sa sortiranjem:
ps aux --sort=-%mem | head -10
>>> /bye
Komanda run preuzima model ako ga nema, pa možeš i preskočiti pull. Korisne komande unutar razgovora: /bye izlaz, /clear pražnjenje konteksta, /? spisak svih.
Jedno pitanje bez ulaska u razgovor:
$ ollama run qwen3:8b "Objasni šta radi komanda umask u jednoj rečenici"
Ovaj oblik čita i sa standardnog ulaza, što je osnova za sve kasnije skripte:
$ journalctl -p err -n 30 --no-pager | ollama run qwen3:8b "Sažmi ove greške"
Izbor varijante
Bez oznake dobijaš podrazumevanu kvantizaciju, po pravilu četvorobitnu. Varijanta se traži izričito:
$ ollama pull qwen3:8b-q8_0 $ ollama pull qwen3:27b-q4_K_M
Koja ti varijanta odgovara, računa tekst o kvantizaciji, a koliki model uopšte staje — tekst o proceni VRAM-a. Spisak porodica modela nalazi se u pregledu open-weight modela.
Provera da model radi na kartici
Ovo je najvažnija provera u celom tekstu.
$ ollama ps NAME ID SIZE PROCESSOR UNTIL qwen3:8b a1b2c3d4e5f6 6.2 GB 100% GPU 4 minutes from now
Kolona PROCESSOR mora da pokaže sto posto GPU. Ako piše nešto poput 58%/42% CPU/GPU, deo slojeva radi na procesoru i brzina pada višestruko — razlog je razrađen u tekstu o CPU i GPU inferenciji.
Kolona UNTIL pokazuje koliko model još stoji u memoriji. Podrazumevano je pet minuta neaktivnosti, posle čega se izbacuje i sledeći upit čeka ponovno učitavanje.
$ OLLAMA_KEEP_ALIVE=30m ollama serve
Vrednost -1 drži model u memoriji trajno. Na serveru sa jednim modelom to je ono što želiš.
Gde modeli žive
Kada Ollama radi kao servis, modeli idu u početni direktorijum sistemskog korisnika:
$ sudo du -sh /usr/share/ollama/.ollama/models 18G /usr/share/ollama/.ollama/models
Ako je pokrećeš kao svoj korisnik, putanja je ~/.ollama/models. Struktura je ista u oba slučaja:
$ sudo ls /usr/share/ollama/.ollama/models blobs manifests
U blobs stoje sami fajlovi modela, u manifests opisi koji povezuju naziv sa fajlovima. Više oznaka može da deli isti blob, pa zbir prikazanih veličina iz ollama list ume da bude veći od stvarnog zauzeća na disku.
Premeštanje na drugi disk
Korenska particija se popuni brzo. Putanja se menja promenljivom:
$ sudo systemctl stop ollama $ sudo mkdir -p /data/ollama $ sudo mv /usr/share/ollama/.ollama /data/ollama/ $ sudo chown -R ollama:ollama /data/ollama
$ sudo systemctl edit ollama
U otvoreni fajl:
[Service] Environment="OLLAMA_MODELS=/data/ollama/.ollama/models"
$ sudo systemctl daemon-reload $ sudo systemctl restart ollama $ ollama list
Ako je spisak modela nakon ovoga prazan, putanja ili vlasništvo nisu tačni — proveri jedno pa drugo.
Osnovne komande
| Komanda | Šta radi |
|---|---|
ollama list |
Preuzeti modeli i njihove veličine |
ollama ps |
Šta je trenutno učitano u memoriju |
ollama show |
Parametri, kontekst, kvantizacija, licenca |
ollama rm |
Brisanje modela sa diska |
ollama cp |
Kopija pod drugim imenom |
ollama create |
Novi model iz Modelfile opisa |
ollama stop |
Izbacivanje modela iz memorije |
$ ollama show qwen3:8b
Model
architecture qwen3
parameters 8.2B
context length 40960
quantization Q4_K_M
Capabilities
completion
tools
Odeljak Capabilities vredi pogledati pre nego što nešto planiraš. Ako tu nema stavke tools, model ne podržava pozivanje alata i agentske postavke sa njim neće raditi.
Modelfile
Podešavanja koja stalno ponavljaš mogu se zapisati u model. Modelfile je tekstualni opis nad postojećim modelom:
$ nano Modelfile
FROM qwen3:8b PARAMETER temperature 0.1 PARAMETER num_ctx 8192 SYSTEM """ Ti si pomoćnik za administraciju Linux servera. Odgovaraj kratko i konkretno, na srpskom. Uz svaku komandu navedi šta tačno radi. Nikada ne predlaži komandu koja briše podatke bez izričitog upozorenja. """
$ ollama create linux-pomocnik -f Modelfile $ ollama run linux-pomocnik
Novi model ne zauzima dodatni prostor jer deli iste fajlove sa izvornim — čuva se samo opis. Najkorisniji parametri:
| Parametar | Značenje |
|---|---|
temperature |
Odstupanje od najverovatnijeg tokena; nisko za komande |
num_ctx |
Veličina konteksta; direktno troši VRAM |
num_predict |
Gornja granica dužine odgovora |
repeat_penalty |
Kazna za ponavljanje; 1.1 ako se model vrti u krug |
stop |
Niz na kome generisanje prestaje |
Pazi na num_ctx. Podizanje konteksta na sto tisuća tokena umeće model koji je do juče stajao na kartici da se prelije na procesor. Računicu daje tekst o proceni VRAM-a.
Sopstveni GGUF fajl
Model preuzet mimo Ollame se uvozi istim putem:
FROM ./model-q4_k_m.gguf
$ ollama create moj-model -f Modelfile
Odakle se takvi fajlovi preuzimaju, pokazuje tekst o Hugging Face CLI alatu.
API
Sve što radi klijent u terminalu dostupno je i preko HTTP-a. Ovo je deo koji ćeš zapravo koristiti u skriptama.
$ curl http://localhost:11434/api/generate -d '{
"model": "qwen3:8b",
"prompt": "Nabroj tri komande za pregled zauzeća diska",
"stream": false
}'
Bez "stream": false odgovor stiže kao niz JSON objekata, token po token. Za skripte je jednostavnije tražiti ceo odgovor odjednom.
Razgovor sa istorijom ide na drugu adresu:
$ curl http://localhost:11434/api/chat -d '{
"model": "qwen3:8b",
"messages": [
{"role": "system", "content": "Odgovaraj kratko."},
{"role": "user", "content": "Šta radi komanda ss -tulpn?"}
],
"stream": false
}'
Spisak modela u JSON obliku:
$ curl -s http://localhost:11434/api/tags | jq -r '.models[].name' qwen3:8b qwen3:27b-q4_K_M linux-pomocnik:latest
Postoji i OpenAI-kompatibilan put, zahvaljujući kome većina gotovih alata radi bez izmena:
$ curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:8b",
"messages": [{"role": "user", "content": "Zdravo"}]
}'
Detaljno o oblicima zahteva i odgovora ima u tekstu o OpenAI-kompatibilnom API-ju.
Servis podrazumevano sluša samo na 127.0.0.1. To je dobra podrazumevana vrednost i ne menjaj je dok ne pročitaš tekst o zaštiti — port sa modelom otvoren prema mreži je port bez ikakve autentifikacije.
Održavanje
Ažuriranje ide istom komandom kao instalacija:
$ curl -fsSL https://ollama.com/install.sh | sh $ sudo systemctl restart ollama
Modeli ostaju netaknuti. Brisanje onoga što se nakupilo:
$ ollama list $ ollama rm qwen3:27b-q4_K_M
Potpuno uklanjanje:
$ sudo systemctl stop ollama $ sudo systemctl disable ollama $ sudo rm /etc/systemd/system/ollama.service $ sudo rm /usr/local/bin/ollama $ sudo rm -rf /usr/share/ollama $ sudo userdel ollama
Praktični scenariji
Scenario 1: instalacija prošla, servis ne radi
$ sudo journalctl -u ollama -n 50 --no-pager
Najčešći uzrok je zauzet port 11434. Proveri ko ga drži:
$ sudo ss -tulpn | grep 11434
Scenario 2: sve radi, ali sporo
Prvo ollama ps i kolona PROCESSOR. Ako nije sto posto GPU, uzrok je prelivanje na procesor, a ne Ollama. Uzmi manji model ili nižu kvantizaciju.
Scenario 3: prvi odgovor kasni, ostali su brzi
Model se učitava u memoriju pri prvom upitu. Podigni OLLAMA_KEEP_ALIVE ili prihvati kašnjenje od nekoliko sekundi posle pauze.
Scenario 4: nema mesta na disku
$ sudo du -sh /usr/share/ollama/.ollama/models
Obriši nekorišćene modele ili premesti direktorijum na veći disk po uputstvu iz ovog teksta.
Scenario 5: model ne poštuje sistemski prompt
Proveri koristiš li instruct verziju. Base verzije samo nastavljaju tekst i uputstva ih se ne tiču. Oznaka stoji u nazivu modela.
Scenario 6: odgovori se seku na pola rečenice
Granica dužine izlaza. Podigni num_predict u Modelfile opisu ili je pošalji uz zahtev.
Kratka referenca
curl -fsSL https://ollama.com/install.sh | sh— instalacijaollama --version— provera instalacijecurl http://localhost:11434— provera servisaollama pull model— preuzimanjeollama run model— razgovor u terminaluollama run model "pitanje"— jedan upit, pogodno za skripteollama list— preuzeti modeliollama ps— učitano u memoriju, kolona PROCESSORollama show model— parametri i mogućnostiollama rm model— brisanjeollama create ime -f Modelfile— sopstvena varijantaOLLAMA_MODELS— putanja do modelaOLLAMA_KEEP_ALIVE— koliko model stoji u memoriji/api/generate,/api/chat,/api/tags— glavne API adrese/v1/chat/completions— OpenAI-kompatibilan put- Port 11434, podrazumevano samo na localhost
- 100% GPU u koloni PROCESSOR — jedina provera koja je bitna
Vežba
- Instaliraj Ollamu i potvrdi da servis radi preko
systemctl statusicurl. - Preuzmi model koji po računici staje u tvoju karticu, pa proveri
ollama pstokom generisanja. - Napravi Modelfile sa sistemskim promptom po svojoj meri i temperaturom 0.1, pa uporedi odgovore sa izvornim modelom.
- Pošalji isti upit kroz
ollama runi krozcurlna/api/generate. Uporedi oblik odgovora. - Napiši jednu komandu koja poslednjih dvadeset grešaka iz
journalctlpropušta kroz model. - Premesti direktorijum sa modelima na drugu putanju i potvrdi da
ollama listi dalje sve vidi.
Sledeći tekst u serijalu: Ollama kao systemd servis
Povezano:
- AI na Linux serveru — pregled celog serijala
- Kvantizacija u praksi — prethodni tekst
- Instalacija NVIDIA drajvera — preduslov za rad na kartici
- Koliko VRAM-a ti stvarno treba — koji model uopšte da preuzmeš
- systemctl — upravljanje servisima
Comments
Post a Comment