Prism deployment examples

These recipes extend a fresh copy of .env.example. Replace the listed keys in that file and keep its other service/path defaults. Commands assume Linux or a POSIX shell and a fresh deployment; do not convert an existing shared installation back to single-user.

Recipe 1 — Personal Prism with Ollama

This complete local recipe keeps Ollama on Prism’s Docker network without publishing a model API port. It works on CPU; optional GPU support depends on your host runtime. The sample models are a tool-capable chat model and a separate embedding model.

git clone https://github.com/blazux/prism.git
cd prism
cp .env.example .env
chmod 600 .env
openssl rand -hex 32

Put the generated token in PRISM_TOKEN and set these values in .env. Do not copy YOUR_GENERATED_TOKEN literally.

PRISM_TOKEN=YOUR_GENERATED_TOKEN
MULTI_USER=
LLM_BACKEND=ollama
OLLAMA_URL=http://ollama:11434
OLLAMA_MODEL=qwen2.5:7b
EMBED_BACKEND=ollama
EMBED_MODEL=nomic-embed-text
CHAT_VISION=false
TZ=UTC

Create compose.ollama.yml next to docker-compose.yml with this content:

services:
  ollama:
    image: ollama/ollama:latest
    restart: unless-stopped
    volumes:
      - ollama_models:/root/.ollama
volumes:
  ollama_models:
docker compose -f docker-compose.yml -f compose.ollama.yml up -d ollama
docker compose -f docker-compose.yml -f compose.ollama.yml exec ollama ollama pull qwen2.5:7b
docker compose -f docker-compose.yml -f compose.ollama.yml exec ollama ollama pull nomic-embed-text
docker compose -f docker-compose.yml -f compose.ollama.yml up -d

Open http://localhost:48080. In AI provider check Ollama → http://ollama:11434, the selected chat model and nomic-embed-text for document search. If saved provider settings already exist, they override the environment recipe; update them in the UI. Keep both Compose files in later update commands.

Ollama Docker documentation ↗

Recipe 2 — Shared Prism with vLLM

Prerequisite: a working vLLM server with a tool-capable model, streaming and the correct model-specific tool parser/chat template. This recipe connects Prism to that server; it does not install or size vLLM. Its /v1/models response must include the alias assistant, or replace that alias below.

On a fresh Prism deployment, use the Ollama overlay above for embeddings only, and change these .env values. host-gateway targets vLLM on the Docker host; its listener must be reachable from the container. For a different server, use its actual reachable address.

PRISM_TOKEN=YOUR_GENERATED_SERVICE_TOKEN
MULTI_USER=1
LLM_BACKEND=openai
OPENAI_BASE_URL=http://host-gateway:8000/v1
OPENAI_MODEL=assistant
OPENAI_API_KEY=
EMBED_BACKEND=ollama
OLLAMA_URL=http://ollama:11434
EMBED_MODEL=nomic-embed-text
CHAT_VISION=false
TZ=UTC

If vLLM requires a key, put the matching credential in OPENAI_API_KEY. CHAT_VISION=false is deliberate for a text-only sample; enable image support only for a model that supports it. If vLLM runs on a separate Compose network, attach Prism to that network and use its service name rather than localhost.

docker compose -f docker-compose.yml -f compose.ollama.yml up -d ollama
docker compose -f docker-compose.yml -f compose.ollama.yml exec ollama ollama pull nomic-embed-text
docker compose -f docker-compose.yml -f compose.ollama.yml up -d

Create the first account at http://localhost:48080; it becomes global administrator. In Admin → AI provider check the vLLM source, use a separate Ollama embedding connection, and set the actual context/vision in Model settings if metadata is missing. Create a group, approve a second account and verify its permissions before opening access more widely.

vLLM tool-calling setup ↗

Acceptance checks for either recipe

  • The browser can sign in and a model response arrives without an authentication or model-ID error.
  • A small widget task produces real tool calls, a widget and data that survives a page reload.
  • A short uploaded document indexes successfully and can be retrieved from the intended collection.
  • In shared mode, check an ordinary member account rather than testing everything as global administrator.
Next: set up PrismVox with ElevenLabs →