# Self-hosted AI assistant on a $9 VPS — Ollama + Open WebUI + Caddy

> Source: <https://gist.github.com/daniellaera/a001fe8256335fe71bdd54c582d2456b>
> Published: 2026-08-21 13:42:52+00:00

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.
