Title: Feature: Single User Mode (--single-user flag) · Issue #76 · JavaScriptSolidServer/JavaScriptSolidServer · GitHub
Open Graph Title: Feature: Single User Mode (--single-user flag) · Issue #76 · JavaScriptSolidServer/JavaScriptSolidServer
X Title: Feature: Single User Mode (--single-user flag) · Issue #76 · JavaScriptSolidServer/JavaScriptSolidServer
Description: Summary Add a --single-user mode for personal/mobile deployments where only one user needs access to the pod. Motivation JSS is designed to be lightweight and run on mobile devices (Android/Termux). In many personal use cases: Only one p...
Open Graph Description: Summary Add a --single-user mode for personal/mobile deployments where only one user needs access to the pod. Motivation JSS is designed to be lightweight and run on mobile devices (Android/Termux)...
X Description: Summary Add a --single-user mode for personal/mobile deployments where only one user needs access to the pod. Motivation JSS is designed to be lightweight and run on mobile devices (Android/Termux)...
Opengraph URL: https://github.com/JavaScriptSolidServer/JavaScriptSolidServer/issues/76
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Feature: Single User Mode (--single-user flag)","articleBody":"## Summary\n\nAdd a `--single-user` mode for personal/mobile deployments where only one user needs access to the pod.\n\n## Motivation\n\nJSS is designed to be lightweight and run on mobile devices (Android/Termux). In many personal use cases:\n- Only one person will use the server\n- Registration should be disabled after initial setup\n- Login friction should be minimized\n- The server acts as a personal data store, not a multi-tenant service\n\n## Proposed Behavior\n\n```bash\nsandymount start --single-user\n# or\njss start --single-user\n```\n\n### First Run\n1. Create default user pod at `/` or `/me/` (configurable)\n2. Generate WebID profile\n3. Optionally prompt for username/password or generate credentials\n4. Disable registration endpoint\n\n### Subsequent Runs\n1. Skip registration UI entirely\n2. Optional: Auto-login if running locally (localhost only)\n3. Optional: Session persistence across restarts\n\n## Implementation Approach\n\n### Config Addition\n```javascript\n// config.js\nsingleUser: false,\nsingleUserPath: '/', // or '/me/'\nsingleUserAutoLogin: false, // localhost auto-login\n```\n\n### CLI Flags\n```\n--single-user Enable single-user mode\n--single-user-path Pod path (default: /)\n--auto-login Auto-login on localhost (security consideration)\n```\n\n### Server Changes\n\n1. **On startup with `--single-user`**:\n - Check if user pod exists at configured path\n - If not, run first-time setup (create pod structure)\n - Disable `/idp/register` endpoint\n - Set `openRegistrations: false` in NodeInfo\n\n2. **Optional auto-login** (localhost only):\n - If request from 127.0.0.1/localhost and no session\n - Auto-authenticate as the single user\n - Security: Only enable with explicit `--auto-login` flag\n\n## Files to Modify\n\n- `src/config.js` - Add singleUser options\n- `src/server.js` - Handle single-user initialization\n- `src/idp/index.js` - Conditionally disable registration\n- `src/idp/interactions.js` - Auto-login logic (optional)\n- `bin/jss.js` - CLI flags\n\n## Security Considerations\n\n- Auto-login should ONLY work for localhost connections\n- Clear warning in logs when auto-login is enabled\n- Single-user mode should still support proper authentication for remote access\n- Consider generating a strong random password on first run and displaying it once\n\n## Related\n\n- Sandymount mobile deployment use case\n- `--invite-only` flag (partial solution)\n- `--no-idp` flag (disables auth entirely, too extreme)\n\n## Acceptance Criteria\n\n- [ ] `--single-user` creates pod on first run\n- [ ] Registration disabled in single-user mode\n- [ ] Existing auth still works for remote access\n- [ ] Optional `--auto-login` for localhost convenience\n- [ ] Documentation updated","author":{"url":"https://github.com/melvincarvalho","@type":"Person","name":"melvincarvalho"},"datePublished":"2026-01-09T17:48:26.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/76/JavaScriptSolidServer/issues/76"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:59768182-a02d-0cf2-936f-2f6459fd7cc4 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9EDA:113E3F:DB1FE9:121763F:697C03C9 |
| html-safe-nonce | 5962922da3beba9c02df0eb5605062f94a90c9bd8ee2ef0ab5e90694f4c0e310 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5RURBOjExM0UzRjpEQjFGRTk6MTIxNzYzRjo2OTdDMDNDOSIsInZpc2l0b3JfaWQiOiI4OTYyMzEwMzQ5OTgyMDA4MjY1IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 86898cb1dc1c3b2b95a69b9d69d1eef995b862a5feb47064c9f1e172560d840d |
| hovercard-subject-tag | issue:3797819023 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/JavaScriptSolidServer/JavaScriptSolidServer/76/issue_layout |
| twitter:image | https://opengraph.githubassets.com/9d134294d3047f996517ca1f11cb88a7c66373342a8a782fbc02893c28587f31/JavaScriptSolidServer/JavaScriptSolidServer/issues/76 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/9d134294d3047f996517ca1f11cb88a7c66373342a8a782fbc02893c28587f31/JavaScriptSolidServer/JavaScriptSolidServer/issues/76 |
| og:image:alt | Summary Add a --single-user mode for personal/mobile deployments where only one user needs access to the pod. Motivation JSS is designed to be lightweight and run on mobile devices (Android/Termux)... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | melvincarvalho |
| hostname | github.com |
| expected-hostname | github.com |
| None | da4f0ee56809799586f8ee546b27f94fe9b5893edfbf87732e82be45be013b52 |
| turbo-cache-control | no-preview |
| go-import | github.com/JavaScriptSolidServer/JavaScriptSolidServer git https://github.com/JavaScriptSolidServer/JavaScriptSolidServer.git |
| octolytics-dimension-user_id | 205442424 |
| octolytics-dimension-user_login | JavaScriptSolidServer |
| octolytics-dimension-repository_id | 958025407 |
| octolytics-dimension-repository_nwo | JavaScriptSolidServer/JavaScriptSolidServer |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 958025407 |
| octolytics-dimension-repository_network_root_nwo | JavaScriptSolidServer/JavaScriptSolidServer |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 2d0972e08a3f8dfff1c4bf1f3d026a7d3a209c26 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width