Skip to main content
This guide covers deploying RecordEngine on a bare Linux server. The recommended deployment uses Ubuntu 22.04 or 24.04 with an NVIDIA GPU (RTX 4090 or RTX 5090 for on-premise hardware, A10G for cloud).

Prerequisites

Before starting, ensure the following are installed and working on your server:

Install NVIDIA Container Toolkit

Verify:

Installation

1 — Clone the repository

2 — Create environment configuration

Set the required values:
Use a strong, randomly generated value for SECRET_KEY and API_TOKEN. These control access to your instance. You can generate them with openssl rand -hex 32.

3 — Start the containers

This pulls the Docker images and starts four containers: xr-ui, xr-watcher, xr-api, and ollama.

4 — Pull the AI model

This downloads the AI model (~6.6 GB) into the ollama-data volume. Run a warmup prompt so the model loads into GPU memory before the first real document arrives:

5 — Verify containers are running

All four containers should show Up. Access the UI at http://YOUR-SERVER-IP:8501.

First-Run Setup

On first access, RecordEngine runs a setup wizard:
  1. Create the Admin account — set username and password for the first admin user
  2. Instance name — displayed in the UI header
  3. Done — you’re redirected to the dashboard
There is no default password. The setup wizard only runs once — on first access after a fresh installation. If you need to reset the admin account, see Troubleshooting.

RecordEngine should be served over HTTPS in production. The recommended approach uses Nginx as a reverse proxy with Let’s Encrypt for SSL.

Install Nginx and Certbot

Create an Nginx site configuration

Issue the SSL certificate

Certbot modifies the Nginx config automatically and sets up auto-renewal.

Install the xr Management Command

The xr command is a convenience wrapper for common operations:
Available commands:

Verify the Deployment

Expected: all 80 tests pass.

Firewall Configuration

Open only the ports you need:
Do not expose ports 8501, 8510, or 11434 directly — these are proxied through Nginx.