#ebook #epub #comics #comic #web-ui #cbz

app eloran

Comics and Ebook web library written in rust, with reading, search, reading status, bookmarks

4 releases (2 breaking)

0.3.1 Feb 4, 2025
0.2.0 Dec 9, 2023
0.1.1 Jun 24, 2023
0.1.0 Jun 24, 2023

#6 in Multimedia

Download history 15/week @ 2024-11-28 100/week @ 2024-12-05 47/week @ 2024-12-12 5/week @ 2024-12-19 5/week @ 2024-12-26 27/week @ 2025-01-02 16/week @ 2025-01-09 87/week @ 2025-01-30 39/week @ 2025-02-06

126 downloads per month

Custom license and GPL-3.0 licenses

2.5MB
3.5K SLoC

Eloran

Comics and Ebook web library written in rust, with reading, search, reading status, bookmarks...

Intro

I used Ubooquity during a few years, but unfortunatly it is not opensource, and there is no read status, so I decided to find another solution.

I tried some alternatives :

  • Komga : good project, but no simple "folder view" ðŸ˜Ĩ
  • Tanoshi ☠ : works well, in rust too ðŸĶ€ðŸš€, but no support for ebooks
  • Calibre web or BicBucStriim : I just can't use Calibre's classification system
  • Kavita : nice project too, but I don't like the Collections system (feels like Calibre)
  • Nextcloud epubreader : an old app, but it doesn't work with most of my collection
  • Stump : very nice project (the best in the list ?), in rust too ðŸĶ€ðŸš€ ! I found it after created Eloran 😅

So here I am, a personal project named after my childrens (Elora and Revan).

Feel free to use, improve, and cry to my low code quality !

Features

  • use a sqlite database
  • store ebooks and comcis covers in database (~10ko per cover, almost 160 Mo for 15000 files)
  • multiple users, with bookmarks pages, reading status with page number (not for pdf), argon2 hashed password
  • keep filesystem tree, with periodic scan of the multiple libraries
  • no cached data, comics images are extracted on the fly
  • comics pages responsive size for optimized mobile network usage
  • small binary : 5 Mio, alpine based image : 13 Mio
  • small css, small compressed svg, no javascript
  • main page loading cost : 5 requests, 164.54 kB / 987 B transferred ⚡ less than 1 kB ! ⚡
  • rust ðŸĶ€ðŸš€

Screenshots

CSS is a work in progress !

grid view

Navigation directly by clicking on the left or right of the comic page (red rectangles are obviously not visible...)

reading

Installation

Default login is admin / admin, then you need to add a new library path (/library if you use podman run command below)

Podman / Docker

Feel free to customize listen port and path...

podman pull ghcr.io/thasos/eloran:latest
podman run -d -p 0.0.0.0:3200:3200 \
    -v /host_data/eloran/sqlite:/opt/eloran/sqlite \
    -v /host_data/library:/library \
    --name eloran \
    ghcr.io/thasos/eloran:latest

From source

⚠ We use SASS for the css, and grass to compile it, so you well need the binary.

git clone https://github.com/thasos/eloran.git
cd eloran
just build
target/x86_64-unknown-linux-gnu/release/eloran

If you don't use just, use it 😁 or just launch cargo build --release (see justfile for exacts commands)

Run dependencies

Debian/Ubuntu (tested with image debian:sid-slim)

sudo apt install libpoppler-glib8t64 libarchive13t64

Build dependencies

Nix with flakes enabled :

nix develop

Arch :

sudo pacman -S libarchive cairo poppler-glib
yay -S grass-sass
# if you want to package it in alpine image
sudo pacman -S musl

Debian/Ubuntu (this part need an update) :

sudo apt install libarchive-dev libcairo2-dev libpoppler-glib-dev
# if you want to package it in alpine image
sudo apt install musl-dev

Rpm (this part need an update) :

sudo dnf install rust-glib-sys-devel.noarch
sudo dnf install rust-cairo-sys-rs0.16-devel.noarch
sudo dnf install cairo-gobject-devel.x86_64
sudo dnf install poppler-glib-devel.x86_64
sudo dnf install libarchive-devel.x86_64

TODO

  • display read status
  • add flags (read status and bookmark) to folder
  • hash password in database !!
  • store session in database (see fn create_router() in src/http_server.rs)
  • pretty error handling
  • more testing
  • allow relative path in library_path
  • fix element numbers for sub directories
  • handle cover.jpg files for directories (or use first file's cover ?)
  • customized css
  • upload files
  • install page at 1st start : admin password, library_path, new user...
  • share files (or directories, or page)
  • grid or list view in preferences
  • progress bar while reading, file info, and grid view
  • easy go to page number while reading and from file info
  • read pdf in new tab
  • better css ðŸĪŠ
  • true ebook reading
  • export read status
  • list "next to read"
  • remove clap and config dependencies (not really needed)

Dependencies

~72MB
~1.5M SLoC