Skip to content

Install Presentia

Presentia builds from a single multi-stage Dockerfile (EXPOSE 80) that packages the whole app — backend, frontend and assets — so any platform that builds from a Dockerfile works.

Terminal window
git clone https://github.com/diegoparras/presentia.git
cd presentia
docker compose up -d --build production

Open http://localhost:5001, create your login and pick a text provider in the onboarding — an OpenRouter API key is the fastest way to unlock every model in the catalog at once.

The compose file already mounts ./app_data and ships commented service blocks for Escriba, Anonimal and a GPU variant. On a GPU host, docker compose up -d --build production-gpu enables NVIDIA acceleration for local models; change the port with PRESENTON_HTTP_HOST_PORT.

  1. + Service → App, Source → GitHubdiegoparras/presentia (branch main), Build → Dockerfile.
  2. (Recommended) + Service → Postgres in the same project (e.g. presentia-db). Services talk to each other by name — <project>_presentia-db:5432, not host.docker.internal.
  3. In the App’s Environment:
    DATABASE_URL=postgresql://user:password@<project>_presentia-db:5432/presentia
    MIGRATE_DATABASE_ON_STARTUP=true
    Use the plain postgresql:// scheme — the app adds the async driver itself. Leave DATABASE_URL empty to use the built-in SQLite instead.
  4. Mounts → Volume → mount a persistent volume at /app_data.
  5. Domains → Container Port 80, add your domain, enable HTTPS.
  6. Deploy. On first boot the migrations create the full schema automatically.
Terminal window
docker build -t presentia .
docker run -d --name presentia --restart unless-stopped \
-p 5001:80 -v presentia_data:/app_data \
-e MIGRATE_DATABASE_ON_STARTUP=true \
presentia

Put a reverse proxy in front for TLS. Example Caddyfile:

presentia.example.com {
reverse_proxy localhost:5001
}

Everything can be configured from the Settings UI — environment variables are for headless or locked-down deployments. The most useful ones:

VariableDefaultDescription
LLMText provider: openai, anthropic, google, deepseek, openrouter, ollama, lmstudio, litellm, azure_openai, bedrock, vertex, custom.
<PROVIDER>_API_KEY / <PROVIDER>_MODELCredentials and model per provider (e.g. OPENROUTER_API_KEY + OPENROUTER_MODEL).
IMAGE_PROVIDERgpt-image-1.5, dall-e-3, gemini_flash, pexels, pixabay, comfyui.
WEB_GROUNDING / WEB_SEARCH_PROVIDERoffWeb search: searchgirl, searxng, tavily, exa, brave or auto (model-native).
AUTH_USERNAME / AUTH_PASSWORDSeed the login instead of the first-run form.
CAN_CHANGE_KEYStruefalse locks API keys so the UI can’t edit them.
DATABASE_URLSQLitePoint at PostgreSQL for multi-user deployments.
DATASET_MAX_ROWS200Row cap for the charts-from-data endpoint.
DISABLE_ANONYMOUS_TRACKINGSet true to disable the upstream’s anonymous telemetry.

The full provider matrix (Azure, Bedrock, Vertex, ComfyUI and more) is documented in the repo’s docker-compose.yml and .env.example.

Read the documentation