Install the server
Chek server is one process with one SQLite database. To install it, you run one container with one data volume.
Choose an image tag
Section titled “Choose an image tag”CI publishes the image ghcr.io/readchek/chek for amd64 and arm64.
| Tag | Contents |
|---|---|
latest |
The newest release |
A version, such as 0.3.0 |
That release |
edge |
The newest commit on main |
Any tag above with -browser added, such as latest-browser |
The same server with Chromium, for extensions that need a browser |
Use the plain image unless an extension you run needs a browser. The -browser images turn off Chromium’s own sandbox, so use them only with extensions you trust. For details, read Let extensions get past site challenges.
In every image, the server listens on 0.0.0.0:8080 and keeps its data in /data. It runs as the user chek, with uid 10001.
Run it with Docker
Section titled “Run it with Docker”Mount each folder that you want to read under /library:
docker run -d --name chek --restart unless-stopped -p 8080:8080 \ -e CHEK_SETUP_TOKEN=<32 or more random characters> \ -v chek-data:/data \ -v /srv/books:/library/books:ro \ -v /srv/comics:/library/comics:ro \ ghcr.io/readchek/chek:latestCHEK_SETUP_TOKEN sets the token that creates the first admin account, so you don’t need to read it from the log. Mount a folder read-write, without :ro, only if admins upload files to it.
Run it with Docker Compose
Section titled “Run it with Docker Compose”Create compose.yaml:
services: chek: image: ghcr.io/readchek/chek:latest restart: unless-stopped ports: ["8080:8080"] environment: CHEK_SETUP_TOKEN: ${CHEK_SETUP_TOKEN:?set CHEK_SETUP_TOKEN} volumes: - chek-data:/data - /srv/books:/library/books:ro - /srv/comics:/library/comics:ro
volumes: chek-data:Then start it with a random setup token:
CHEK_SETUP_TOKEN=$(openssl rand -hex 24) docker compose up -dIf a reverse proxy runs on the same Docker network, replace ports with expose: ["8080"]. Then set CHEK_TRUSTED_PROXIES, as Serve Chek over HTTPS describes.
If an extension needs a browser, use a -browser tag and give Chromium 1 GB of shared memory:
image: ghcr.io/readchek/chek:latest-browser shm_size: 1gbRun it on Dokploy
Section titled “Run it on Dokploy”The chek repository has a Compose file for Dokploy at deploy/server/compose.yaml. It runs the edge-browser image.
- Create a Compose application from
readchek/chek, and selectdeploy/server/compose.yaml. - In Environment, set
CHEK_SETUP_TOKENto 32 or more random characters. - To run a release instead of
main, also setCHEK_IMAGE, such asghcr.io/readchek/chek:0.3.0-browser. - Route your domain to the service
chekon port8080, with HTTPS. - Deploy, then create the admin account.
The Compose file mounts no folders of books. To read files from the host, add a read-only bind mount, such as /srv/books:/library/books:ro.
Build it from source
Section titled “Build it from source”To build the server, you need a recent stable Rust and two libraries. Chek uses libvips to make cover thumbnails and libarchive to read RAR and 7-Zip comics.
-
Install the libraries.
Terminal window apt install libvips-dev libarchive-dev # Debian or Ubuntubrew install vips libarchive # macOS -
Clone the repository and run the server.
Terminal window git clone https://github.com/readchek/chekcd chekcargo run --release --bin chek
A server built from source listens on 127.0.0.1:8080 and keeps its data in ./data. To change them, set CHEK_BIND and CHEK_DATA_DIR.
To build the image yourself, run docker build -t chek . in the repository. For the image with Chromium, run docker build --target browser -t chek-browser ..