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:
- Set
MasterUserName, in lowercase, andMasterPassword. Put them in theRelatudeDBconfiguration section (user secrets, environment variables) rather than inrelatude.db.json. - Set
TokenEncryptionSecret. Without it, the server makes a new key at every start, which signs everyone out. - Set
AllowMasterLoginOutsideLocalhosttotrue, 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.
UseRelatudeDBadds the engine's startup-progress and auth middleware, so call it after your ownUseCors,UseHttpsRedirectionandUseAuthentication.