The kmweb React UI (dashboard, browsing with facet filters, full-text search, the comic reader, account settings, live updates over SSE) is embedded in the KMServer binary and served at / out of the box. Nothing to configure: http://<host>:25600/ works in a browser immediately, from the Docker image and the standalone binaries alike.
The UI is built from the same source tree as the server and is version-locked to it: upgrading KMServer upgrades the UI, and the two never drift out of sync.
Building from source
A cargo build embeds whatever webui/dist holds at compile time. Build the UI first, or the binary serves a placeholder page telling you to:
cd webui
pnpm install && pnpm build # produces webui/dist
cd .. && cargo build --release -p komga-serverNotes
- KMServer speaks plain HTTP. If you need HTTPS, put any TLS-terminating proxy in front; it can be a dumb pipe, since KMServer tells the SPA and the API apart itself.
- Cross-origin hosting (web UI on a different origin than the API) works once the UI’s origin is listed in
cors.allowed-origins(KOMGA_CORS_ALLOWEDORIGINS). Credentialed requests are always allowed, so the wildcard*is rejected — list origins explicitly. - The web UI’s files and SPA routes are served without authentication — the login page has to load anonymously. Authentication is enforced by the API, same as the Java version.