Chatty is a local and private chatbot based on Open WebUI and Ollama. It runs entirely on your machine and requires no internet connection once Docker images and ollama models are pulled.
RAG (Retrieval Augmented Generation) enhances responses with contextual information. Embeddings are generated using an Ollama model, and vectors are stored in Qdrant. Uploaded files are persisted in RustFS (S3-compatible storage), while chat history and settings are stored in PostgreSQL.
For optimal performance, run Ollama directly on the host machine rather than in Docker, though both options are supported.
graph TB
subgraph Host["Host Machine"]
Browser["Web Browser"]
Ollama["Ollama<br/>(Preferred)"]
end
subgraph Docker["Docker Environment"]
subgraph External["chatty-external Network"]
Traefik["Traefik<br/>Reverse Proxy"]
OllamaPull["ollama-pull<br/>(Init Container)"]
end
subgraph Internal["chatty-internal Network<br/>(Isolated)"]
OpenWebUI["Open WebUI"]
Qdrant["Qdrant<br/>Vector DB"]
Postgres["PostgreSQL<br/>Database"]
RustFS["RustFS<br/>S3 Storage"]
Tika["Apache Tika<br/>Content Extraction"]
OllamaDocker["Ollama<br/>(Optional Profile)"]
end
end
Browser -->|HTTP| Traefik
Traefik -->|chatty.local| OpenWebUI
Traefik -->|qdrant.chatty.local| Qdrant
Traefik -->|rustfs.chatty.local| RustFS
OpenWebUI -->|Embeddings/Inference| Ollama
OpenWebUI -->|Vector Search| Qdrant
OpenWebUI -->|Database| Postgres
OpenWebUI -->|File Storage| RustFS
OpenWebUI -->|Content Extraction| Tika
OpenWebUI -.->|Embedding/Inference| OllamaDocker
OllamaPull -.->|Pull Models| Ollama
style Ollama fill:#90EE90
style OllamaDocker fill:#FFE4B5
style External fill:#E3F2FD
style Internal fill:#FFF3E0
- Docker and Docker Compose installed
- Ollama running on your host machine
/etc/hostsupdated with local domains:127.0.0.1 chatty.local 127.0.0.1 traefik.chatty.local 127.0.0.1 rustfs.chatty.local 127.0.0.1 qdrant.chatty.local
- Copy the example environment file and configure secrets:
cp .env.example .env
- Edit
.envwith your database and S3 credentials - (Optional) Customize RAG settings in
.env.owui(no secrets required)
docker compose up -dAccess Open WebUI at http://chatty.local
On your host machine:
# Pull chat models e.g. gpt-oss:20b, mistral:latest, gemma3:latest
ollama pull gpt-oss:20b
ollama pull mistral:latest
ollama pull gemma3:latest
# List installed models
ollama listThe ollama-pull container will automatically pull the embedding model configured in .env.owui.
.env: Secrets (database, S3 credentials) - DO NOT COMMIT.env.owui: Open WebUI & RAG configuration - safe to commit.env.example: Template for.env
| Service | URL | Purpose |
|---|---|---|
| Open WebUI | http://chatty.local | Chatty User Interface |
| Traefik | http://traefik.chatty.local | Reverse proxy dashboard |
| RustFS | http://rustfs.chatty.local | S3-compatible storage |
| Qdrant | http://qdrant.chatty.local | Vector database |
| PostgreSQL | http://postgres.chatty:5432 or http://localhost:5432 | Database |
To run Ollama in Docker instead of on the host:
docker compose --profile ollama up -dNote: Host-based Ollama is recommended for better GPU/hardware utilization.
chatty-internal: Isolated network for backend services (no internet access)chatty-external: Public network for services requiring host/internet connectivity