CMS & Publishing 1 service 512 MiB RAM 5 GB disk

Writebook

37signals’ free publishing tool - write and share books, manuals, and docs from your own domain.

One-click deploy, from $5/mo on a Miget plan.

Writebook is 37signals’ free publishing tool: write and share books, manuals, and documentation with a clean, fast reader on your own domain. It is the same Rails stack that runs Basecamp and HEY, distributed as a single Docker image and given away at no cost.

It runs behind Thruster, 37signals’ HTTP/2 proxy, so this template just sets HTTP_PORT to 5000 and DISABLE_SSL=true (Miget terminates TLS) - no wrapper, no sidecar. The content lives in SQLite and uploaded images sit alongside it, so the whole thing is one self-contained container on one volume.

Because the software itself is free, there is no per-book or per-seat bill to escape - the only cost is the small plan it runs on. Publishing platforms that host the same thing take a cut or charge per editor; Writebook serves it from infrastructure you own.

#what you get

  • Books, manuals, and docs with a clean, fast reader
  • The Basecamp/HEY Rails stack, given away free
  • Single container: SQLite + image uploads on one volume
  • Thruster front-end; HTTP_PORT=5000, no proxy wrapper
  • Your content on your own domain, no platform cut
  • MIT-licensed source

#topology

ServiceRolePublic
writebookpublisher + reader (:5000)yes
storage volumeSQLite + uploaded imagesno

#miget sizing

// this stack needs

512 MiB RAM · 5 GB disk · 1 service

A Rails app plus Thruster idles comfortably in 512 MiB; the Hobby plan covers it. Size the volume to your images. Keep replicas at 1 (single SQLite file).

Hobby - recommended fit

$5/mo

1 vCPU · 512 MiB · 10 GiB disk

Headroom for your own apps: 1 GiB at $7/mo

Professional - production

$22/mo

1 vCPU · 2 GiB · 10 GiB disk

Dedicated resources, production SLOs - plan details

One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.

#vs. the managed service

What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.

ServicePlanMonthlyWhat you get
Writebook on Miget 512 MiB plan$5this whole stack, flat - no usage meters, and room left for your own apps
NotionPlus (sites)~$100$10/seat/mo at 10 seats to publish as a site
GitBookPremium~$40$8/editor/mo at 5 editors - hosted docs

Writebook is free software; the only cost is the small plan it runs on. The comparisons are what hosted publishing charges for the same job.

#vs. other PaaS

Estimated monthly cost of running this exact stack (512 MiB RAM, 5 GB disk, 1 container) elsewhere, from published June 2026 rates.

PlatformEst. monthlyNotes
Miget $5 flat compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan
Heroku ~$25 no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown
DO App Platform ~$11 no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here)
Render ~$8 per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service
Railway ~$6 usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top
Fly.io ~$4 cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra

Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.

#deploy it

On Miget

  1. Create a Compose Stack in app.miget.com pointing at the templates repository
  2. Set the stack path to writebook
  3. Set the required variable:
    • SECRET_KEY_BASE, Rails secret (openssl rand -hex 64)
  4. Deploy. Miget layers compose.miget.yaml (RAM, privacy, volumes, managed services) automatically

Locally first?

Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:

git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/writebook
docker compose up -d

Same files, same behavior. The template README covers connection strings and scaling notes.

#faq

Is Writebook really free?

Yes. 37signals released Writebook at no cost and put the source under the MIT license. There is no purchase, no license server, and no per-book fee - you only pay for the small Miget plan it runs on.

How does it get onto port 5000 without a wrapper?

Writebook serves through Thruster, which reads HTTP_PORT. This template sets HTTP_PORT=5000 so it listens on Miget’s public port, and DISABLE_SSL=true so Rails does not force HTTPS redirects behind Miget’s TLS termination.

What should I compare it to?

GitBook charges per editor for hosted docs and Leanpub takes a royalty on sales; Notion-as-a-site is per seat. Writebook does the same job - polished, readable publishing - as free software on your own domain.

Ship Writebook today

One compose stack, 512 MiB of RAM, from $5/month flat, and it runs on your laptop with the same files.