openreader/docs-site/docs/configure/object-blob-storage.md
Richard R 63483e055e refactor(docs): reorganize and enhance documentation structure
- Rename configuration.md to auth.md for clarity
- Rename storage-and-blob-behavior.md to object-blob-storage.md
- Split server library import into dedicated documentation page
- Rename intro.md to introduction.md
- Merge support.md into support-and-contributing.md
- Add interactive tabs to configuration and setup guides
- Improve cross-references and navigation between documentation pages
- Update sidebar structure and Docusaurus config for new file paths
2026-02-11 04:16:02 -07:00

2 KiB

title
Object / Blob Storage

This page documents storage backends, blob upload routing, and core Docker mount behavior.

Storage backends

  • Embedded (default): SQLite metadata + embedded SeaweedFS (weed mini) blobs.
  • External: Postgres + external S3-compatible object storage.

Storage variables are documented in Environment Variables under the storage sections.

Ports

  • 3003: OpenReader app and API routes
  • 8333: Embedded SeaweedFS S3 endpoint for direct browser blob access

:::info 8333 is only needed for direct browser presigned access to embedded SeaweedFS. :::

Upload behavior

  • Primary path: browser uploads to presigned URL from /api/documents/blob/upload/presign.
  • Fallback path: /api/documents/blob/upload/fallback when direct upload fails/unreachable.
  • Read/download path: blob/content serving route /api/documents/blob (not the upload fallback route).
Mount Type Recommended Purpose Example
/app/docstore Docker named volume Yes (for persistence) Persists SeaweedFS blob data, SQLite metadata DB, migrations, and local runtime temp state -v openreader_docstore:/app/docstore

For server library mounts/import behavior, see Server Library Import.

Private blob endpoint mode

If 8333 is not published externally:

  • Document uploads still work through upload fallback proxy
  • Reads/snippets continue through app API routes
  • Direct presigned browser upload/download to embedded endpoint is unavailable

:::warning Without 8333, expect higher app-server traffic because uploads/downloads go through API routes instead of direct object endpoint access. :::

Audiobook storage note

  • In current versions, audiobook assets live in object storage (audiobooks_v1 keyspace), not as durable files under /app/docstore.
  • Local filesystem usage for audiobook routes is temporary processing only.