Summary
jss start --single-user --idp creates a pod and WebID but no corresponding IDP account, leaving the resulting pod unloggable: registration is disabled (correctly), jss passwd <user> errors with User not found, and the docs don't describe an alternative bootstrap path.
Repro
jss start --port 4443 --root ~/main --single-user --idp --conneg
Logs:
IdP initialized with issuer: http://localhost:4443/ (single-user mode, registration disabled)
Creating single-user pod at http://localhost:4443/me/...
Single-user pod created at http://localhost:4443/me/
Server listening at http://0.0.0.0:4443
Pod is up, WebID at /me/profile/card.jsonld is fully populated. But:
$ jss passwd me -p hunter2 -r ~/main
Error: User not found: me
POST /.pods is intentionally disabled in single-user mode (good), and there's no jss account create command. Schnorr SSO requires a did:nostr:<pubkey> linked on the WebID, which the bootstrapped profile doesn't include. WebID-TLS requires SSL setup. So with the documented flags an OIDC client (e.g. a Solid app using xlogin) has no working path to authenticate.
Expected
--single-user --idp should produce a logged-in-able pod out of the box. Some way for the operator to set or learn the initial credential without external steps.
Suggested fixes (any one would resolve)
- Prompt-on-startup: if
--single-user --idp and no IDP account exists for --single-user-name, prompt for a password interactively (or accept --single-user-password <pw> / JSS_SINGLE_USER_PASSWORD env var for non-TTY use).
jss passwd --create: extend the existing passwd command to seed an account if one doesn't exist.
- One-shot temp password: print a random password to stderr on first startup when no account exists yet, similar to how some servers print an initial admin token.
Option 1 is probably the most discoverable — matches the mental model of "single-user pod = my pod, here's its key."
Environment
- jss
0.0.154 (latest published)
- node
v24.5.0
- Linux x86_64
Happy to send a PR for any of these if you have a preferred direction.
Summary
jss start --single-user --idpcreates a pod and WebID but no corresponding IDP account, leaving the resulting pod unloggable: registration is disabled (correctly),jss passwd <user>errors withUser not found, and the docs don't describe an alternative bootstrap path.Repro
Logs:
Pod is up, WebID at
/me/profile/card.jsonldis fully populated. But:POST /.podsis intentionally disabled in single-user mode (good), and there's nojss account createcommand. Schnorr SSO requires adid:nostr:<pubkey>linked on the WebID, which the bootstrapped profile doesn't include. WebID-TLS requires SSL setup. So with the documented flags an OIDC client (e.g. a Solid app using xlogin) has no working path to authenticate.Expected
--single-user --idpshould produce a logged-in-able pod out of the box. Some way for the operator to set or learn the initial credential without external steps.Suggested fixes (any one would resolve)
--single-user --idpand no IDP account exists for--single-user-name, prompt for a password interactively (or accept--single-user-password <pw>/JSS_SINGLE_USER_PASSWORDenv var for non-TTY use).jss passwd --create: extend the existing passwd command to seed an account if one doesn't exist.Option 1 is probably the most discoverable — matches the mental model of "single-user pod = my pod, here's its key."
Environment
0.0.154(latest published)v24.5.0Happy to send a PR for any of these if you have a preferred direction.