openreader/docs-site/docs/getting-started/local-development.md
Richard R 6d5fb65a72 feat(docs): add configurable rate limiting and external docs
Add environment variables for fine-grained control over TTS rate limiting
and Better Auth behavior. Move documentation to external Docusaurus site
with automated deployment workflows.

- TTS rate limiting can now be enabled/disabled via TTS_ENABLE_RATE_LIMIT
- Customizable daily limits for anonymous/authenticated users and IP backstops
- Better Auth rate limiting can be disabled via DISABLE_AUTH_RATE_LIMIT
- Rename library import env vars to IMPORT_LIBRARY_DIRS/DIR
- Add docs-site with Docusaurus and GitHub Actions workflows
- Update README to reference external documentation
2026-02-10 15:11:37 -07:00

2.6 KiB
Raw Blame History

title
Local Development

Prerequisites

  • Node.js (recommended with nvm)
  • pnpm (recommended) or npm
npm install -g pnpm
  • A reachable TTS API server
  • SeaweedFS weed binary (required)
brew install seaweedfs

Optional, depending on features:

  • FFmpeg (required for m4b audiobook generation)
brew install ffmpeg
brew install libreoffice
  • whisper.cpp (optional, for word-by-word highlighting)
# clone and build whisper.cpp (no model download needed  OpenReader handles that)
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
cmake -B build
cmake --build build -j --config Release

# point OpenReader to the compiled whisper-cli binary
echo WHISPER_CPP_BIN="$(pwd)/build/bin/whisper-cli"

:::note Set WHISPER_CPP_BIN in your .env to enable word-by-word highlighting. :::

Steps

  1. Clone the repository.
git clone https://github.com/richardr1126/OpenReader-WebUI.git
cd OpenReader-WebUI
  1. Install dependencies.
pnpm i
  1. Configure the environment.
cp .env.example .env

Then edit .env.

Auth is enabled when both are set:

  • BASE_URL (for local dev, typically http://localhost:3003)
  • AUTH_SECRET (generate with openssl rand -base64 32)

Optional:

  • AUTH_TRUSTED_ORIGINS=http://localhost:3003,http://192.168.0.116:3003
  • Stable S3 credentials via S3_ACCESS_KEY_ID and S3_SECRET_ACCESS_KEY
  • External S3 storage by setting USE_EMBEDDED_WEED_MINI=false and related S3 vars

For all environment variables, see Environment Variables. For app/auth behavior, see Auth. For storage configuration, see Object / Blob Storage. For database mode and migrations, see SQL Database.

  1. Run DB migrations.
  • Migrations run automatically on startup through the shared entrypoint for both pnpm dev and pnpm start.
  • You only need manual migration commands for one-off troubleshooting or explicit migration workflows:
pnpm migrate

:::note If POSTGRES_URL is set, migrations target Postgres; otherwise local SQLite is used. To disable automatic startup migrations, set RUN_DB_MIGRATIONS=false. :::

  1. Start the app.
pnpm dev

Or build + start production mode:

pnpm build
pnpm start

Visit http://localhost:3003.