Skip to content
readchekPublic

About

Cross-platform reader for manga, manhwa, comics, and books, with self-hosted server support.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Chek

Chek

An e-reader for your books and comics. Your choice of source.

Website · Documentation · Issues

In development. A personal project.

Overview

Chek is a ground-up redesign and direct successor to Chibi Manga. Manga and manhwa are at its heart, alongside e-books and other comics.

The goal is a clean, reliable reader for local files and libraries served by Komga, Kavita, or Chek's own server. The planned open-source Chek server will be a standalone library server with an extension/import mechanism. You can use the reader with your preferred source; Chek's server is optional.

The landing page is live at chek.page. The new clients and server are still being built; supported formats and launch features are not yet finalized.

Repositories

This repository is the Chek server. It is in early development: it can scan a folder, read EPUB, ComicInfo, PDF, MOBI, AZW3, FB2, plain text and Markdown metadata, serve the files, comic pages and covers, and sync each reader's position between devices. See server design for what is settled and what comes next.

The clients' planned scope is described in product direction.

Running the server

Building needs libvips for cover thumbnails and libarchive for RAR and 7-Zip comics: apt install libvips-dev libarchive-dev on Debian or Ubuntu, brew install vips libarchive on macOS.

cargo run --bin chek

On its first start the server has no accounts and logs a one-time setup token. Use it to create the admin, who gets a session token back:

curl -X POST localhost:8080/api/v1/setup \
  -H 'content-type: application/json' \
  -d '{"setupToken": "<from the log>", "name": "admin", "password": "<password>"}'

Send that token as Authorization: Bearer <token> on every other request:

curl -X POST localhost:8080/api/v1/libraries -H "Authorization: Bearer $TOKEN" \
  -H 'content-type: application/json' \
  -d '{"name": "Comics", "path": "/path/to/comics"}'
curl localhost:8080/api/v1/libraries/1/publications -H "Authorization: Bearer $TOKEN"

Admins add readers with POST /api/v1/users and choose which libraries each one may open. The API is described in openapi.yaml.

Reader apps that speak OPDS 2, such as Thorium or KOReader, can browse and download from http://<server>:8080/opds/v2/catalog with a Chek name and password.

Settings come from environment variables: CHEK_BIND (address, default 127.0.0.1:8080), CHEK_DATA_DIR (database and covers, default ./data) and CHEK_SCAN_WORKERS (default one fewer than the cores). The server speaks plain HTTP, so put it behind a reverse proxy with HTTPS before reaching it from outside your home network, and list the proxy's address or range in CHEK_TRUSTED_PROXIES (comma-separated, such as 10.0.0.0/8) so sign-in limits apply per client rather than to everyone behind the proxy. Behind Cloudflare, also set CHEK_CLIENT_IP_HEADER=CF-Connecting-IP. CHEK_SETUP_TOKEN (32 characters or more) replaces the logged setup token, for setting up a server without reading its log. Admins can upload files into a folder library with PUT /api/v1/libraries/{id}/files/{path}, which needs the folder mounted read-write; CHEK_MAX_UPLOAD_BYTES caps each file (default 2 GiB). Admins can also add a Komga or Kavita server as a library, which Chek syncs every CHEK_SOURCE_SYNC_MINUTES (default 60) and reads pages and files from; see Komga libraries and Kavita libraries. Covers and pages fetched through source extensions are cached on disk up to CHEK_EXTENSION_IMAGE_CACHE_MB (default 2048; 0 turns it off), and CHEK_BROWSER_SOLVER_URL points extensions that need a browser, for sites behind Cloudflare, at a FlareSolverr-compatible service. Interactive browser sessions use CHEK_BROWSER_EXECUTABLE, an absolute Chromium path; see the extension guide. People can sign in through OpenID Connect providers such as Authentik, Authelia or Google, set up with CHEK_PUBLIC_URL, CHEK_OIDC_PROVIDERS and CHEK_OIDC_<ID>_*; see Sign-in providers. RUST_LOG sets the log level, and OTEL_EXPORTER_OTLP_ENDPOINT sends logs and request traces to an OpenTelemetry collector over OTLP/HTTP, following the standard OTEL_* variables.

CHEK_DEMO_USERS names shared accounts whose password is public, which can't be changed and keep no reading places.

To run a demo instance with the reader test corpus loaded, on Dokploy or with Docker Compose, see deploying a demo instance.

With Docker, use the image CI publishes for amd64 and arm64, and read the setup token from docker logs chek:

docker run -d --name chek -p 8080:8080 -v chek-data:/data -v /path/to/comics:/library:ro \
  ghcr.io/readchek/chek:latest

latest is the newest release, such as 0.1.0, and edge is the newest commit on main. A release is a tag on main named by its version, which CI publishes: run the Release workflow in the Actions tab with the version, or git tag 0.1.0 && git push origin 0.1.0. To build the image yourself, docker build -t chek ..

About

Cross-platform reader for manga, manhwa, comics, and books, with self-hosted server support.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages