The default driver, and the simplest option for a single-machine setup.
Bookhoarder writes directly to a directory, so mount a volume (or a
PersistentVolumeClaim on Kubernetes) to persist it across restarts.
Leave STORAGE_DRIVER unset, or set it to local
It’s the default.
Mount a volume at /app/.data
Or set LOCAL_STORAGE_PATH to mount somewhere else.
Start the container
Books persist across restarts as long as the volume does.
Configuration
| Variable | Required | Notes |
|---|---|---|
STORAGE_DRIVER |
Yes | local — also the default if unset |
LOCAL_STORAGE_PATH |
No | Defaults to ./.data, resolved against /app — leave it as-is and mount /app/.data |
Docker
docker run -d \
--name bookhoard \
-p 3000:3000 \
-v bookhoard_data:/app/.data \
-e STORAGE_DRIVER=local \
ghcr.io/bookhoard/bookhoarder:latestWhen not to use it
The local driver ties book data to one container’s (or pod’s) filesystem — there’s no way for a second instance to see the same files. That rules it out for:
- Cloudflare Workers, which have no writable filesystem at all — use Cloudflare R2 instead
- Any deployment you want to scale past one replica — use S3 or R2, which every instance can read and write concurrently
See Deploy with Docker for how this fits into a full
container setup, or Deploy on Kubernetes for the
PersistentVolumeClaim version.