Skip to content
← All apps

Kavita

Organize and read ebooks, comics and manga with personal reading progress.

Choose your deployment and the way you want to use Selfhost. The instructions below follow that choice.

Set up Kavita

Editable Compose files in your own directory.

  • Persistent application configuration lives in /kavita/config. Add explicit media mounts before creating libraries.
  • Automatic app setup creates the first administrator with a username, password and email, then checks that an administrator exists.
selfhost app --directory ./kavita init kavita

Initialization writes portable files and does not start the app. Review compose.yaml, the private .env and any files in files/, then start it:

selfhost app --directory ./kavita start

No Selfhost dashboard or background service is needed. You can also start these files directly:

cd kavita
docker compose -f compose.yaml up -d

Before configuring integrations

  • Timezone is available as a typed environment setting. The health action checks the running API.
  • Library scanning, readers, users and server preferences remain available in Kavita.
  • This recipe uses the available 0.9.1 container image tag. Patch release names do not necessarily correspond to Docker image tags.
  • Kavita runtime settings, OIDC and library creation are not automated by this profile.

Kavita integrations

Compose service: kavita. These operations use the profile saved when this deployment is created.

Initialize and connect

Supported setup modes: bootstrap.

  • Creates the first administrator only. Existing installations are never reset. Library paths and media access remain under your control.
Setup fields
Administrator username username
string · requiredDefault: "admin"Length: 1 to 64 characters
Administrator password password
secret · requiredLength: 12 to 128 characters
Administrator email email
string · requiredLength: 0 to 254 characters

Save onboarding.json, replace example values and supply env: secrets privately through your shell. Empty apps adds no links; add explicit links when this profile supports them.

{
  "mode": "bootstrap",
  "inputs": {
    "username": "admin",
    "password": "env:SELFHOST_PASSWORD",
    "email": "YOUR_VALUE"
  },
  "apps": []
}
selfhost app --directory ./kavita setup kavita
selfhost app --directory ./kavita setup-plan kavita onboarding.json
selfhost app --directory ./kavita setup-apply kavita onboarding.json --revision REVIEWED_REVISION

Setup modes, secret references and recovery

Native settings

Changes use the app’s Compose environment. Unrelated settings are preserved.

Supported fields (1)
TZ tz
string · advanced

Save a JSON map of the field IDs you want to change as changes.json. Replace FIELD_ID with an ID from the supported fields above, and use its declared value type. Review the plan and replace REVIEWED_REVISION with the revision it returns.

{
  "FIELD_ID": "YOUR_VALUE"
}
selfhost app --directory ./kavita config kavita
selfhost app --directory ./kavita plan kavita changes.json
selfhost app --directory ./kavita apply kavita changes.json --revision REVIEWED_REVISION

Saved changes need service recreation to become active. Existing interpolated environment values stay under your control in .env or Compose.

App actions

Check Kavita health

Check the local Kavita health endpoint without changing the library.

selfhost app --directory ./kavita action kavita check-health

App configuration reference

Versions and updates

This deployment uses the following images. Existing projects retain their saved recipe and images. A new catalogue version does not silently update them.

  • kavita: jvmilazz0/kavita:0.9.1
  • 0.9.1 jvmilazz0/kavita:0.9.1

    Local Docker HTTP startup, native configuration roundtrip, declared read-only actions and container recreation with persistent volumes passed. First administrator setup and initialized state after recreation passed. External provider login and version upgrades require separate validation.

Review compatibility and back up app data before an update. Choose an image version and review the change.

Keep control of your setup

Selfhost remains optional. Your app runs using ordinary Compose files, its own settings and persistent data. Keep the Compose project name and volumes to preserve storage. Configuration exports and setting backups do not include application data.

Standalone CLI guide · Backups and removal · Kavita documentation

Built by Obiente. Your services, your configuration.