A modern, self-hosted manga downloader and reader
Features β’ Installation β’ Quick Start β’ Configuration β’ Documentation β’ Contributing
| Problem | MangaShelf Solution |
|---|---|
| π³ Complex Docker setups with multiple containers | Single binary - just download and run |
| π¦ External dependencies (PostgreSQL, Redis) | Self-contained - embedded SQLite database |
| π» CLI-only tools intimidate casual users | Beautiful web UI - accessible from any device |
| π Need separate apps to read downloaded manga | Built-in reader - download and read in one place |
| π§ Difficult configuration and setup | Zero config - works out of the box |
- Beautiful grid view of your manga collection
- Automatic cover art fetching
- Track reading progress across devices
- Smart organization by series, status, and tags
- Search across multiple manga sources simultaneously
- Preview manga details before adding to library
- Language preference filtering
- Duplicate detection
- Concurrent downloads with configurable workers
- Automatic retry with exponential backoff
- Resume interrupted downloads
- Export to CBZ, PDF, or raw images
- Multiple reading modes (single page, double spread, vertical scroll)
- Right-to-left and left-to-right support
- Keyboard shortcuts and touch gestures
- Auto-save reading position
- Night mode and customizable themes
- Scheduled chapter checking
- Per-manga update intervals
- New chapter notifications
- Background downloading
- Built-in sources (MangaDex, MangaSee, Manganato)
- Lua scripting for custom sources
- REST API for integrations
- OPDS feed for e-reader apps
curl -sSL https://mangashelf.dev/install.sh | shDownload the latest release for your platform from the Releases page:
| Platform | Architecture | Download |
|---|---|---|
| Linux | x86_64 | mangashelf-linux-amd64 |
| Linux | ARM64 | mangashelf-linux-arm64 |
| Linux | ARMv7 | [mangashelf-linux-armv7](https://github. com/username/mangashelf/releases/latest/download/mangashelf-linux-armv7) |
| macOS | x86_64 | mangashelf-darwin-amd64 |
| macOS | Apple Silicon | mangashelf-darwin-arm64 |
| Windows | x86_64 | mangashelf-windows-amd64.exe |
docker run -d \
--name mangashelf \
-p 8080:8080 \
-v ./data:/data \
ghcr.io/username/mangashelf:latestOr with Docker Compose:
# docker-compose.yml
version: '3'
services:
mangashelf:
image: ghcr.io/username/mangashelf:latest
container_name: mangashelf
ports:
- "8080:8080"
volumes:
- ./data:/data
environment:
- TZ=America/New_York
restart: unless-stoppeddocker compose up -dHomebrew (macOS/Linux)
brew install username/tap/mangashelfArch Linux (AUR)
yay -S mangashelf-binScoop (Windows)
scoop bucket add extras
scoop install mangashelfNix
nix-env -iA nixpkgs.mangashelf# Clone the repository
git clone https://github.com/username/mangashelf.git
cd mangashelf
# Build (requires Go 1.21+ and Node.js 18+)
make build
# Or install directly
make install# Using the binary
./mangashelf
# Or specify a custom data directory
./mangashelf --data /path/to/mangaNavigate to http://localhost:8080 in your browser.
- Click the + Add button in the top right
- Search for a manga (e.g., "One Piece")
- Select the manga and choose a source
- Click Add to Library
- Select chapters to download
Click on any downloaded chapter to open the built-in reader.
MangaShelf works out of the box with sensible defaults. Configuration is optional.
On first run, a default configuration file is created at:
- Linux/macOS:
~/.config/mangashelf/config.yaml - Windows:
%APPDATA%\mangashelf\config.yaml
# config.yaml
server:
host: "0.0.0.0"
port: 8080
library:
path: "./data/manga"
downloader:
workers: 3
format: "cbz" # cbz, pdf, raw
updates:
enabled: true
interval: "0 */6 * * *" # Every 6 hours
notifications:
enabled: falseSee [Configuration Reference](docs/configuration. md) for all options.
All settings can be overridden with environment variables:
export MANGASHELF_SERVER_PORT=9000
export MANGASHELF_LIBRARY_PATH=/mnt/manga
export MANGASHELF_DOWNLOADER_WORKERS=5./mangashelf --help
Usage:
mangashelf [command]
Commands:
serve Start the web server (default)
version Print version information
migrate Run database migrations
export Export library to JSON
import Import library from backup
Flags:
-c, --config string Path to config file
-d, --data string Path to data directory (default "./data")
-p, --port int Server port (default 8080)
-v, --verbose Enable verbose logging
-h, --help Help for mangashelfπ Full Documentation
- Getting Started Guide
- Configuration Reference
- Supported Sources
- [Custom Scrapers (Lua)](docs/custom-scrapers. md)
- API Reference
- Deployment Guide
- Troubleshooting
- FAQ
| Feature | MangaShelf | Kaizoku | Mangal | Tachiyomi |
|---|---|---|---|---|
| Web UI | β | β | β | β |
| Built-in Reader | β | β | β | β |
| Single Binary | β | β | β | β |
| No External DB | β | β | β | β |
| Self-Hosted | β | β | β | β |
| Desktop/Mobile | β | β | β | π± only |
| Auto Updates | β | β | β | β |
| Notifications | β | β | β | β |
| Custom Sources | β | β | β | β |
| ARM Support | β | β | β |
MangaShelf organizes downloads in a format compatible with popular media servers:
- Komga - Full compatibility with ComicInfo.xml metadata
- Kavita - Automatic library detection
- [Calibre](https://calibre-ebook. com/) - Import via folder monitoring
- Anilist - Sync reading progress, fetch metadata
- [MyAnimeList](https://myanimelist. net/) - (Coming soon)
MangaShelf supports 80+ notification services via Apprise:
- Discord
- Telegram
- Slack
- Pushover
- And many more...
Access your library from e-reader apps using the built-in OPDS feed:
http://your-server:8080/opds
Compatible apps: Librera, Moon+ Reader, Panels, Chunky, and more.
We welcome contributions! Please see our Contributing Guide for details.
# Clone the repository
git clone https://github.com/username/mangashelf.git
cd mangashelf
# Install dependencies
make deps
# Run in development mode (hot reload)
make dev
# Run tests
make test
# Build for all platforms
make build-allmangashelf/
βββ cmd/mangashelf/ # Application entry point
βββ internal/ # Private application code
β βββ api/ # HTTP handlers and routing
β βββ database/ # Database schema and queries
β βββ downloader/ # Download engine
β βββ library/ # Library management
β βββ reader/ # Reader service
β βββ scraper/ # Source providers
βββ web/ # Frontend (Svelte)
βββ docs/ # Documentation
βββ scripts/ # Build and utility scripts
- Core library management
- MangaDex, MangaSee, Manganato sources
- Download queue with retry logic
- Web-based reader
- Basic settings UI
- Scheduled updates
- Notifications
- Anilist integration
- OPDS feed
- Lua custom scrapers
- Import from Tachiyomi backup
- Multi-user support
- PWA / Offline mode
- Reading statistics
- Collections and tags
- MyAnimeList integration
- Manga recommendations
- Social features (sharing, comments)
- Plugin system
See the [Project Board](https://github. com/username/mangashelf/projects/1) for detailed progress.
- π¬ Discord - Chat with the community
- π [Issues](https://github. com/username/mangashelf/issues) - Report bugs or request features
- π‘ [Discussions](https://github. com/username/mangashelf/discussions) - Ask questions and share ideas
- π Wiki - Community documentation
MangaShelf stands on the shoulders of giants:
- [mangal](https://github. com/metafates/mangal) - Inspiration for the scraper architecture
- Kaizoku - Inspiration for the web UI approach
- Tachiyomi - Inspiration for the reading experience
- [gopher-lua](https://github. com/yuin/gopher-lua) - Lua VM for custom scrapers
- Bubble Tea - (Reserved for potential TUI)
MangaShelf is open-source software licensed under the MIT License.
If you find MangaShelf useful, please consider giving it a β on GitHub!





