Run it yourself
Two containers, one command.
Run it yourself
This whole site β the Nuxt app and the Abracadabra server it renders from β comes up with one command:
cp .env.docker.example .env # optional: ports, secrets, origin
docker compose up -d --build
open http://localhost:3303A fresh volume boots a completely empty backend. No database is ever shipped: the app's own seeder notices the empty root on first connect and writes the tree you are reading now, which is how you know the seeder works. It is idempotent β it no-ops the moment the tree has content, so restarts never clobber live edits.
Resetting
docker compose down -v wipes the volumes, and that is the whole procedure now. It used to require clearing your browser's site data as well, because a CRDT client reconnecting to a fresh database is simply the peer holding the newer state β it would faithfully push the old tree back in beside the new one, and you would get every page twice.
Since 2.83.0 the server's identity changes when its database is replaced, and the client drops that origin's caches before it connects to anything. The same guard covers restoring a production backup, where the peers re-pushing stale trees would be visitors who never read a release note.
Full details in DOCKER.md.