Skip to content

Installation

Docker images are published to ghcr.io/cedhuf/llooma on every release. :latest always points at the newest one; each release is also tagged with its version (:0.8.0) if you would rather pin.

The recommended way. You do not need to clone anything: write this docker-compose.yml next to a .env file and you are done.

services:
llooma:
image: ghcr.io/cedhuf/llooma:latest
restart: unless-stopped
ports:
- '${HOST_PORT:-4173}:4173'
environment:
- VITE_ALLOWED_HOSTS=${VITE_ALLOWED_HOSTS:-localhost}
Terminal window
docker compose up -d

Then open http://localhost:4173.

That runs Llooma in local mode, where everything lives in your browser and the container holds no state at all. Running modes explains the difference and why you might want the other one.

Server mode keeps data on the server, so it needs a secret and a volume:

services:
llooma:
image: ghcr.io/cedhuf/llooma:latest
restart: unless-stopped
ports:
- '${HOST_PORT:-4173}:4173'
volumes:
- ./data:/app/data
environment:
- PUBLIC_MODE=server
- DATA_DIR=/app/data
- AUTH_SECRET=${AUTH_SECRET}
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- AUTH_CREDENTIALS=true
- VITE_ALLOWED_HOSTS=${VITE_ALLOWED_HOSTS:-localhost}

Generate the secret once and keep it:

Terminal window
openssl rand -base64 32

./data is everything: the SQLite database, the sessions, the encrypted provider keys. Back up that directory and AUTH_SECRET together, since one is useless without the other. Every variable is listed in Configuration.

The repository also ships a docker-compose.yml and a .env.example if you would rather start from those:

Terminal window
cp .env.example .env
docker compose up -d
Terminal window
docker run --rm -d -p 4173:4173 --name llooma ghcr.io/cedhuf/llooma:latest

This starts Llooma in local mode with no persistence outside your browser. For server mode you need at least AUTH_SECRET and a bind-mounted DATA_DIR.

Terminal window
docker compose pull && docker compose up -d

If your Ollama server runs on a separate device, it has to allow your Llooma instance’s domain in OLLAMA_ORIGINS. The browser talks to it directly in local mode, so its CORS policy applies.

Terminal window
OLLAMA_ORIGINS=https://your-llooma-domain.com ollama serve

See Ollama’s FAQ for the details.

Terminal window
pnpm install
pnpm run dev

Requires Node 26 and pnpm. See Working on Llooma.

Once it is running, First run takes you from an empty app to a first answer.