Deployment

Install EasyRag wherever you choose, with full knowledge of the facts

The platform is made of Docker containers you can run on your own servers or in your cloud. Here are the components, the external dependencies and what they mean in practice.

Installation

Six containers, one coherent stack

The API, RAG service and web interface images are published on Docker Hub; the databases rely on official images.

Application APINode.js (NestJS)Accounts, roles, assistants, corpora, channels, workflows, monitoring.
RAG servicePython (FastAPI, Haystack)Extraction, chunking, embedding, search, agent and citations.
Web interfaceFlutter Web (nginx)Administration, chat portal, public pages.
Application databasePostgreSQL 16Configuration, conversations, logs.
Vector databasePostgreSQL + pgvectorIndex of document chunks.
Queue and cacheRedis 7Asynchronous processing, rate limiting.

Optional profiles: observability (OpenTelemetry collector, Prometheus, Grafana). Resources and sizing depend on document volume and traffic: we do not publish figures we have not measured.

Configuration

External services to plan for

EasyRag is not 100% self-sufficient: some processing relies on third-party services. Here they are, with nothing left out.

Required or optional external services
ServicePurposeRequirement
OpenAI or Mistral keyDocument embedding, enrichment, configuration assistants, transcription.Required
Generation modelCloud provider of your choice, or a self-hosted Ollama / vLLM / OpenAI-compatible server.Required
SMTP serverSign-up verification, password resets, alerts.Optional
Mistral OCR keyImages and scanned PDFs.Optional
Serper keyWeb search alongside your documents.Optional
Identity providerOpenID Connect SSO, Google or FranceConnect+.Optional
LicenseBeyond the free mode (1 corpus, 5 documents); Pro for advanced features.Depends on usage

Operations

What you control day to day

Data

Documents, indexes and conversations stay in your databases and volumes. Questions and relevant excerpts go to the model provider you chose; embedding goes through OpenAI or Mistral.

Updates

New versions are released as Docker images: update by replacing the containers, after backing up the databases.

Environments

The migration module exports assistants, corpora and settings from one instance to another, with a dry run and rollback within 30 days.

Operations

/health and /ready probes, Prometheus metrics, OpenTelemetry traces, a bundled Grafana dashboard and technical alerts by email.

Secrets

Keys and passwords set through environment variables; provider credentials encrypted in the database (AES-256-GCM).

License

Signed key verified offline; optional daily revalidation, with a 7-day grace period if the service is unavailable.

Before going live

What to settle before exposing an instance

A few configuration settings determine the security of an instance reachable from the Internet.

  • Serve the application over HTTPS behind a reverse proxy.
  • Declare the allowed origins for the API (CLIENT_ORIGIN) and for each widget.
  • Decide whether to open sign-ups and allow automatic account creation through SSO.
  • Restrict access to the API documentation and metrics if needed.
  • Generate strong secrets (JWT, encryption key) and store them outside the code.
  • Schedule backups of PostgreSQL and the document volumes.

Let’s plan your deployment

Infrastructure, model choices, document sources: let’s discuss your context to define a realistic rollout.