Server: - Scan jobs record the number of files listed (total), so a running scan can report a real percentage. - New 扫描设置 business settings, shown as the page's 扫描与元数据 card: 自动扫描新文件 (hourly rescan of every library, default on), 刮削封面与简介 (after a completed scan, scrape items that have no online metadata and were never attempted, with the first configured provider; default off), 读取内嵌字幕与歌词 (default on; off hides embedded subtitle streams and lyrics tags), 扫描隐藏文件夹 (default off: names starting with '.' are skipped, e.g. ._film.mp4 resource forks). - MediaAutomation runs the scheduled scans and post-scan scraping as the first active administrator; MediaScanner gains onFinished/isScanning. Client: - Each library card shows its latest scan: 上次扫描 今天 09:12 beside 重新扫描; 正在扫描 · 已处理 62% with a progress bar and 取消; or the failure (路径不可访问…) with 重试 and 查看详情 (the tasks page). Starting or cancelling a scan now stays on the page; scan-jobs is polled. - 扫描与元数据 card beside the list saves each switch with the settings revision, and hides itself on servers without these settings.
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. Follow the getting started guide.
Reader opens on the video page (#/media/video) by default. Use the channel navigation to switch between video, music, audiobooks, and reading; the media entry on the shelf also opens the video page. Media settings include multiple themes; reading controls and bookshelf settings remain separate.
From the video page, open More actions → Media settings → Media libraries to add a server directory or OpenList library. Mount local media into Docker first and enter its container path. Library creation starts a scan. 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.