Troubleshooting
Common failures and how to resolve them.
App container restarts on boot
Run docker logs tprm-mlab-app-1. Most common causes:
- DB not healthy yet - harmless; the app retries until MySQL and ClickHouse are up.
- Missing
LICENSE_KEY- the repositorydocker-compose.ymlrefuses to start without it. With your own compose file the app starts but stays paused (statusmissing_key).
Database connection errors
- Confirm
DB_HOST/CH_HOSTmatch the compose service names (mysql/clickhouse) or your external hosts. - Check the credentials in
.envmatch what the database containers were initialised with. If you changed a password after first boot, the volume still holds the old one - reset it inside MySQL or recreate the volume. - Verify the containers are on the same Docker network and the databases report healthy:
docker compose ps.
Migrations didn't apply
Schema migrations (V1 -> V35) run automatically on startup. If a table looks stale, check docker logs tprm-mlab-app-1 for the migration log line. A failed migration is logged with the failing statement; fix the underlying DB issue (permissions, disk space) and restart the app container to retry.
A save shows an error instead of succeeding
This is by design. All create/update operations now surface the underlying SQL error to the UI rather than silently reporting a false success. The red banner contains the constraint or column that failed - common causes are a duplicate contract reference (must be unique), a malformed LEI (18 alphanumerics followed by 2 check digits) or a missing mandatory field. Correct the input and retry.
Every page shows "Access Denied" / the platform is paused
The instance has no valid license. Sign in as an administrator: the locked page and /settings/license give the reason.
missing_keyorinvalid- set the current key from mlab.sh inLICENSE_KEYand restart theappcontainer. A rotated key invalidates the old one.in_use- every place on the license is taken. The locked page lists the instances holding them. Release one on mlab.sh, click Use this instance, or wait: an instance silent for 3 hours gives its place back. This is common after recreating an instance with new volumes, since it gets a new instance id.expired- mlab.sh was unreachable for more than 7 days. Check outbound HTTPS tomlab.sh:443from theappcontainer, then click Check again.
The app logs show every check (License guard: ...). Data is never touched while the platform is paused.
Port already in use
If 8080 is taken, change the published side of the ports mapping in docker-compose.yml (for example "8090:8080") and run docker compose up -d. The container always listens on 8080 internally. The MySQL (3306) and ClickHouse (8123/9000) ports stay on the internal network and aren't published.
EBA export validation fails
Open /eba/ and click Validate. The report lists errors, warnings and infos per template. Resolve errors first - they are usually missing mandatory fields, broken references (a contract pointing at a deleted provider), invalid controlled codes, or LEI/date format problems. The deposit package will build cleanly once the register passes validation.
Forgot admin password
Run the recovery command inside the app container:
docker exec -it tprm-mlab-app-1 \
/app_mlab_sh/bin/admin-reset --email admin@localhostA one-time reset token is printed; use it at /auth/reset?token=....
Still stuck?
Email [email protected] with your license tier, the output of docker compose ps and the relevant docker compose logs app snippet. Licensed plans get priority routing.