The DataMind Installer is the component that installs and manages a DataMind OS deployment on a customer server. It is not an application that end users sign in to. It is an infrastructure control plane, and whoever can sign in to it can act on the whole deployment.
An Installer account is therefore not a "normal" application account. Grant it the way you grant
root on the host: to a small number of named system administrators, and to nobody else.
Every action below is a real endpoint in the Installer backend, and every one of them runs against the host through the Docker socket. The role column is the role the endpoint requires.
| Action | Endpoint | Role required |
|---|---|---|
| Restart, stop, or kill services | POST /api/deployment/restart, /stop, /kill | admin |
Deploy (pull images, then docker compose up) | POST /api/deployment/deploy | admin |
| Pull images, or run compose-up on their own | POST /api/deployment/pull, /compose-up | admin |
| Apply configuration changes (recreate services in dependency tiers) | POST /api/deployment/apply-config | admin |
| Cancel a running job | DELETE /api/deployment/jobs/:jobId | admin |
Edit deployment configuration values and regenerate the deployment .env | PATCH /api/configs/values, POST /api/configs/generate | admin |
Import configuration from a legacy Jenkins config.xml | POST /api/configs/import/jenkins | admin |
| Set the Azure client secret used to pull images | PUT /api/system-secrets/azure | admin |
Set the VM user for .env substitution and run the host migration | POST /api/migrate/vm-user, POST /api/migrate/run-host | admin |
| Create, disable, delete users and change roles | POST /api/user/register, PATCH /api/user/:id, DELETE /api/user/:id | admin |
| Read the deployment audit trail | GET /api/deployment/actions | admin |
| Stream container logs | GET /api/deployment-log, /api/deployment/logs | admin for /deployment-log; authentication only for /deployment/logs |
| Update the Installer itself | POST /api/system/self-update | authentication only — see below |
| Read deployment status, service groups, stale services, jobs and update checks | GET /api/deployment/status, /groups, /stale-services, /jobs, /update-check | authentication only |
Two capabilities are not gated to admin: the self-update endpoint and the read-only
deployment endpoints require only a valid login — any active Installer account, including one with
the plain user role, can trigger the Installer's own update and can stream aggregated container
logs. Do not create user-role accounts for people whom you would not trust with admin.
The Installer drives the host's Docker daemon through the mounted Docker socket. Anything that can reach the Docker socket can start a container that mounts the host filesystem as root or joins the host's PID namespace. That makes a composed "restart services" call and a "run host migration" call the same privilege class as shell access on the host.
The migration action goes one step further in the code: it spawns an ephemeral container with
--privileged --pid=host and runs the retirement script inside the host's namespaces with
nsenter -t 1 -a. It stops and permanently masks the legacy systemd units on the host.
Host privilege and the Docker socket covers the mechanics. What matters for access decisions is the conclusion: an Installer sign-in is equivalent to root on the server. Treat it as such.
sudo on the host. Two to
four is typical; every extra account is another path to host root.isActive = false) and let it be, or
delete it; either way their refresh tokens are invalidated at once. See
Identity and users.GET /api/user.GET /api/deployment/actions returns every deployment and migration
action ever taken, newest first, with the acting user resolved. Read it during incident response
and on a schedule..env
are all editable by an admin and all reach the host. An administrator's departure is a rotation
event, not just an account event.So that you plan the compensating control instead of assuming a feature exists:
admin requests runs immediately.