craclock

docker-compose.selfhost.yml runs the craclock binary, Postgres and Caddy together:

docker compose -f docker-compose.selfhost.yml up -d
craclock migrate

Self-hosting keeps every byte of case data on your own infrastructure. The ruleset stream (regulatory updates) still fetches over the network unless you disable it. See Security for how case data is encrypted at rest either way.