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.
2.5 KiB
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_BASEshould point to your TTS server base URL.- Expose
8333for direct browser access to embedded SeaweedFS presigned URLs. - If
8333is not exposed, uploads still work through/api/documents/blob/upload/fallback. - To enable auth, set both
BASE_URLandAUTH_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.