Skip to main content
Version: Next

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

Auth disabled, embedded storage ephemeral, no library import:

docker run --name openreader \
--restart unless-stopped \
-p 3003:3003 \
-p 8333:8333 \
ghcr.io/richardr1126/openreader:latest
Quick Tips
  • Remove /app/docstore/library if you do not need server library import.
  • Remove either BASE_URL or AUTH_SECRET to keep auth disabled.
  • Set API_BASE to your reachable TTS server base URL.
Port 8333 Exposure

Expose 8333 for direct browser presigned upload/download with embedded SeaweedFS.

If 8333 is not reachable from the browser, direct presigned access is unavailable. Uploads can still fall back to /api/documents/blob/upload/fallback, and document reads/downloads continue through /api/documents/blob.

Auth and Migrations
  • Auth is enabled only when both BASE_URL and AUTH_SECRET are set.
  • DB/storage migrations run automatically at container startup via the shared entrypoint.

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

Legacy image compatibility: ghcr.io/richardr1126/openreader-webui:latest remains available as an alias.

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

If you use a mounted volume for /app/docstore, your persisted data remains after image updates.

Visit http://localhost:3003 after startup.