Relatude Help

The admin UI

The admin UI is where you manage everything about a database that is not code: storage, indexes, model sources, backups, logs, tasks and APIs. Learn your way around it early.

app.UseRelatudeDB() mounts it at /relatude.db. Pass a path to move it (DBAdminUIUrlPath in the settings wins over the argument):

app.UseRelatudeDB("/admin/db");

On your own machine, you need no login. NoLoginRequiredForLocalhost is true by default, so a browser on the same machine reaches the admin UI directly.

A request counts as local only when its connection comes from loopback and nothing suggests a reverse proxy: no forwarded headers (X-Forwarded-For, Forwarded, X-Real-IP and similar), and no hosting environment that is always behind a proxy (Azure App Service, IIS, Kubernetes). Behind a proxy every request arrives from loopback, so nothing counts as local, and you need real credentials to get in. The server logs this the first time it refuses a request for that reason.

To sign in from another machine:

  1. Set MasterUserName, in lowercase, and MasterPassword. Put them in the RelatudeDB configuration section (user secrets, environment variables) rather than in relatude.db.json.
  2. Set TokenEncryptionSecret. Without it, the server makes a new key at every start, which signs everyone out.
  3. Set AllowMasterLoginOutsideLocalhost to true, and serve the admin UI over HTTPS. Until then, the server refuses both the login and existing session cookies from remote addresses.

The password is compared exactly and stored in plain text, and failed logins are rate-limited per IP address. Where the master account cannot be used, the login page leaves out the user name and password, and offers Sign in with Relatude Services if that is set up (§35.4). §12.1 describes these settings.

What you find in it:

Page What it is for
Dashboard The database at a glance: activity, running operations, memory budgets and cache hit rates.
Datamodel The model as the engine built it (every node type with its parents, properties and relations), and the model editor.
Query Search, inspect and edit nodes. While modelling, create a node by hand to check its shape.
Activity What the database records about itself: queries, transactions, tasks, metrics and the system trace.
Storage Backups (take one before you upgrade Relatude.DB), the database file, stored files and their conversions, and a storage benchmark.
Logs Your own logs (§32).
Tasks The task queue and the Scheduler (§36).
API GraphQL endpoints (§33).
Settings The database's settings: model sources, storage providers, file stores, index engines, AI. A file store's id is what [FileProperty(FileStorageProviderId = "…")] takes.
Databases, Server settings The server's databases, and server-wide settings such as the admin login.
Relatude Services The installation's account, and a test page for each hosted service (§35).

Two habits worth forming:

  • Check the Datamodel page after a modelling change. It shows each type's parents, so it is the quickest way to confirm that your facet interfaces (§2) became parent node types, and that a property you expected to be indexed is.
  • Mind the middleware order. UseRelatudeDB adds the engine's startup-progress and auth middleware, so call it after your own UseCors, UseHttpsRedirection and UseAuthentication.