Skip to content

Serving a web UI

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-server

Notes

  • 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.
Navigation

Type to search…

↑↓ navigate↵ selectEsc close