ติดตั้ง Ollama รัน AI/LLM บน VPS ฟรี
Ollama คือ runtime สำหรับรัน Large Language Models (LLM) แบบ local บน Linux ได้ง่ายมาก ด้วยคำสั่งเดียว รองรับโมเดลดัง เช่น Llama 3.1, Mistral, Gemma 2, Phi-3, Qwen 2.5 และอีกกว่า 100 โมเดลจาก Ollama Library แบบไม่ต้องเช่า GPU cloud ราคาแพง ข้อมูลทุกอย่างอยู่บน VPS ของคุณเองไม่รั่วไหลออกไปไหน เหมาะสำหรับนักพัฒนาที่ต้องการ private AI API หรือ chatbot ส่วนตัว
VPS ที่ใช้รัน Ollama ควรมี RAM อย่างน้อย 8GB สำหรับโมเดล 7B และ 16GB ขึ้นไปสำหรับโมเดล 13B+ CPU modern ก็เพียงพอ ไม่จำเป็นต้องมี GPU (แต่ถ้ามีก็เร็วขึ้นมาก) ตัวอย่างในบทความนี้ใช้ Ubuntu 22.04 LTS
ความต้องการระบบ
| Component | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 20.04+ | Ubuntu 22.04 LTS |
| RAM | 8 GB (7B model) | 16–32 GB (13B+) |
| Disk | 20 GB | 50+ GB (หลายโมเดล) |
| CPU | 4 cores | 8+ cores AVX2 |
| GPU | ไม่จำเป็น | NVIDIA 8GB+ VRAM |
ติดตั้ง Ollama บน Ubuntu/Debian
ติดตั้งด้วย official installer script ของ Ollama:
# อัปเดต package list ก่อน
sudo apt update && sudo apt upgrade -y
# ติดตั้ง Ollama ด้วย script ทางการ
curl -fsSL https://ollama.com/install.sh | sh
# ตรวจสอบ version ที่ติดตั้ง
ollama --version
Script จะ install Ollama binary ไปที่ /usr/bin/ollama และสร้าง systemd service ให้อัตโนมัติ
ดาวน์โหลดและรันโมเดล
Ollama ใช้คำสั่ง ollama run เพื่อ pull โมเดลและเริ่ม interactive chat:
# รัน Llama 3.2 3B (เบา เหมาะ RAM น้อย ~2GB)
ollama run llama3.2
# รัน Llama 3.1 8B (สมดุล ~5GB RAM)
ollama run llama3.1:8b
# รัน Mistral 7B (ภาษาอังกฤษดีมาก ~4GB RAM)
ollama run mistral
# รัน Gemma 2 9B (Google ~6GB RAM)
ollama run gemma2
# รัน Qwen 2.5 7B (ภาษาจีน/อังกฤษ ~5GB RAM)
ollama run qwen2.5
# ดูโมเดลที่ดาวน์โหลดแล้วทั้งหมด
ollama list
ใช้ Ollama REST API
Ollama เปิด HTTP API ที่ port 11434 โดยค่าเริ่มต้น สามารถใช้ curl ส่ง request ได้เลย:
# Generate text แบบ single response
curl http://localhost:11434/api/generate \
-d '{
"model": "llama3.1:8b",
"prompt": "อธิบาย Docker ให้เข้าใจง่ายใน 3 ประโยค",
"stream": false
}'
# Chat API (แบบ conversation)
curl http://localhost:11434/api/chat \
-d '{
"model": "llama3.1:8b",
"messages": [
{"role": "user", "content": "สวัสดี ช่วยอธิบาย VPS คืออะไร?"}
]
}'
# ดูรายการโมเดลที่พร้อมใช้ผ่าน API
curl http://localhost:11434/api/tags
ตั้งค่า Ollama ให้ listen ทุก interface
ค่าเริ่มต้น Ollama จะ bind แค่ 127.0.0.1 ถ้าต้องการเข้าถึงจาก network อื่นหรือผ่าน reverse proxy ต้องตั้ง environment variable:
# แก้ไข systemd service file
sudo systemctl edit ollama
# ใส่ content ต่อไปนี้ใน editor ที่เปิดขึ้นมา:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
# บันทึกและ reload
sudo systemctl daemon-reload
sudo systemctl restart ollama
# ตรวจสอบว่า listen 0.0.0.0 แล้ว
sudo ss -tlnp | grep 11434
ตั้ง Nginx Reverse Proxy สำหรับ Ollama API
ใช้ Nginx เป็น reverse proxy เพื่อเปิด Ollama บน domain พร้อม HTTPS:
# ติดตั้ง nginx (ถ้ายังไม่มี)
sudo apt install nginx -y
# สร้าง config file
sudo nano /etc/nginx/sites-available/ollama
# ใส่ content:
server {
listen 80;
server_name ai.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
proxy_read_timeout 300s;
# ป้องกัน public access ด้วย basic auth
auth_basic "Ollama API";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
# สร้าง htpasswd file
sudo apt install apache2-utils -y
sudo htpasswd -c /etc/nginx/.htpasswd myuser
# เปิด config
sudo ln -s /etc/nginx/sites-available/ollama /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
ติดตั้ง Open WebUI (หน้าเว็บสำหรับคุย)
Open WebUI คือ ChatGPT-like interface ที่ connect กับ Ollama ได้ทันที ติดตั้งผ่าน Docker:
# ติดตั้ง Docker (ถ้ายังไม่มี)
curl -fsSL https://get.docker.com | sh
# รัน Open WebUI ด้วย Docker
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
# ตรวจสอบ container ทำงาน
docker ps | grep open-webui
จากนั้นเปิดเบราว์เซอร์ไปที่ http://your-vps-ip:3000 สร้าง account แรก (admin) และเริ่มคุยกับ AI ได้เลย
ตั้งค่า systemd ให้ Ollama start อัตโนมัติ
# ตรวจสอบ service status
sudo systemctl status ollama
# เปิด auto-start
sudo systemctl enable ollama
# ดู log ของ Ollama
sudo journalctl -u ollama -f
สร้าง Modelfile — Custom AI Persona
Ollama รองรับ Modelfile คล้าย Dockerfile สำหรับสร้างโมเดล custom ที่มี system prompt ของตัวเอง:
# สร้าง Modelfile
cat > Modelfile << 'EOF'
FROM llama3.1:8b
PARAMETER temperature 0.7
PARAMETER top_p 0.9
SYSTEM """
คุณคือผู้เชี่ยวชาญ Linux และ VPS ที่ตอบคำถามเป็นภาษาไทย
ตอบสั้น กระชับ และให้ตัวอย่างคำสั่งเสมอ
"""
EOF
# สร้างโมเดล custom
ollama create thai-linux-expert -f Modelfile
# ทดสอบ
ollama run thai-linux-expert "nginx ทำงานช้า แก้ยังไง?"
ตรวจสอบว่า Ollama ทำงานถูกต้อง
# ตรวจสอบ service status
sudo systemctl status ollama
# ตรวจว่า port 11434 เปิดอยู่
sudo ss -tlnp | grep 11434
# ทดสอบ API health
curl http://localhost:11434/
# ดูรายการโมเดลที่มี
ollama list
# ทดสอบ inference ด้วย prompt สั้น
curl http://localhost:11434/api/generate \
-d '{"model":"llama3.2","prompt":"ping","stream":false}' | python3 -m json.tool
"response" และ "done": true แสดงว่า Ollama พร้อมใช้งานแล้ว
แก้ปัญหาที่พบบ่อย
Error: "model not found" หรือ "pull model manifest: file does not exist"
ชื่อโมเดลผิด หรือยังไม่ได้ download มา ให้ตรวจสอบชื่อที่ถูกต้อง:
# ดูโมเดลที่ download แล้ว
ollama list
# Pull โมเดลที่ต้องการ
ollama pull llama3.1:8b
# ตรวจสอบ disk space ว่าพอไหม
df -h /usr/share/ollama
Error: "out of memory" หรือ Ollama crash ขณะ load โมเดล
RAM ไม่พอสำหรับโมเดลที่เลือก ให้ใช้โมเดลขนาดเล็กกว่า หรือเพิ่ม swap:
# ตรวจสอบ RAM ที่เหลือ
free -h
# เพิ่ม swap 4GB
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# ลองใช้โมเดลขนาดเล็กแทน
ollama run llama3.2:1b # เพียง 1.3GB RAM
Ollama API ตอบช้ามากหรือ timeout
CPU inference ช้าเป็นเรื่องปกติ แต่ถ้าช้าผิดปกติให้ตรวจสอบ CPU usage และ model ที่ใช้:
# ดู CPU ขณะ inference
top -bn1 | head -20
# ตรวจ Ollama log ว่ามี error ไหม
sudo journalctl -u ollama -n 50
# ลอง quantized model ที่เบากว่า (Q4)
ollama pull llama3.1:8b-instruct-q4_0
Error: "bind: address already in use" port 11434
มี process อื่นใช้ port 11434 อยู่ หรือ Ollama instance ก่อนหน้าไม่ได้ปิด:
# ดูว่าอะไรใช้ port 11434 อยู่
sudo lsof -i :11434
# kill process เก่า
sudo kill -9 $(sudo lsof -ti :11434)
# restart ollama
sudo systemctl restart ollama
Open WebUI เชื่อมต่อ Ollama ไม่ได้ใน Docker
Docker network isolation ทำให้ container เข้าถึง host ไม่ได้ด้วย localhost ต้องใช้ host.docker.internal:
# ตรวจสอบว่า Ollama host ตั้งเป็น 0.0.0.0 แล้ว
sudo systemctl show ollama | grep OLLAMA_HOST
# หรือลอง recreate container ด้วย network host
docker run -d \
--network host \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://localhost:11434 \
--name open-webui2 \
ghcr.io/open-webui/open-webui:main
คำถามที่พบบ่อย
Ollama รัน CPU เท่านั้นได้ไหม ต้องมี GPU ไหม?
รัน CPU-only ได้ 100% Ollama รองรับ CPU inference ผ่าน llama.cpp แบบ out-of-the-box ความเร็วจะช้ากว่า GPU ประมาณ 5–20 เท่า แต่สำหรับ VPS ที่ใช้งานส่วนตัวหรือ batch inference ไม่ urgent ก็เพียงพอ VPS 8-core modern CPU จะ generate ได้ประมาณ 5–15 tokens/วินาที สำหรับโมเดล 7–8B
ข้อมูลที่ส่งให้ Ollama ออกไปที่อื่นไหม?
ไม่ออกเลย Ollama รันทุกอย่างบน VPS ของคุณ 100% ไม่มีการส่งข้อมูลกลับไปที่ Ollama server หรือที่ไหน inference เกิดขึ้น locally ทั้งหมด เหมาะสำหรับข้อมูล sensitive หรือ use case ที่ต้องการ privacy สูง
Ollama ต่างจาก LM Studio หรือ Jan ยังไง?
Ollama ออกแบบมาสำหรับ server/headless environment มี REST API ครบ เหมาะกับ VPS มาก LM Studio และ Jan เป็น desktop app ที่มี GUI สวยงาม เหมาะกับ MacBook/PC มากกว่า ถ้าต้องการ API endpoint บน VPS หรือ integrate กับ application อื่น Ollama คือตัวเลือกที่ดีที่สุด