Skip to content

single-user --idp: no way to seed initial password (can't log in) #323

Description

@melvincarvalho

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)

  1. 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).
  2. jss passwd --create: extend the existing passwd command to seed an account if one doesn't exist.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions