<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Self-Hosted on Omegion</title><link>https://omegion.dev/tags/self-hosted/</link><description>Recent content in Self-Hosted on Omegion</description><generator>Hugo</generator><language>en-us</language><copyright>Omegion</copyright><lastBuildDate>Sat, 29 Aug 2026 10:15:43 +0200</lastBuildDate><atom:link href="https://omegion.dev/tags/self-hosted/index.xml" rel="self" type="application/rss+xml"/><item><title>Bookhoarder: A Self-Hosted EPUB Library Backed by Object Storage</title><link>https://omegion.dev/2026/08/bookhoarder-a-self-hosted-epub-library-backed-by-object-storage/</link><pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate><guid>https://omegion.dev/2026/08/bookhoarder-a-self-hosted-epub-library-backed-by-object-storage/</guid><description>Why I built a self-hosted EPUB library on top of the S3 bucket I already had, instead of trusting a Kindle library I don&amp;rsquo;t actually own.</description><content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>I like reading on a Kindle, but I don&rsquo;t actually own any of those books. They&rsquo;re
DRM&rsquo;d, tied to one app, and I have no real guarantee I&rsquo;ll be able to open them
again in twenty years if Amazon decides otherwise. For the books I actually
want to keep, I&rsquo;ve been building an EPUB collection for 9 years, and it&rsquo;s a
proper archive by now, sitting in an S3 bucket. What I never solved was the
boring part: browsing that archive and getting a book onto an e-reader without
SSHing in and copying a file by hand. So I built
<a href="https://omegion.dev/projects/bookhoarder/">Bookhoarder</a>
, a self-hosted EPUB
library.</p>
<p>I wanted this one open source from the start, not as an afterthought. Anyone
with a bucket full of EPUBs has the same problem I did, and there was no
reason to keep the fix to myself.</p>
<a class="link-row-ext project-card" href="/projects/bookhoarder/">
  <img class="project-card-logo" src="/projects/bookhoarder/logo_hu_68cbf72f7ed49735.png" width="128" height="128" alt="">
  <div class="link-row-ext-inner">
    <span class="project-card-title">Bookhoarder</span>
    <div class="project-card-meta">Launched August 2026</div>
    <div class="link-row-desc">Self-hosted EPUB library backed by object storage, no database.</div>
  </div>
  <span class="ext-arrow">&#8599;</span>
</a>
<h2 id="object-storage-instead-of-a-database">Object storage instead of a database</h2>
<p>Every self-hosted EPUB app I tried expected me to import my books into its own
database first. I didn&rsquo;t want a second copy of nine years of files living
inside some app&rsquo;s storage format, with its own backup and migration story on
top of the one I already had for the bucket. Bookhoarder skips that step
entirely. The storage driver is pluggable, local disk, S3, or Cloudflare R2,
and the bucket itself is the only thing that persists. There&rsquo;s no database to
provision, back up, or migrate between versions, because there isn&rsquo;t one.
Point it at the bucket I&rsquo;ve been using for years, and the library is already
there.</p>
<h2 id="reading-it-and-getting-it-to-a-device">Reading it and getting it to a device</h2>
<p>The point of the whole thing is getting a book off the shelf and in front of
my eyes, so the rest of Bookhoarder is built around that. There&rsquo;s an
in-browser reader, built on epub.js, for when I just want to read something
without touching a device. Metadata and covers come from Open Library, looked
up automatically and editable by hand when it gets something wrong. And for
the actual e-reader, there are two ways in: send a book over SMTP the same
way Kindle&rsquo;s own send-to-device email works, or point any OPDS-compatible
reader app at Bookhoarder&rsquo;s <code>/opds</code> feed and browse the whole library from the
device itself, no email round-trip needed.</p>
<h2 id="conclusion">Conclusion</h2>
<p>I still read plenty of things in Kindle&rsquo;s own app, that isn&rsquo;t going away. But
the books I actually want to keep now live somewhere I control, in a plain
format any reader can open, not locked to whichever app happens to still exist
in twenty years. The bucket and the OPDS feed are just plumbing. The point was
always owning the file.</p>
]]></content:encoded></item><item><title>Bookhoarder</title><link>https://omegion.dev/projects/bookhoarder/</link><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid>https://omegion.dev/projects/bookhoarder/</guid><description>Self-hosted EPUB library backed by object storage, no database.</description><content:encoded>&lt;p>Bookhoarder is a self-hosted library for an EPUB collection. Upload your
books, read them in the browser, and send them straight to an e-reader.
Object storage is the only persistence layer: local disk, S3, or Cloudflare
R2, no database to provision or migrate between versions.&lt;/p>
&lt;p>It supports multiple reader profiles, metadata and cover lookup through
Open Library, and an OPDS catalog feed so any OPDS-compatible e-reader app
can browse and download books directly. It runs as a Docker container, a
Cloudflare Worker, or on Kubernetes. Licensed under the Elastic License 2.0:
free to self-host and modify, not to resell as a hosted service.&lt;/p>
</content:encoded></item></channel></rss>