Self-hosted AI assistant on a $9 VPS — Ollama + Open WebUI + Caddy A developer has documented a self-hosted AI assistant setup running Ollama, Open WebUI, and Caddy in Docker on a $9 Hostinger KVM2 VPS with 2 vCPUs, 8 GB RAM, and no GPU. The setup achieves token generation speeds of about 16 tokens/sec for the llama3.2:1b model and 13 tokens/sec for llama3.2:3b, while qwen2.5:7b fits but is not recommended due to tight memory. The developer advises hardening the server first, disabling signups after creating an admin account, and turning off Open WebUI's auto-generation features to reduce CPU load. Ollama + Open WebUI + Caddy, running in Docker on a Hostinger KVM2 2 vCPU, 8 GB RAM, 100 GB NVMe, Ubuntu 24.04 . Video: https://youtu.be/-OlX98vV8Sg https://youtu.be/-OlX98vV8Sg VPS: https://hostinger.com/daniellaera https://hostinger.com/daniellaera — code DANIELLAERA for 10% off | Model | Tokens/sec | |---|---| | llama3.2:1b | ~16 | | llama3.2:3b | ~13 | | qwen2.5:7b | fits in 8 GB, but very tight — not recommended | Short prompts a commit message, a quick explanation come back in a few seconds. Long generations take a minute or more. There is no GPU on this plan — everything runs on CPU. 01-harden.sh — do this first, before anything else 02-docker.sh compose.yml + Caddyfile docker compose up -d - Pull a model, create your admin account, then disable signups - Set a system prompt like "Answer directly, no preamble, be brief" — a short answer is a fast answer. - In Open WebUI, Admin Panel → Settings → Interface: turn off Title Auto-Generation, Follow-Up Generation, Tags Generation and Autocomplete. Each one fires an extra hidden generation on every message and they all compete for the same two cores. OLLAMA KEEP ALIVE keeps the model resident in RAM. Longer means no cold-load delay; shorter frees the memory when idle.