Skip to content

Self-hosting overview

Imprime is open source (Apache 2.0) and designed to be self-hosted: keep your templates, your data and your generated documents on your own servers.

Imprime runs as one Node.js process serving everything on a single port, backed by MongoDB:

┌──────────────────────── Imprime (Node.js, port 3023) ───────────────────────┐
Browser ──────► │ / → editor (React app, static files) │
Scripts ──────► │ /api/* → REST API (templates, pages, variables, images) │
AI agents ────► │ /api/mcp → MCP server (Streamable HTTP) │
│ /api/auth/* → authentication (Better Auth: email, SSO, API keys, OAuth) │
│ /api/export/* → PDF renderer (@react-pdf, embedded fonts) │
└──────────────────────────────────────┬──────────────────────────────────────┘
│
MongoDB (templates, images, users, keys)

The monorepo contains four packages:

Package Role
packages/backend Express API, MCP server, authentication, PDF rendering
packages/frontend React + Ant Design editor, served by the backend in production
packages/common Shared types, rendering helpers and fonts
packages/sdk TypeScript API client
  • Docker (recommended), or Node.js 18+ to build from source.
  • MongoDB — any recent version (self-hosted, Docker, or a managed service such as Atlas).
  • A domain with HTTPS for production — required for SSO callbacks and MCP OAuth.
  • Resources: PDF rendering is CPU-bound; 1 vCPU / 1 GB RAM is enough to start.