542
stars
1,038
commits
Ruby
primary language
Sep 10, 2026
updated
Writebook is an easy-to-use application for publishing content on the web. Content is authored in Markdown, and books can contain picture pages, chapters, and title pages. Books can be published privately or publicly, and are searchable.
Writebook is distributed as a Docker image. The simplest way to install and run it is by using ONCE.
To get started, paste this snippet into a terminal on the machine where you want to install Writebook:
curl https://get.once.com/writebook | sh
If you'd rather set the Docker image up yourself, you can use docker run or docker compose to do that.
The official image is ghcr.io/basecamp/writebook.
You'll need to route the incoming web traffic to ports 80 and 443 (or just 80 if you run without SSL).
To persist the storage of the application, mount a Docker volume to /rails/storage.
You can configure the SSL setting with the following environment variables:
SSL_DOMAIN - enable automatic SSL via Let's Encrypt for the given domain nameDISABLE_SSL - alternatively, set DISABLE_SSL to serve over plain HTTPInstall dependencies:
bin/setup
Start the development server:
bin/dev
Ruby
44.3%
HTML
33.2%
CSS
14.5%
JavaScript
7.2%
542
stars
1,038
commits
Ruby
primary language
Sep 10, 2026
updated
Writebook is an easy-to-use application for publishing content on the web. Content is authored in Markdown, and books can contain picture pages, chapters, and title pages. Books can be published privately or publicly, and are searchable.
Writebook is distributed as a Docker image. The simplest way to install and run it is by using ONCE.
To get started, paste this snippet into a terminal on the machine where you want to install Writebook:
curl https://get.once.com/writebook | sh
If you'd rather set the Docker image up yourself, you can use docker run or docker compose to do that.
The official image is ghcr.io/basecamp/writebook.
You'll need to route the incoming web traffic to ports 80 and 443 (or just 80 if you run without SSL).
To persist the storage of the application, mount a Docker volume to /rails/storage.
You can configure the SSL setting with the following environment variables:
SSL_DOMAIN - enable automatic SSL via Let's Encrypt for the given domain nameDISABLE_SSL - alternatively, set DISABLE_SSL to serve over plain HTTPInstall dependencies:
bin/setup
Start the development server:
bin/dev
Ruby
44.3%
HTML
33.2%
CSS
14.5%
JavaScript
7.2%