31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
# SSH Portfolio
|
|
|
|
A public, anonymous Node.js SSH server that turns a terminal into a customizable portfolio. Visitors connect with:
|
|
|
|
```sh
|
|
ssh -p 2222 localhost
|
|
```
|
|
|
|
## Quick start
|
|
|
|
```sh
|
|
npm install
|
|
npm start
|
|
```
|
|
|
|
The first run creates `data/config.json` from [`config.example.json`](config.example.json). Edit persona, pages, colors, ports, and admin keys, then use `reload` as an admin or restart the server.
|
|
|
|
## Authentication model
|
|
|
|
Anonymous `none` authentication is intentionally accepted for visitors. Add one or more base64 public-key blobs to `adminPublicKeys` to enable administrator mode; key authentication is optional and never required. Admins get `reload`, `theme`, and `announce` commands.
|
|
|
|
Because this is an intentionally open service, run it in a container or restricted account, use a dedicated port, and do not expose private data through configured pages.
|
|
|
|
## Owner notifications
|
|
|
|
Run `npm run notify` on the owner machine (or use `NOTIFICATION_PORT`) to receive chat and announcement notifications over a localhost-only socket. The protocol is newline-delimited JSON, so it is straightforward to replace with a desktop/mobile notification client.
|
|
|
|
## Extending
|
|
|
|
Pages are data-driven in `config.json`; commands live in `src/server.js` and can be split into modules as the portfolio grows. Pong is intentionally left as the next module: it can use the same session registry and owner-online check.
|