Skip to content


Repository files navigation

Comics reader

Latest Version Software License GitHub Workflow Status Docker Pulls

Read your comics on your tablet

What is it ?

A nice little comic book reader for tablets and mobile phones. It is not intended to work on a desktop computer.


  • Watch your comic books on your phone or tablet, at home or on the go.
  • Uses your filesystem, has an embedded database.
  • Supports most comics formats : CBZ/CBR/ZIP/RAR, PDF, simple image directory.
  • Internal search engine to find your comics easily
  • Use basic auth credentials (from Nginx/Apache) or use the embedded Database to manage users.


Using docker (Recommended)

docker run -v /your-images-dir:/comics -p 8080:8080 --rm onigoetz/comicsreader

Will start the comics reader using your comic books at /your-images-dir and be available at http://localhost:8080.

With Node

First, you need

  • Nodejs

  • MuPDF for PDF support (brew install mupdf-tools / apt install mupdf-tools)

  • Download/clone this repository on your server

  • Symlink your comics to images in the app's directory

  • Make the images/cache directory writable

  • Run yarn install

  • Run yarn build

You can then start the server with yarn start.

This will index the books and start the server.


Authentication is an optional feature, you can either leverage the basic auth credentials from a server (Apache/Nginx) Or use the built-in database.

This option can be with the COMICS_AUTH_TYPE environment variable. possible values are "basic" (default) or "db"

When using the "db" authentication mode, you need to create users, for this we provide a command-line tool to create them.

Note that the container has to be stopped in order to use the CLI tool as the database is otherwise readonly.

Creating users

sudo docker run --rm -it -v your_images_dir:/comics onigoetz/comicsreader node comics createUser

Changing password

sudo docker run --rm -it -v your_images_dir:/comics onigoetz/comicsreader node comics changePassword

Tweaking the configuration


Basedir has to be specified as an environment variable when starting the server.

COMICS_BASE="comics" yarn start
# OR
docker run -e "COMICS_BASE=comics" ...

Reverse proxy through nginx

location /BD/ {
    proxy_pass http://comics:8080/BD/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Forwarded-Proto $scheme;

Known issues

  • Files with accents in zip (cbz) files don't work.

Credits and technologies