---
title: "Storage"
description: "Storage backends Bookhoarder can use — local disk, S3, or Cloudflare R2."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.bookhoarder.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Storage

Object storage is Bookhoarder's only persistence layer — books, covers, and
profile data all live there, with no separate database. One environment
variable, `STORAGE_DRIVER`, picks the backend; everything else runs through
the same container image or Worker.

- **Local disk** — Write straight to a mounted directory. Simplest option, single instance
only. See [Local disk](/storage/local).
- **S3** — AWS S3, or any S3-compatible store — MinIO, Backblaze B2, R2. See
[S3](/storage/s3).
- **Cloudflare R2** — Runs through the S3 driver everywhere except Cloudflare Workers, which
get a native binding instead. See [Cloudflare R2](/storage/cloudflare-r2).

## Choosing a backend

| Backend | `STORAGE_DRIVER` | Multi-instance safe | Needs a bucket |
| --- | --- | --- | --- |
| [Local disk](/storage/local) | `local` | No — one pod/container only | No |
| [S3](/storage/s3) | `s3` | Yes | Yes |
| [Cloudflare R2](/storage/cloudflare-r2) | `s3` (Docker/Kubernetes) or `r2` (Workers) | Yes | Yes |

This is a deployment-independent choice — see [Deployment](/deployment) for
how each platform runs the container itself.

Source: https://docs.bookhoarder.dev/storage/index.mdx
