Self-hosted library
What
I stumbled across the XTEINK X4 e-Reader in July 2026 and decided to get into using e-Readers again. I will link the XTEINK X4 reader below in also a short review essay found here.
Essentially, the XTEINK is able to access an OPDS (Open Publication Distribution System) and so I thought it fitting to create a private ebook library that lives on my Raspberry Pi 5. Any epub dropped into a folder on my Mac is uploaded via a script and appears in the library on its own. Then I can pull it onto my Xteink X4 over my home network.
Why
My reading life was scattered: epubs in download folders, a collection locked inside Apple Books in a quietly mangled on-disk format, and a new e-reader with no clean way to feed it. I wanted one canonical shelf that I own end to end, and an honest excuse to learn Docker, deployment, and a small open protocol called OPDS along the way.
How it works
A watcher on the Mac ships dropped epubs to the Pi over Tailscale, where each book is first optimised for the e-ink screen – images flattened to grayscale, embedded fonts and dead CSS stripped, loose markup repaired – before Calibre-Web-Automated catalogues it and serves an OPDS feed on the home LAN. The X4 pulls straight to its SD card. A small Python script recovered my entire Apple Books collection, 152 books re-zipped back into valid epubs, and everything the reader learns – time spent, bookmarks, the passages I highlight – flows back into a ledger on the Pi that renders my own reading dashboard. Reading position follows me between devices through the library itself. Nothing is reachable from outside the house, a claim verified from three countries before the first real book went in.
Current status
In service, and grown well past its first day. What began as a way to move a file from laptop to reader is now a small reading system I own end to end: a library that optimises and repairs its own books, a dashboard that turns the reader’s telemetry into a year in review, reading progress that follows me across devices, and an encrypted copy kept off-site so a house fire would be survivable rather than final. The full journey lives in the project’s decision ledger.
Write to me if you have any questions.