Install Rementum¶
Try locally (no domain required)¶
To evaluate Rementum on your machine without configuring DNS or a domain, start the stack with Docker Compose:
git clone https://github.com/rementum/rementum.git
cd rementum
cp .env.example .env
docker compose up -d
./scripts/create-owner.sh [email protected] "Owner"
Open http://localhost in your browser. You can sign in immediately, explore the dashboard, and copy your workspace MCP URL to connect Claude Code, Cursor, Codex, or any MCP client.
Production install on a server¶
What you need¶
- A Linux host with Docker Engine, Docker Compose v2, and OpenSSL.
- A domain with an A or AAAA record pointing at the host.
- Open inbound TCP ports 80 and 443.
Email (a Resend API key and a verified sender) is optional. You need it for public registration; an invitation-only instance does not need email to create the first owner.
Run the installer¶
The installer asks for the domain, the owner account, and the optional AI, email, and Cloudflare Turnstile settings. Then it:
- Generates the database passwords, a 32-byte master key, cookie keys, and an OAuth signing key.
- Writes
.envwith mode0600and creates a privatebackups/directory. - Builds the containers, runs every migration, and waits for the API and web health checks.
- Creates the first owner, a default team, and that team's default workspace.
When it finishes, open the HTTPS URL it printed.
Install without prompts¶
Pass --non-interactive to run from an agent or a CI job. Set plain values with REMENTUM_INSTALL_*
variables, and put passwords and API keys in files so they stay out of the command line and logs:
REMENTUM_INSTALL_DOMAIN='memory.example.com' \
REMENTUM_INSTALL_OWNER_EMAIL='[email protected]' \
REMENTUM_INSTALL_OWNER_NAME='Owner' \
REMENTUM_INSTALL_OWNER_PASSWORD_FILE='/run/secrets/rementum-owner-password' \
REMENTUM_INSTALL_ALLOW_SIGNUP='false' \
./scripts/install.sh --non-interactive
A few rules for this mode:
- The owner password must be at least 12 characters, read from
REMENTUM_INSTALL_OWNER_PASSWORD_FILE. - Public signup defaults to
false. - To allow signup, also set
REMENTUM_INSTALL_RESEND_API_KEY_FILEandREMENTUM_INSTALL_MAIL_FROM. - To add Cloudflare Turnstile bot protection, set
REMENTUM_INSTALL_TURNSTILE_SITE_KEYand store the secret inREMENTUM_INSTALL_TURNSTILE_SECRET_KEY_FILE. The installer refuses one without the other.
Run ./scripts/install.sh --help for the full list. This mode uses the same safety checks as the
interactive installer.
Update or repair¶
The installer refuses to overwrite an existing .env. To update an installed instance from its Git
checkout:
The updater requires an encrypted backup recipient before it touches the source. Set one up with the
backup and upgrade guide. Use ./scripts/deploy.sh when you only changed .env, or
to rebuild the current version without pulling an update.
If deployment succeeds but creating the first owner fails, retry just that step. It does not change any secret:
./scripts/create-owner.sh [email protected] "Owner Name"
Check that it works¶
curl --fail https://memory.example.com/healthz
docker compose -f docker-compose.yml -f compose.production.yml ps
The health response reports database and embedding status. The Compose output should show healthy API, web, embedding, and PostgreSQL services.
The embedding service is the last to go healthy: it downloads its model on first start. The installer waits for it.
Save the master key¶
Copy .env into an encrypted secrets manager before you add any knowledge. The encrypted backup
does not contain REMENTUM_MASTER_KEY. Without the same master key, no database or blob backup can
recover article bodies.
Limit .env to the system administrator. Never send it through chat, email, issue trackers, or CI
logs.
Turn on public registration¶
Registration stays closed unless you enable it. To open it later, set all three values in .env:
REMENTUM_ALLOW_SIGNUP='true'
REMENTUM_RESEND_API_KEY='re_...'
REMENTUM_MAIL_FROM='Rementum <[email protected]>'
Run ./scripts/deploy.sh afterward. New accounts must verify their email before they can create a
team.