The installation refuses to start
Refusing to install: image field(s) are still placeholders
Refusing to install: image field(s) are still placeholders
<commit-sha>, registry.example.com or CHANGE_ME in an image repository or tag. It names every offending key.Fill them in your values file with the registry ROOTKey gave you and the released commit SHA of each service. Every workload needs both — not only auth-service.This is a refusal, not a failure. Without it the pods sit in ImagePullBackOff until the timeout, Helm rolls the release back, and the evidence is deleted with it.Refusing to install: stored files would be unreachable
Refusing to install: stored files would be unreachable
PUBLIC_FILE_BASE_URLis unset or still the shipped example.rootkey_public_hostis unset.- The two name different hosts, or the base URL names a host no Ingress in your values file serves.
Timeout waiting for privilege escalation prompt
Timeout waiting for privilege escalation prompt
sudo asks for a password and the installer is not configured to supply one.sudo uses a custom PAM prompt may still be unreachable this way. There, a NOPASSWD sudoers drop-in for the deploy account is the reliable path.ansible-playbook not found
ansible-playbook not found
install.sh from — not on the target. Helm and kubectl are the opposite: the installer places them on the target and runs them there, so they do not need to be local in Scenario C.The installation runs and something fails
ImagePullBackOff, without saying what is missing
ImagePullBackOff, without saying what is missing
bundle/images.txt name the same one.The pull secret is missing or wrong. Every workload needs imagePullSecrets naming the Secret the installer created:describe output carries the registry’s actual response, which the pod status does not.403 from the registry, and nothing in the server logs
403 from the registry, and nothing in the server logs
MinIO Ingress precondition failed
MinIO Ingress precondition failed
rootkey_public_host— the inventory, orgroup_vars/all/main.yml.rootkey_tls_secret_name— the Secret holding that host’s certificate.BUCKET_NAMEunderrootkey_secret_data['aws-bucket']in the vault, and not left asCHANGE_ME.
A migration fails with 'migration was modified after it was applied'
A migration fails with 'migration was modified after it was applied'
applied to the database but missing from the local migrations directory names migrations that ran on your database from an older build. It is a warning, not a failure, and the release notes say when to expect it.The installation succeeded and something does not work
These are the ones worth reading before they happen. Each installs cleanly, reports success, and leaves the platform unusable in a way no log explains.No file, avatar, logo or report opens — and there is nothing in any log
No file, avatar, logo or report opens — and there is nothing in any log
global.envOverrides, not inside a workload’s own section.Files resolve but return AccessDenied
Files resolve but return AccessDenied
anonymous download enabled. If it says anonymous read NOT granted, anonymousRead was turned off. Re-run the MinIO chart — the policy is re-applied on every upgrade, so a helm upgrade restores it.500 on the first file upload, nothing in the gateway log
500 on the first file upload, nothing in the gateway log
contratos semeados means it worked. skip: já há contratos means it was already done. skip: o fixture não veio no bundle means the seed file is missing from the release — contact ROOTKey rather than continuing, because the addresses cannot be invented.Creating a file times out after five seconds, on an idle machine
Creating a file times out after five seconds, on an idle machine
nr_throttled and a large throttled_usec on a host that is mostly idle is the answer. On one measured case a service limited to 200m accumulated 84 throttling events and 4.69 seconds of throttled time during a 3-second test, with 6.7 cores free beside it.Raise the CPU limits in your values file and re-run the deploy stage.Nobody can create an account: PlanNotFound
Nobody can create an account: PlanNotFound
A second user signs up and entitlements stop working
A second user signs up and entitlements stop working
502 on /api, or notifications return 401
502 on /api, or notifications return 401
- 502 on
/api— the frontend’s nginx could not resolve the upstream service name. - 401 with
missing_contexton notifications — a service validated the acting user id as a UUID, and the identity provider does not issue UUIDs.
The deployment reports healthy and then drops to read-only
The deployment reports healthy and then drops to read-only
control-api.rootkey.ai. Fix the firewall rule; the deployment recovers on the next renewal without intervention.Certificates and DNS
The certificate is valid and the browser will not connect
The certificate is valid and the browser will not connect
- Does the name resolve from where the user is — the office network, the VPN? A record that exists only on the public internet does not help a user inside a closed network, and the reverse is also true.
- Does the certificate cover the exact name being used, including any subdomain?
- Is the TLS Secret in the release namespace? A Secret in
defaultis invisible to an Ingress inrootkey.
Do I need a public DNS record?
Do I need a public DNS record?
Getting Help
When contacting ROOTKey support, include:hosts.ini. They hold credentials. If a value is relevant, name the key rather than pasting its content.→ Back to On-Premise Installation

