You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add configurable local Logto admin email and username, generate a dedicated Logto admin password secret, expose status/help/docs plumbing, and update smoke credentials to read the Logto secret.
- Emit a flat `groups` claim for `oauth2-proxy` and LXD to read.
174
176
- Keep route-auth callback URLs in the managed ZITADEL app up to date when you run `terrariumctl proxy sync`.
175
177
176
-
With local Logto, Terrarium also uses the same `auth.<domain>` public endpoint, but it runs Logto plus Postgres in the managed IDP system instance. Bootstrap is unattended: Terrarium seeds the Logto database, creates the Terrarium OAuth clients, creates the admin role, assigns it to the bootstrap admin email when that user exists, and writes the local client outputs consumed by oauth2-proxy, LXD, and route auth. Logto defaults to the `roles` claim and `openid profile email roles` scopes for both management and LXD unless you override the claim/scope flags.
178
+
With local Logto, Terrarium also uses the same `auth.<domain>` public endpoint, but it runs Logto plus Postgres in the managed IDP system instance. Bootstrap is unattended: Terrarium seeds the Logto database, creates the Terrarium OAuth clients, creates the admin role, assigns it to the bootstrap admin email when that user exists, and writes the local client outputs consumed by oauth2-proxy, LXD, and route auth. The bootstrap email defaults to your Terrarium contact email and the username defaults to `terrarium_admin`; override them with `--logto-admin-email` and `--logto-admin-username`. Logto defaults to the `roles` claim and `openid profile email roles` scopes for both management and LXD unless you override the claim/scope flags.
Copy file name to clipboardExpand all lines: docs/getting-started/installation.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,7 +73,7 @@ Use local Logto instead:
73
73
terrariumctl install --idp local --idp-provider logto
74
74
```
75
75
76
-
Local Logto is heavier than local ZITADEL: Terrarium runs Logto and Postgres in the managed IDP system instance, seeds Logto unattended, and provisions the Terrarium OIDC clients during `terrariumctl idp sync`.
76
+
Local Logto is heavier than local ZITADEL: Terrarium runs Logto and Postgres in the managed IDP system instance, seeds Logto unattended, and provisions the Terrarium OIDC clients during `terrariumctl idp sync`. The bootstrap admin email defaults to your Terrarium contact email and the username defaults to `terrarium_admin`; override them with `--logto-admin-email` and `--logto-admin-username`.
77
77
78
78
Use external generic OIDC, preserving the existing `groups` claim and `openid profile email` scope defaults:
79
79
@@ -126,6 +126,7 @@ The installer will guide you through:
126
126
- IDP provider:
127
127
-`zitadel` is the compatibility default for local installs
128
128
-`logto` selects local Logto or external Logto/Logto Cloud defaults
129
+
- Local Logto bootstrap email and username when `--idp-provider logto` is selected.
Copy file name to clipboardExpand all lines: docs/reference/terrariumctl.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -163,7 +163,7 @@ trm image delete golden-web
163
163
|`--non-interactive`| none | no | interactive mode if omitted | Disables prompts and requires all needed config through flags. |
164
164
|`--yes`| none | no | prompt before destructive actions | Auto-confirms destructive or confirmation prompts. |
165
165
|`--ref`| git branch or tag | no |`main` when invoking `terrariumctl` directly; release-selected tag when run through `install.sh`| Installs a specific Terrarium release tag, or builds from a branch-like source ref such as `main`. |
166
-
|`--email`| email address | yes in non-interactive mode; no in interactive mode | prompted in interactive mode | Sets the Terrarium contact/admin email and default ZITADEL bootstrap admin email. |
166
+
|`--email`| email address | yes in non-interactive mode; no in interactive mode | prompted in interactive mode | Sets the Terrarium contact/admin email and the default local-provider bootstrap admin email. |
167
167
|`--acme-email`| email address | no | falls back to `--email`| Sets the ACME account identity for Traefik and LXD certificate automation. |
168
168
|`--domain`| root domain | no | service domains default to `<service>.<dashed-public-ip>.traefik.me` when omitted | Sets the root domain used to derive service subdomains. |
169
169
|`--manage-domain`| domain | no |`manage.<domain>` when `--domain` is set, otherwise `manage.<dashed-public-ip>.traefik.me`| Overrides the Cockpit domain. |
@@ -185,6 +185,8 @@ trm image delete golden-web
185
185
|`--lxd-oidc-groups-claim`| claim name | no | follows provider default unless set | Overrides the LXD OIDC groups/roles claim. |
186
186
|`--lxd-oidc-scopes`| space-separated scopes | no | follows provider default unless set | Overrides the LXD OIDC scopes. |
187
187
|`--zitadel-admin-email`| email address | no | falls back to `--email`| Sets the initial admin email for self-hosted ZITADEL. |
188
+
|`--logto-admin-email`| email address | no | falls back to `--email` for local Logto | Sets the bootstrap admin email for self-hosted Logto. |
189
+
|`--logto-admin-username`| username | no |`terrarium_admin` for local Logto | Sets the bootstrap admin username for self-hosted Logto. Whitespace and control characters are rejected. |
188
190
|`--generate-root-pwd`| none | yes in non-interactive mode when root has no usable local password unless `--root-pwd-file` is passed; no otherwise | none | Generates a strong Cockpit root password and saves it to `/etc/terrarium/secrets/cockpit_root_password` with root-only permissions. |
189
191
|`--root-pwd-file`| path | yes in non-interactive mode when root has no usable local password unless `--generate-root-pwd` is passed; no otherwise | none | Reads the Cockpit root password from a local file. |
190
192
|`--storage-mode`|`disk`, `partition`, or `file`| yes in non-interactive mode; no in interactive mode | prompted or auto-selected in interactive mode | Selects how the LXD ZFS pool is created. |
@@ -675,6 +677,7 @@ Behavior:
675
677
|`--email`| email address | no | existing configured value | Updates the Terrarium contact/admin email. |
676
678
|`--acme-email`| email address | no | existing configured value or falls back to `--email`| Updates the ACME account email. |
677
679
|`--zitadel-admin-email`| email address | no | existing configured value or falls back to `--email`| Updates the self-hosted ZITADEL bootstrap admin email. |
680
+
|`--logto-admin-email`| email address | no | existing configured value or falls back to `--email` when local Logto is selected | Updates the self-hosted Logto bootstrap admin email. |
678
681
679
682
## set idp
680
683
@@ -697,6 +700,8 @@ Behavior:
697
700
|`--lxd-oidc-scopes`| space-separated scopes | no | follows provider default unless set | Overrides the LXD OIDC scopes. |
698
701
|`--local-idp-outputs-path`| path | no |`/etc/terrarium/zitadel-apps.json` compatibility path | Overrides where local provider client outputs are read/written. |
699
702
|`--zitadel-admin-email`| email address | no | existing configured value or `--email`| Updates the ZITADEL bootstrap admin email when mode is `local`. |
703
+
|`--logto-admin-email`| email address | no | existing configured value or `--email` when provider is `logto` and mode is `local`| Updates the Logto bootstrap admin email when mode is `local`. |
704
+
|`--logto-admin-username`| username | no | existing configured value or `terrarium_admin` when provider is `logto` and mode is `local`| Updates the Logto bootstrap admin username when mode is `local`. Whitespace and control characters are rejected. |
700
705
701
706
External OIDC notes:
702
707
@@ -715,6 +720,7 @@ Local provider notes:
715
720
- Local ZITADEL remains the default when mode is `local` and no provider is set. External OIDC remains generic when no provider is set.
716
721
- Local ZITADEL runs in the `terrarium-idp` LXD system instance, so its data is part of the LXD/ZFS backup set instead of host Docker state.
717
722
- Local Logto also runs in the managed `terrarium-idp` system instance. It starts Logto plus Postgres through `terrarium-logto.service`, seeds the database unattended, and provisions Terrarium clients during `terrariumctl idp sync`.
723
+
- Local Logto bootstrap defaults use `terrarium_email` for `terrarium_logto_admin_email` and `terrarium_admin` for `terrarium_logto_admin_username`; override them with `--logto-admin-email` and `--logto-admin-username` during install or `terrariumctl set idp local --provider logto`.
718
724
- Terrarium auto-provisions a management role named after `terrarium_admin_group`, defaulting to `terrarium-admins`.
719
725
- The bootstrap admin is granted that role automatically when the selected provider can resolve that user.
720
726
- ZITADEL flattens Terrarium role assignments into a `groups` claim. Logto uses its `roles` claim and `openid profile email roles` scopes by default.
0 commit comments