Install
Install Fosnie with Docker Compose, on your own server.
This page covers a production-style Docker Compose install. For the fastest path see the Quickstart; for fully-local models, GPU hosts, or air-gapped installs see the Deployment guides.
Requirements
- Docker with Docker Compose v2 (≥ 2.24).
- RAM: ~8 GB with an external model API; ~16 GB for the fully-local stack (
--local). - One published port –
8080by default. Everything else (Postgres, Qdrant, Redis, the ML service) stays on Fosnie's internal network and is never exposed.
Option A – one-line install
Downloads a pinned release, generates secrets, and starts the stack.
curl -fsSL https://get.fosnie.dev | sh
# fully local – no API keys, all inference on this host:
curl -fsSL https://get.fosnie.dev | sh -s -- --localPrefer to read before you run: download install.sh, review it, then sh install.sh.
Option B – manual (Docker Compose)
mkdir fosnie && cd fosnie
curl -fsSL -O https://github.com/Fosnie/fosnie/releases/latest/download/docker-compose.yml
curl -fsSL https://github.com/Fosnie/fosnie/releases/latest/download/example.env -o .env
# edit .env – see "Required settings" below
docker compose up -dRequired settings
Generate a fresh value for each – never ship the placeholders. Keep .env at mode 600.
| Variable | What it is | Generate with |
|---|---|---|
POSTGRES_PASSWORD | Database password | openssl rand -hex 24 |
MESSAGE_ENCRYPTION_KEY | At-rest encryption key (base64 of 32 bytes) | openssl rand -base64 32 |
ML_SHARED_SECRET | Backend ↔ ML service secret | openssl rand -hex 32 |
A set-but-invalid MESSAGE_ENCRYPTION_KEY fails boot on purpose. If it is left unset, direct messages
are stored in plaintext – set it. See Configuration & env vars for the full list.
What gets started
The default profile is five containers:
| Service | Role |
|---|---|
backend | Rust API – also serves the web app; the only container on port 8080 |
ml | Python service – the only component that talks to a model |
postgres | Application data and the audit log |
qdrant | Vector store for retrieval |
redis | Sessions, presence, real-time tickets (ephemeral) |
Database migrations run inside the backend on boot – there is no separate migrate step. Data lives in
named volumes and survives docker compose down and reboots (restart: unless-stopped).
First run
Open http://localhost:8080 and create the first account – it becomes the admin. By default
Fosnie uses built-in email/password auth (AUTH_MODE=local); an onboarding checklist walks you
through adding a model provider. To use your company IdP instead, set
AUTH_MODE=keycloak – see Admin & teams.
Next steps
- Add a model provider – local engine or an API key.
- Upload documents and ask – your first grounded answer.
- Fully-local models · GPU tier · Air-gapped install.