Self-hosting
One image and Postgres, with sign-in built in, started with Docker Compose. Your mail, your files and your models stay on your machine.
Mid-rewrite. Campbooks is being rebuilt from scratch in Rust; this page covers the new version, which is early and moving fast (mail sync and the AI pass are still landing). The older Rails version still exists, but it is unstable and unmaintained, and it no longer gets fixes.
:8080volume--profile aiEverything you need lives in the deploy folder of the repository.
git clone --branch next https://github.com/notacamp/campbooks
cd campbooks/deployCopy the example settings, then set a database password and the address people will use.
cp .env.example .env
# then edit .env:
POSTGRES_PASSWORD=change-me
CAMPBOOKS_PUBLIC_URL=http://localhost:8080Starts Campbooks (sign-in is built in) and Postgres. Migrations run on startup.
docker compose up -dThe health check answers once the server and the database are up.
curl http://localhost:8080/api/v1/system/health
# {"status":"ok","database":"ok"}Go to http://localhost:8080/. The first person to sign in creates the workspace and invites the others from Settings → Members.
open http://localhost:8080/You need Docker with Compose v2. Without local AI it runs comfortably on a small server; for local AI, the deciding and search models run fine on CPU, and writing is much faster on a GPU or a hosted open-weight endpoint.
Campbooks only uses open-weight models, one per job: deciding, writing, reading and search. Run them next to it with one profile, or point any job at an OpenAI-compatible endpoint you trust.
Local AI guideopenssl rand -hex 32
# CAMPBOOKS_AI__DECIDE__API_KEY=<that value>docker compose --profile ai up -ddocker compose exec ollama ollama pull qwen3:8bPull the new image and restart. Database migrations run on startup. Back up the database and file volumes first.
Upgrades and backupsdocker compose pull && docker compose up -dThe hosted version is rolling out a few at a time.