セルフホストできる軽量な電子書籍配信サーバーをつくった

カテゴリー: PC
投稿日:
更新日:
書いた人: 山椒ねこまんま

先日投稿したおうちサーバー用電子書籍サーバー選定の記事で「いいものが見つからなかったので仕方なく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ジェネレータよりも改善点は多そうなのでのんびりメンテナンスしていきますよ〜


アプリなどを作ったりしています! よかったらみていってください→ つくったもの
今のイチオシ↓

山椒ねこまんま
山椒ねこまんま

個人アプリ開発者、ブロガー。

UKキーボードのためだけにMacを選んでいる。