The serve command
The serve command is used to preview a book by serving it over HTTP at
localhost:3000
by default. Additionally it watches the book's directory for
changes, rebuilding the book and refreshing clients for each change. A websocket
connection is used to trigger the client-side refresh.
Specify a directory
The serve
command can take a directory as an argument to use as the book's
root instead of the current working directory.
mdbook serve path/to/book
Server options
serve
has four options: the HTTP port, the WebSocket port, the HTTP hostname
to listen on, and the hostname for the browser to connect to for WebSockets.
For example: suppose you have an nginx server for SSL termination which has a public address of 192.168.1.100 on port 80 and proxied that to 127.0.0.1 on port 8000. To run use the nginx proxy do:
mdbook serve path/to/book -p 8000 -n 127.0.0.1 --websocket-hostname 192.168.1.100
If you were to want live reloading for this you would need to proxy the
websocket calls through nginx as well from 192.168.1.100:<WS_PORT>
to
127.0.0.1:<WS_PORT>
. The -w
flag allows for the websocket port to be
configured.
--open
When you use the --open
(-o
) flag, mdbook will open the book in your your
default web browser after starting the server.
--dest-dir
The --dest-dir
(-d
) option allows you to change the output directory for the
book. If not specified it will default to the value of the build.build-dir
key
in book.toml
, or to ./book
relative to the book's root directory.
Note: The serve
command is for testing, and is not intended to be a
complete HTTP server for a website.