Run every command on the host, in /, unless the row says otherwise.
| What you see | What it means | What to do |
|---|---|---|
| A message appears and no job starts | Nothing changed. The DataMind Installer checked first and refused | Fix the value or state the message names, then try again |
| A job started, showed progress, then failed | Part of DataMind OS may already be recreated | Read the job in Job Logs. Then run Start or Update again to finish, or Stop to take the stack down cleanly |
| Command | A healthy answer |
|---|---|
curl -sS http:/ | {"status":"ok","db":"up"} |
docker compose ps -a | delamain-postgres and delamain-backend up and (healthy); delamain-backend-init exited with code 0 |
docker compose logs --tail=100 backend | No repeating error, and no start-up lines repeating. Every job's Compose output is here too |
docker compose logs backend-init | The database migrations ran without an error |
docker logs delamain-self-updater, only after an Installer update | The last DataMind Installer update ends with [self-update] outcome: ok |
docker inspect -f '{{. | OOMKilled is false. true means the container was killed for memory |
Check it worked. When every command gives its healthy answer, the DataMind Installer is sound.
| Command | A healthy answer |
|---|---|
sudo docker compose ps -a, run in deployment | Every DataMind OS service up |
Continue in Status with the DataMind OS service that is not healthy.
Each message is the exact text the DataMind Installer, its screen or Docker shows. … stands for the
detail that follows.
| Message | Cause | Fix |
|---|---|---|
Failed to download env template from Azure: … | Shown at Save & continue in the install wizard, or when an Update job fails while downloading. The Azure client secret is wrong or expired, or the host cannot reach Azure | Re-enter the client secret exactly. Check outbound access in System requirements |
Failed to download docker-compose. | Same as the row above, for the Compose file | Same as the row above |
Azure client secret is invalid or expired — re-enter it. | Shown in Configuration. Azure rejected the stored secret | Enter the new secret in Configuration. Then repeat the host login with it: docker login -u <client_id> unistream. |
Blob download failed: … | The host did not reach DataMind's install-file storage after two attempts. The network error code follows in brackets, for example ETIMEDOUT | Allow outbound HTTPS to unistream., see System requirements. Then repeat the action |
Azure AD token request failed: … | The host did not reach login. to sign in with the client secret. The network error code follows in brackets | Allow outbound HTTPS to login.. Then repeat the action |
Missing required configurations: … | A required setting is empty. The names follow, separated by commas | Fill each named setting in Configuration, then try again |
Configuration with code "…" not found | The setting does not exist in the published template | Use a setting the template contains |
Missing deployment files: … | A DataMind OS file was missing and could not be restored. The reason follows — | Fix the reason: usually outbound access, the Azure secret, or a missing required setting |
PLATFORM_URL cannot be empty | No platform address was entered | Enter the address DataMind OS is reached at |
PLATFORM_URL must be an http:/ | The address has another scheme | Use http:/ or https:/. See TLS and certificates |
| Message | Cause | Fix |
|---|---|---|
Start is greyed out with N images missing — run Update first | Some images were never pulled to this host | Run Update, or pull on the host as in Disaster recovery |
Missing local images: … | A job pulled, but some images did not arrive | Read the pull lines in Job Logs. Check registry access, the Azure secret and free disk space |
No output for <n> minutes — aborted as hung | A job wrote nothing for that long. Usually an outbound call is blocked, or a container never starts | Read Job Logs for the last line before the silence. Fix that step, then run the job again |
DataMind Installer restarted while this job was running | The DataMind Installer restarted mid-job, so the job was closed | Read docker compose logs backend for the reason, then run the job again |
Connection to DataMind Installer lost — reconnecting… | The browser lost the live log stream. The job keeps running on the host | Wait. If it persists, check the health endpoint, and turn response buffering off in your proxy, see TLS and certificates |
Container failed to start: … | Shown in a service's panel on Status. Docker could not start that container | Read the log under the message, and act on the detail |
Service catalog is outdated | Shown on Status. The service grouping comes from an older configuration template | Run Update |
Error response from daemon: … | Docker refused an action. The detail names the reason | Act on the detail. The two most common follow |
network unistream declared as external, but could not be found | The shared network does not exist | Run docker network create unistream, then start again |
port is already allocated | Another process holds the port | Find it with ss -ltnp | grep ':8000', using the port in the message. Stop that process |
| Message | Cause | Fix |
|---|---|---|
Invalid email or password | The sign-in name or password is wrong | An administrator resets the password in Users |
Account is deactivated | An administrator deactivated the account | An administrator activates it again |
Initial registration is not allowed once a user exists. | The first administrator already exists | Sign in with that account |
Internal server error | In production the DataMind Installer shows this text for an unexpected error | Read docker compose logs --tail=100 backend for the full error |
| Message | Cause | Fix |
|---|---|---|
A self-update is already in progress. | An update is already running | Wait for it to finish. If . already shows a result and no update is running, restart the DataMind Installer with docker compose restart backend in /, then update again |
A … job is running (started …) — updating delamain now would kill it. | A DataMind OS job is running | Wait for the job to end, then update |
Update preparation failed; nothing has changed: … | The pull or staging failed before the switch | Fix the detail, usually registry access or disk space, then update again |
Could not start the updater; nothing has changed: … | The update helper container could not start | Fix the detail, then update again |
This container carries no compose project labels, so its install directory cannot be found. | The DataMind Installer was started without Docker Compose | Start it with docker compose up -d in / |
Manager update rolled back — still on … | The new build did not turn healthy, and the previous build runs again | Read the toast detail. Only when it starts with ROLLED BACK ONTO A CHANGED SCHEMA, check the schema |
ROLLED BACK ONTO A CHANGED SCHEMA: … | The rollback succeeded, but the newer build had already migrated the database | Check the schema |
The backend container restarts in a loop when pg. is missing from the secrets volume.
docker compose ps -a docker compose logs --tail=20 backend docker compose logs backend-init
| Sign | What you see |
|---|---|
| Container state | delamain-backend shows Restarting |
| The backend log | PostgreSQL password file not found: /, repeating |
The backend log, with POSTGRES_PASS in the Installer's . | JWT secret loaded from file, Encryption key loaded from file and curato service token loaded from file repeat, with no error after them |
| The init container's log | PostgreSQL password file not found: / |
| The backend log, after the database container restarted | password authentication failed for user. The database container wrote a new pg., which the existing database does not accept. Apply the same fix |
Confirm that the file is missing. The database container mounts the same volume at /:
docker exec delamain-postgres ls -l /run/secrets
Restore pg. alone from the secrets archive of your
Backup and restore. The database keeps its original password,
so only the backed-up file matches it. Run as root:
BACKUP=/root/datamind-backup DATE=2026-10-01 # replace with the date in your backup file names docker run --rm \ -v delamain_delamain_secrets:/data \ -v "$BACKUP":/backup:ro \ unistream.azurecr.io/docker-hub/library/postgres:16 \ tar xzf "/backup/datamind-installer-secrets-$DATE.tgz" -C /data ./pg.pass
The other three files stay as they are. Remove POSTGRES_PASS from the Installer's . if it is
there, then start the stack again:
cd /opt/delamain docker compose up -d
Check it worked. curl -sS http:/ answers {"status":"ok","db":"up"}.
The update switches once. If the new build is not healthy within 300 seconds, it rolls back to the previous image. Your database dump restores the schema.
cat /opt/delamain/.self-update-status docker logs delamain-self-updater
Read the helper's log before you try another update: the next attempt removes the helper container and its log.
. | Last helper lines | State and next step |
|---|---|---|
ok | [self-update] outcome: ok | The new build runs |
rolled-back | rolled back to rollback — the update did NOT stick | The previous build runs. Check the schema |
failed | rollback failed too. | The DataMind Installer is down. The helper already put the previous Compose file back. Bring the previous build back |
failed | could not restore the backed-up compose file | The DataMind Installer is down, and docker-compose. is still the new file. Run sudo cp docker-compose. in /, then bring the previous build back |
failed | could not back up the compose file — refusing to switch without a rollback path or could not install the new compose file — nothing has changed yet | The switch never ran, and the previous build still runs. Fix the cause, usually disk space in /. Then restart the DataMind Installer with docker compose restart backend in /, and update again |
Before the switch, the update tagged the previous image rollback. Start it:
cd /opt/delamain VERSION=rollback docker compose up -d backend
VERSION=rollback applies to this command only. A later docker compose up without it starts
prod-latest again.
Check it worked. curl -sS http:/ answers {"status":"ok","db":"up"},
and docker compose ps shows delamain-backend (healthy).
When the rollback image is gone or does not turn healthy, start the current published build instead:
cd /opt/delamain sudo curl -fsSL https://unistream.blob.core.windows.net/delamain/docker-compose.yml -o docker-compose.yml docker compose pull docker compose up -d
If the pull is refused, sign in to the registry again with docker login -u <client_id> unistream..
If it fails again, read docker compose logs backend, then restore the dump you took before the
update, as in
Roll back only the DataMind Installer database.
List the last migrations the database has applied:
docker exec delamain-postgres sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT id, name FROM typeorm_migrations ORDER BY id DESC LIMIT 5;"'
The ROLLED BACK ONTO A CHANGED SCHEMA message reads the database migrated from "<old>" to "<new>".
If the top row is <new>, the previous build runs on the newer schema. Restore the dump you took
before the update, as in
Roll back only the DataMind Installer database,
then update again. If the update rolls back again, contact DataMind with the update helper's log.
Check it worked. After the restore, the top row is <old>, and the health check answers
{"status":"ok","db":"up"}.
Send your report to https://datamind.ge/contact with the exact message, the job from Job Logs, the
output of the health check and docker compose ps -a, and the update helper's log if a DataMind
Installer update was involved. Remove every token and password from logs before you send them. Never
send deployment/, the secrets volume or the Azure client secret.
See Spot a restart loop from a missing pg.pass.
Yes. See Recover from a failed Installer update.