Instance owner setup now possible via environment variables

Automated n8n deployments can now configure the instance owner through environment variables, eliminating manual first-run setup and enabling infrastructure-as-code workflows.
Setting up n8n has always required a human to click through the UI on first run—creating an admin account, entering credentials, clicking save. That friction is fine for local development or single-server installs, but it breaks automated deployment pipelines, container orchestration, and any setup that needs to be reproducible without human intervention.
Instance owners can now be configured entirely through environment variables. Set N8N_INSTANCE_OWNER_MANAGED_BY_ENV=true alongside the owner's email, name, and a pre-hashed password, and n8n applies those credentials on startup. The password must be bcrypt-formatted since it's stored directly without re-hashing—a requirement that makes sense for secrets-injected deployments where the hash comes from an external system like HashiCorp Vault or a CI secrets store.
When the instance owner is managed this way, the UI reflects it. The personal settings form disables editing for those fields and displays a notice explaining that credentials are controlled externally. Attempting to update that account via the API returns an error. This prevents accidental or intentional overrides through the UI while still allowing the credentials to be refreshed on each startup.
The feature lives in the CLI package with a new loader service architecture that could support additional startup-time configuration steps in the future. A step-based InstanceSettingsLoaderService runs loaders sequentially during the start command initialization.
View Original GitHub Description
Summary
- Allow configuring the instance owner (email, name, password hash) via environment variables during bootstrap
- Add
InstanceSettingsLoaderServicewith a step-based architecture for startup configuration - UI is disabled when the instance owner is configured via env vars: <img width="1560" height="725" alt="image" src="https://github.com/user-attachments/assets/a0985435-b4da-4c70-8673-6bc314abcfec" />
Related Linear tickets, Github issues, and Community forum posts
https://linear.app/n8n/issue/LIGO-422
Review / Merge checklist
- PR title and summary are descriptive. (conventions)
- Docs updated or follow-up ticket created.
- Tests included.
- PR Labeled with
release/backport(if the PR is an urgent fix that needs to be backported)