- 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
2 KiB
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 routes8333: 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/fallbackwhen direct upload fails/unreachable. - Read/download path: blob/content serving route
/api/documents/blob(not the upload fallback route).
Recommended Docker mounts
| 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_v1keyspace), not as durable files under/app/docstore. - Local filesystem usage for audiobook routes is temporary processing only.