openreader/docs-site/docs/start-here/docker-quick-start.md
Richard R 9b9206f50d refactor(audiobooks): migrate audiobook pipeline to object storage
This commit restructures the audiobook generation and serving layer to rely exclusively on S3-compatible blob storage, removing the dependency on local filesystem paths.

- Bundle `ffmpeg` and `ffprobe` binaries via npm to ensure portability across environments.
- Update API routes to stream audio directly from blob storage instead of local disk.
- Remove legacy migration endpoints and filesystem-based indexing logic.
- Add startup scripts to facilitate the transition from local to remote storage.

BREAKING CHANGE: Audiobook functionality is now strictly dependent on S3 configuration. The previous filesystem-based storage method has been removed.
2026-02-11 02:44:34 -07:00

2.5 KiB

title
Docker Quick Start

Prerequisites

  • A recent Docker version installed
  • A TTS API server that OpenReader can reach (Kokoro-FastAPI, Orpheus-FastAPI, DeepInfra, OpenAI, or equivalent)

:::note If you have suitable hardware, you can run Kokoro locally with Docker. See Kokoro-FastAPI. :::

1. Start the Docker container

Minimal setup (auth disabled, embedded storage ephemeral, no library import):

docker run --name openreader-webui \
  --restart unless-stopped \
  -p 3003:3003 \
  -p 8333:8333 \
  ghcr.io/richardr1126/openreader-webui:latest

Fully featured setup (persistent storage, embedded SeaweedFS weed mini, optional auth):

docker run --name openreader-webui \
  --restart unless-stopped \
  -p 3003:3003 \
  -p 8333:8333 \
  -v openreader_docstore:/app/docstore \
  -v /path/to/your/library:/app/docstore/library:ro \
  -e API_BASE=http://host.docker.internal:8880/v1 \
  -e API_KEY=none \
  -e BASE_URL=http://localhost:3003 \
  -e AUTH_SECRET=<paste_the_output_of_openssl_here> \
  ghcr.io/richardr1126/openreader-webui:latest

You can remove /app/docstore/library if you do not need server library import. You can remove either BASE_URL or AUTH_SECRET to keep auth disabled.

Quick notes:

  • API_BASE should point to your TTS server base URL.
  • Expose 8333 for direct browser access to embedded SeaweedFS presigned URLs.
  • If 8333 is not exposed, uploads still work through /api/documents/blob/upload/fallback.
  • To enable auth, set both BASE_URL and AUTH_SECRET.
  • DB migrations run automatically during container startup via the shared entrypoint.

For all environment variables, see Environment Variables. For app/auth behavior, see Auth. For database startup and migration behavior, see Database and Migrations. For blob behavior and mounts, see Object / Blob Storage.

2. Configure settings in the app UI

  • Set TTS provider and model in Settings
  • Set TTS API base URL and API key if needed
  • Select the model voice from the voice dropdown

3. Update Docker image

docker stop openreader-webui || true && \
docker rm openreader-webui || true && \
docker image rm ghcr.io/richardr1126/openreader-webui:latest || true && \
docker pull ghcr.io/richardr1126/openreader-webui:latest

Visit http://localhost:3003 after startup.