我的 mixed sheets (书架显示, 系统设置, OPDS nested in the shelf sheet) with pages (外观与主题, 影音浏览, 播放), and the personal preferences were four separate rows. - 偏好设置 (#/me/settings) holds 外观与主题, 书架, 影音浏览 and 播放 as sections of one page, with a jump bar and ?section=; every control applies at once (影音浏览 loses its save button and unsaved-changes prompt). The shelf's gear still opens the same fields (ShelfSettingsFields) as a sheet shortcut. - 系统设置 becomes three admin pages of 我的 › 管理: 用户管理, 注册与邀请, 服务配置 (#/me/admin/*, lazily loaded). - 连接外部阅读器 (OPDS) is a page (#/me/opds) under 账号, also reached from the 书架 section and the shelf sheet; back returns to whoever opened it. - Old /me/theme|browse|playback and /media/:channel/settings[/:panel] redirect to the matching section; /me/account keeps its page. - Drops MediaSettingsPage and the CSS only it used; docs follow the new paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
reader
One home for your books, movies, series, music, and audiobooks.
A self-hosted reading and media library for browsers and Android, with EPUB typography, comic reading, media playback, and per-user progress sync.
简体中文 · English
Get started · Reading guide (中文) · Media guide (中文) · Configuration · Documentation
Why reader
- Your own libraries: mount existing directories, connect OPDS book catalogs, or add OpenList media directories. Books and media are organized separately; indexes, covers, and user state live in the data directory.
- Built for reading: preserve EPUB publisher styles, detect TXT encodings and chapters, and enjoy comics, paged or scrolling reading, themes, fonts, and text-to-speech.
- Media browsing: browse movies and series, artists and albums, or audiobooks and narrators. Filter by library, search, save favorites, and manage playback history and queues.
- Metadata and organization: read local tags, NFO, artwork, lyrics, and subtitles. Configure TMDB and MusicBrainz for online matching, review candidates, or edit metadata and editions manually.
- Continue across devices: accounts have independent shelves, notes, reading and playback progress. Web video uses DPlayer; audio includes lyrics, speed controls, and a sleep timer. Android supports native background playback.
- Simple hosting: one Docker container serves the backend and Web UI. Media scanning only reads source files, with separate databases and service threads for reading and media.
Supported content
| Type | Support |
|---|---|
| EPUB / TXT | Publisher typography, contents, footnotes; TXT encoding detection and inferred chapters |
| CBZ / ZIP / image directories | Natural page ordering, comic paging, and volumes |
| Basic browser or device viewing without reflow | |
| OPDS | Browse, search, and acquire books; publish a read-only catalog to external readers |
| Movies / series | Artwork, metadata, seasons, episodes, editions, subtitles, and progress |
| Music | Artists, albums, tracks, lyrics, queues, and continuous playback |
| Audiobooks | Narrators, descriptions, chapters, playback speed, and sleep timers |
| OpenList | Scan remote media and sidecar metadata, then play through Reader's authorized streaming API |
Get started
Prepare Docker, Docker Compose, a book directory, and a separate data directory. Open http://<your-host>:5888 after starting the service. The first registered account becomes the administrator. Release images are published on Docker Hub as hectorqin/reader-pro (amd64 / arm64). Follow the getting started guide.
Reader opens on Home (首页), where you can resume reading and playback. The bottom navigation (a sidebar on wide screens) has four tabs: Home, Shelf (书架), Media (影音), and Me (我的). On phones, swipe sideways to move between shelf states and media categories; the wide-screen sidebar has a search box covering both books and media. Me gathers every setting: appearance and theme (one theme shared by reading and media, with a separate reading paper colour), shelf display, media browsing, playback, and account.
As an administrator, open Me → Media libraries (我的 → 媒体库), or More actions → Media library management (更多操作 → 媒体库管理) on the video page, to add a server directory or OpenList library. Mount local media into Docker first and enter its container path. Library creation starts a scan. System settings and Scan and scrape (扫描与刮削) are also under Me → Admin (管理). See the media guide (中文) and OpenList setup (中文).
Documentation
| I want to… | Start here |
|---|---|
| Deploy reader and add books or media | Getting started |
| Use shelves, reading, OPDS, and text-to-speech | Reading guide (中文) |
| Manage media, match metadata, and play content | Media guide (中文) |
| Connect OpenList / NAS / cloud storage mounts | OpenList setup (中文) |
| Configure HTTPS, metadata tools, or TTS | Configuration |
| Back up accounts, reading, and media state | Backup and restore (中文) |
| Develop, test, or build Android | Development, media validation (中文) |
Current limits
- No audio/video transcoding. Playback depends on the browser or device's container and codec support.
- OpenList supports sidecar NFO, artwork, lyrics, and subtitles; remote embedded tags, artwork, and chapters are not read. Some drivers require OpenList Web proxy and correct Range support.
- No TVBox/JAR, media offline downloads, or direct cloud account login. OpenList manages cloud storage mounts.
- PDF viewing is basic;
.rar/.cbrand general book conversion are unsupported. Offline reading depends on content cached on the current device. - Web and Android clients are available. There are no standalone iOS or desktop clients; use a browser on desktop.
Contributing
Bug reports, documentation improvements, and code contributions are welcome. Include reproduction steps, your environment, and redacted logs. See the development guide.