| .woodpecker | ||
| chart | ||
| ci | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitignore | ||
| CHANGELOG.md | ||
| cog.toml | ||
| Dockerfile | ||
| entrypoint.sh | ||
| README.md | ||
| renovate.json | ||
| werf.yaml | ||
LazyLibrarian Container
A production-ready Docker container for LazyLibrarian, the ultimate book and metadata management tool for your digital library.
📚 What is LazyLibrarian?
LazyLibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads, LibraryThing, and optionally Google Books as sources for author info and book info.
Features
- Author Tracking: Follow your favorite authors and automatically get notified of new releases
- Metadata Management: Automatically fetch book metadata, covers, and descriptions
- Download Integration: Works with various download clients (NZB, Torrent)
- Calibre Integration: Optional integration with Calibre for ebook management
- Audio Book Support: Process and organize audiobooks with ffmpeg integration
- RSS Feeds: Monitor multiple sources for new content
- API Support: RESTful API for external integrations
🚀 Quick Start
Docker Compose (Recommended)
services:
lazylibrarian:
image: example/lazylibrarian:latest
container_name: lazylibrarian
environment:
- PUID=1568
- PGID=1568
- TZ=Etc/UTC
- DOCKER_MODS=linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg #optional
volumes:
- ./data:/config
- ./downloads:/downloads
- ./books:/books #optional
ports:
- 5299:5299
restart: unless-stopped
Docker Run
docker run -d \
--name=lazylibrarian \
-e PUID=1568 \
-e PGID=1568 \
-e TZ=Etc/UTC \
-e DOCKER_MODS=linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg \
-p 5299:5299 \
-v /path/to/lazylibrarian/data:/config \
-v /path/to/downloads:/downloads \
-v /path/to/books:/books \
--restart unless-stopped \
example/lazylibrarian:latest
Kubernetes
helm repo add lazylibrarian https://charts.example.com/lazylibrarian
helm install lazylibrarian lazylibrarian/lazylibrarian
📋 Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
PUID |
1568 |
User ID for permissions |
PGID |
1568 |
Group ID for permissions |
TZ |
Etc/UTC |
Timezone setting |
DOCKER_MODS |
"" |
Optional Docker mods for additional features |
Volume Mappings
| Path | Description |
|---|---|
/config |
LazyLibrarian configuration and database |
/downloads |
Download location for books |
/books |
Your book library (optional) |
Optional Features
Calibre Integration
Add the following environment variable to enable Calibre support:
environment:
- DOCKER_MODS=linuxserver/mods:universal-calibre
Then in LazyLibrarian settings under Processing > Calibredb import program, set the path to /usr/bin/calibredb.
Audio Book Conversion
Add ffmpeg support for audiobook processing:
environment:
- DOCKER_MODS=linuxserver/mods:lazylibrarian-ffmpeg
Then in LazyLibrarian settings under Settings > Processing > External Programs, set the ffmpeg path to ffmpeg.
🔧 Advanced Configuration
Custom Dockerfile
This container uses a multi-stage build with the following optimizations:
- Security: Runs as non-root user
- Size: Multi-stage build for minimal final image
- Performance: Python virtual environment for dependency isolation
- Health Checks: Built-in health monitoring
- Security Best Practices: Read-only filesystem where possible, no new privileges
Build from Source
git clone https://github.com/your-org/utility-container-lazylibrarian.git
cd utility-container-lazylibrarian
docker build -t lazylibrarian:latest .
🌐 Access
Once the container is running, access LazyLibrarian at:
- Web Interface:
http://localhost:5299/home - API:
http://localhost:5299/api
📚 Usage Guide
Initial Setup
- Access the Web UI: Open
http://localhost:5299/homein your browser - Configure Basic Settings: Set up download clients, API keys, and preferences
- Add Authors: Search for and add your favorite authors to track
- Configure Processing: Set up post-processing for downloaded books
- Set Up Monitoring: Configure RSS feeds and auto-download rules
Integration with Other Services
LazyLibrarian works well with:
- Sonarr/Radarr: For comprehensive media management
- Plex/Jellyfin: For media server integration
- NZBGet/SABnzbd: For NZB downloads
- qBittorrent/Transmission: For torrent downloads
- Calibre: For advanced ebook management
🛠️ Development
Building Locally
# Clone the repository
git clone https://github.com/your-org/utility-container-lazylibrarian.git
cd utility-container-lazylibrarian
# Build the container
docker build -t lazylibrarian:dev .
# Run with docker-compose
docker-compose up -d
Testing
# Run the test suite
docker-compose -f docker-compose.test.yml up --abort-on-container-exit
# Or run individual tests
bash ci/test.sh
📊 Monitoring
Health Check
The container includes a built-in health check:
docker ps --format "table {{.Names}}\t{{.Status}}"
Logs
# View logs
docker logs -f lazylibrarian
# Follow with timestamp
docker logs -f --timestamps lazylibrarian
🔒 Security Considerations
- Non-root User: Container runs as user
1568:1568 - Minimal Base Image: Based on Python 3.11-slim
- Read-only Filesystem: Configurable for enhanced security
- No New Privileges: Prevents privilege escalation
- Resource Limits: Configure CPU/memory limits in production
🆘 Troubleshooting
Common Issues
- Permission Denied: Ensure volume permissions match
PUID/PGID - Port Conflict: Change host port mapping if 5299 is in use
- Slow Startup: Initial metadata download can take time
- Memory Usage: Monitor with
docker stats lazylibrarian
Debug Mode
Enable debug logging:
environment:
- DEBUG=true
- LOG_LEVEL=DEBUG
📝 Changelog
See CHANGELOG.md for version history and updates.
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- LazyLibrarian - The original application
- LinuxServer.io - Docker best practices and mods
- The awesome community for feedback and contributions
📞 Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: LazyLibrarian Docs
Note: This container follows Docker and security best practices for production deployments. Always test in a development environment before production use.