Skip to content

E-reader Access

Nostos publishes your library as an OPDS catalog. Reading apps and e-readers that support OPDS can browse that catalog and download books directly from your library. Examples are KOReader, Thorium Reader and many mobile reading apps. You don’t need to copy files to the device by hand.

This page is for self-Nostos Cloud. Nostos Cloud gives you a username and password for your reader in the same place in Settings.

  • EPUB and PDF files.
  • Audiobooks. A multi-track audiobook is offered as one download, together with a track list that apps which can stream audio use instead.
  • A cover for each book.

Books without a file, such as physical books, are not in the catalog. The catalog is read-only, so a reader app cannot add, change or delete anything in your library.

  1. Open Nostos from the address your reader will use. Use your machine’s address on your home network, for example http://192.168.1.20:5099, or its Tailscale name. Don’t use localhost.
  2. Go to Settings → Library → E-reader access and copy the Catalog address. It ends in /opds/.
  3. In the reader app, add a new OPDS catalog and paste the address.

If Settings says the address only works on this computer, you opened Nostos with localhost. Open it again from its network address and copy the address again.

The catalog is on by default. These settings go in the Opds section of appsettings.json, or into environment variables named Opds__Name:

Setting Default What it does
Enabled true false removes the catalog completely. Settings then says that e-reader access is turned off
PageSize 50 Books per page of the catalog, up to 500
PublicBaseUrl not set The address the links in the catalog use, for example https://nostos.example.ts.net. Usually not needed: see below

Nostos builds the links in the catalog from the address the reader used to connect. Behind a reverse proxy that forwards the X-Forwarded-Proto and X-Forwarded-Host headers, this is already correct. Set PublicBaseUrl only when downloads fail because the proxy does not forward those headers.