diff --git a/README.md b/README.md index 35e24cb6..726caf84 100644 --- a/README.md +++ b/README.md @@ -79,10 +79,11 @@ terminal: ```shell silverbullet ``` - -By default, SB will bind to port `3000`, to use a different port use the -`--port` flag. By default SB doesn’t offer any sort of authentication, to add -basic password authentication, pass the `--user` flag (e.g. `--user pete:1234`). +By default, SB will bind to port `3000` on all interfaces. To specify a +different address or port to listen on, use the `--hostname` and `--port` +options. By default SB doesn’t add authentication, to add +basic password authentication (BasicAuth), pass the `--user` flag (e.g. +`--user pete:1234` for username `pete` and password `1234`). Once downloaded and booted, SB will print out a URL to open SB in your browser (spoiler alert: by default this will be http://localhost:3000 ). diff --git a/cmd/server.ts b/cmd/server.ts index 4a96177c..e9842776 100644 --- a/cmd/server.ts +++ b/cmd/server.ts @@ -5,11 +5,12 @@ import { AssetBundle, AssetJson } from "../plugos/asset_bundle/bundle.ts"; export function serveCommand(options: any, folder: string) { const pagesPath = path.resolve(Deno.cwd(), folder); + const hostname = options.hostname || "0.0.0.0"; const port = options.port || 3000; console.log( - "Going to start Silver Bullet on port", - port, + "Going to start Silver Bullet on", + `${hostname}:${port}`, "serving pages from", pagesPath, "with db file", @@ -17,6 +18,7 @@ export function serveCommand(options: any, folder: string) { ); const httpServer = new HttpServer({ + hostname, port: port, pagesPath: pagesPath, dbPath: path.join(pagesPath, options.db), diff --git a/server/http_server.ts b/server/http_server.ts index dffbcaf5..cb25d422 100644 --- a/server/http_server.ts +++ b/server/http_server.ts @@ -7,6 +7,7 @@ import { SpaceSystem } from "./space_system.ts"; import { parseYamlSettings } from "../common/util.ts"; export type ServerOptions = { + hostname: string; port: number; pagesPath: string; dbPath: string; @@ -20,12 +21,14 @@ const staticLastModified = new Date().toUTCString(); export class HttpServer { app: Application; systemBoot: SpaceSystem; + private hostname: string; private port: number; user?: string; settings: { [key: string]: any } = {}; abortController?: AbortController; constructor(options: ServerOptions) { + this.hostname = options.hostname; this.port = options.port; this.app = new Application(); //{ serverConstructor: FlashServer }); this.user = options.user; @@ -129,13 +132,14 @@ export class HttpServer { }); this.abortController = new AbortController(); - this.app.listen({ port: this.port, signal: this.abortController.signal }) + this.app.listen({ hostname: this.hostname, port: this.port, signal: this.abortController.signal }) .catch((e: any) => { console.log("Server listen error:", e.message); Deno.exit(1); }); + const visibleHostname = this.hostname === "0.0.0.0" ? "localhost" : this.hostname; console.log( - `Silver Bullet is now running: http://localhost:${this.port}`, + `Silver Bullet is now running: http://${visibleHostname}:${this.port}`, ); } diff --git a/silverbullet.ts b/silverbullet.ts index 9e0e3467..e15bd79e 100755 --- a/silverbullet.ts +++ b/silverbullet.ts @@ -19,6 +19,7 @@ await new Command() .usage(" | (see below)") // Main command .arguments("") + .option("--hostname ", "Hostname or address to listen on") .option("-p, --port ", "Port to listen on") .option("--db ", "Filename for the database", { default: "data.db", diff --git a/website/Silver Bullet.md b/website/Silver Bullet.md index 55f985f7..406b9712 100644 --- a/website/Silver Bullet.md +++ b/website/Silver Bullet.md @@ -18,7 +18,7 @@ Let’s have a look at some of its features. * Silver Bullet is [open source, MIT licensed](https://github.com/silverbulletmd/silverbullet) software. ![Screencast screenshot](demo-video-screenshot.png) -To get a good feel of what Silver Bullet is capable of, [have a look at at this **introduction video**](https://youtu.be/VemS-cqAD5k). +To get a good feel of what Silver Bullet is capable of, [have a look at at this introduction video](https://youtu.be/VemS-cqAD5k). ## Try it Here’s the kicker: @@ -103,7 +103,7 @@ To run Silver Bullet, create a folder for your pages (it can be empty, or be an silverbullet ``` -By default, Silver Bullet will bind to port `3000`, to use a different port use the the `--port` flag. By default Silver Bullet is unauthenticated, to password-protect it, specify a username and password with the `--user` flag (e.g. `--user pete:1234`). +By default, Silver Bullet will bind to port `3000`, to use a different port use the the `--port` flag. By default Silver Bullet is unauthenticated, to password-protect it, specify a username and password with the `--user` flag (e.g. `--user pete:mypassword`). Once downloaded and booted, Silver Bullet will print out a URL to open SB in your browser (by default this will be http://localhost:3000 ).