Docker Compose
The standard Fosnie deployment, and profiles for local models and web search.
Docker Compose is the standard way to run Fosnie. The Install page covers first setup; this page is the reference for the compose profiles and common operations.
Profiles
docker compose up -d # default – external inference
docker compose --profile local up -d # add local model engines (Ollama + reranker)
docker compose --profile search up -d # add self-hosted web search (SearXNG)
docker compose logs -f backend # follow logs
docker compose pull && docker compose up -d # upgrade to the pinned versionProfiles compose: --profile local --profile search runs both.
- default – five containers (
backend,ml,postgres,qdrant,redis). You supply model endpoints under Settings → Providers. - local – adds
ollamaand a llama.cppreranker; the backend auto-configures them. See Fully-local models. - search – adds SearXNG for the web-search tool. It stays dormant until an admin enables web search; it never makes outbound calls on its own.
Data and networking
Only the backend (port 8080) is published. Postgres, Qdrant, Redis, and the ML service stay on the
internal network. State lives in named volumes (pgdata, qdrantdata, redisdata, appdata) and
survives docker compose down and reboots.
Using a managed Postgres
To use Supabase, Neon, RDS, Cloud SQL, or Azure instead of the bundled database, set PAI__DATABASE_URL
in .env and remove the bundled postgres service.
Use a session-mode or direct connection, never a transaction-mode pooler – Fosnie relies on prepared statements and advisory locks that transaction pooling breaks. On Supabase, use the Session pooler (port 5432), not the Transaction pooler (6543). Postgres 13+ is required; no extensions needed.