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.
Quick start (Docker Compose)
Section titled “Quick start (Docker Compose)”git clone https://github.com/diegoparras/presentia.gitcd presentiadocker compose up -d --build productionOpen 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.
Deploy on EasyPanel
Section titled “Deploy on EasyPanel”- + Service → App, Source → GitHub →
diegoparras/presentia(branchmain), Build → Dockerfile. - (Recommended) + Service → Postgres in the same project (e.g.
presentia-db). Services talk to each other by name —<project>_presentia-db:5432, nothost.docker.internal. - In the App’s Environment:
Use the plainDATABASE_URL=postgresql://user:password@<project>_presentia-db:5432/presentiaMIGRATE_DATABASE_ON_STARTUP=true
postgresql://scheme — the app adds the async driver itself. LeaveDATABASE_URLempty to use the built-in SQLite instead. - Mounts → Volume → mount a persistent volume at
/app_data. - Domains → Container Port
80, add your domain, enable HTTPS. - Deploy. On first boot the migrations create the full schema automatically.
Plain Docker / reverse proxy
Section titled “Plain Docker / reverse proxy”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 \ presentiaPut a reverse proxy in front for TLS. Example Caddyfile:
presentia.example.com { reverse_proxy localhost:5001}Main environment variables
Section titled “Main environment variables”Everything can be configured from the Settings UI — environment variables are for headless or locked-down deployments. The most useful ones:
| Variable | Default | Description |
|---|---|---|
LLM | — | Text provider: openai, anthropic, google, deepseek, openrouter, ollama, lmstudio, litellm, azure_openai, bedrock, vertex, custom. |
<PROVIDER>_API_KEY / <PROVIDER>_MODEL | — | Credentials and model per provider (e.g. OPENROUTER_API_KEY + OPENROUTER_MODEL). |
IMAGE_PROVIDER | — | gpt-image-1.5, dall-e-3, gemini_flash, pexels, pixabay, comfyui. |
WEB_GROUNDING / WEB_SEARCH_PROVIDER | off | Web search: searchgirl, searxng, tavily, exa, brave or auto (model-native). |
AUTH_USERNAME / AUTH_PASSWORD | — | Seed the login instead of the first-run form. |
CAN_CHANGE_KEYS | true | false locks API keys so the UI can’t edit them. |
DATABASE_URL | SQLite | Point at PostgreSQL for multi-user deployments. |
DATASET_MAX_ROWS | 200 | Row cap for the charts-from-data endpoint. |
DISABLE_ANONYMOUS_TRACKING | — | Set 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.