先日投稿したおうちサーバー用電子書籍サーバー選定の記事で「いいものが見つからなかったので仕方なくKavitaで妥協した」と書きました。 しかしアイドル時300MiBの消費はやっぱり納得できず、さらに本棚の表示の仕組みがいまいち気に入らなかったりと不満点が多かったので満足できるやつを自分でつくりました。
対応形式は ePUB / PDF / CBZ / CBR です。 私の使い方だとPDFしか使わないのですが、せっかくなので対応しちゃいました。
技術選定は毎度のとおりバックエンドに Go + SQLite、フロントは Bun + Farm + React + Shadcn/ui という非常なモダンな構成になっています。 Dockerで簡単にセットアップできるようになっているのでぜひ試していただきたい! ソースコードは GitHub においてありますよ〜
特徴
フォルダの階層構造に基づいた本の表示

フォルダ構造に制限なし! 勝手に展開して表示することもない!
もとのフォルダ構造のまま表示されるので非常に見つけやすいです。 GUIつきストレージサーバーみたいな感じ
いちおうソート機能もつけています。
検索

タイトルの前方一致とメタ情報の完全一致を組み合わせた検索をすることができます。
シンプルなビューワー

画面がごちゃごちゃしているのが嫌いなのでできるだけシンプルにまとめてみました。 オプションも複雑なのは嫌なので方向・見開き・フォントサイズだけに絞っています。
日本語描画の都合上PDFはサーバーサイドでレンダリングするようになっているので、サーバーのスペックがある程度ないと表示が遅れることがあります。 といっても瞬間的なものなのでそんなに問題ないはず
超軽量
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 13ac41d1866e shelf_book_nginx 0.00% 1.91MiB / 3.88GiB 0.05% 209MB / 210MB 11.5MB / 541kB 2 bcebb5552894 shelf_book_go 0.00% 14.57MiB / 3.88GiB 0.37% 706kB / 208MB 111MB / 38.7MB 11
アイドル時のIntel Macだとこんな感じのリソース消費になります。
競合ツールは200MiB〜1GiB平気で占有してくるのでそれらと比べるとはちゃめちゃに省リソース
1週間でつくったにしてはなかなか使えるソフトができたんじゃないかしら
ただ、webはスマホアプリよりも謎トラップが多いみたいで「Safariで開くとePUBビューワーがたまに操作不能になる」バグを見つけました。 修正方法も思いつかないしAIも役に立たなかったのでぼちぼち直そうかなと思います。
前作ったRSSジェネレータよりも改善点は多そうなのでのんびりメンテナンスしていきますよ〜
アプリなどを作ったりしています! よかったらみていってください→
つくったもの
今のイチオシ↓

