No description
Find a file
Solace System Renovate Fox 99527a79aa
Some checks failed
ci/woodpecker/pr/test Pipeline failed
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/release Pipeline was successful
chore(deps): update terraform random to v3.8.1
2026-01-27 21:15:22 +00:00
.woodpecker chore(deps): update ghcr.io/cocogitto/cog:latest docker digest to 175ee39 2026-01-26 23:16:00 +00:00
chart fix: increase the storage 2026-01-10 20:45:29 +01:00
ci chore(deps): update terraform random to v3.8.1 2026-01-27 21:15:22 +00:00
.dockerignore Initial commit: Add utility container LazyLibrarian project structure 2026-01-03 13:19:16 +01:00
.editorconfig Initial commit: Add utility container LazyLibrarian project structure 2026-01-03 13:19:16 +01:00
.gitignore Initial commit: Add utility container LazyLibrarian project structure 2026-01-03 13:19:16 +01:00
CHANGELOG.md chore(version): 0.7.1 2026-01-14 23:33:17 +00:00
cog.toml Initial commit: Add utility container LazyLibrarian project structure 2026-01-03 13:19:16 +01:00
Dockerfile chore(deps): update python:3.14-slim docker digest to 9b81fe9 2026-01-21 00:13:08 +00:00
entrypoint.sh chore: make entrypoint.sh executable 2026-01-04 12:34:09 +01:00
README.md feat: standardize user/group IDs to 1568 across container config 2026-01-04 14:13:57 +01:00
renovate.json Initial commit: Add utility container LazyLibrarian project structure 2026-01-03 13:19:16 +01:00
werf.yaml fix: Add version tracking and fix werf context- Add version.txt file with LazyLibrarian SHA for tracking- Fix werf.yaml by adding context field for proper build 2026-01-03 14:07:14 +01:00

LazyLibrarian Container

Build Status Docker Pulls License

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

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

  1. Access the Web UI: Open http://localhost:5299/home in your browser
  2. Configure Basic Settings: Set up download clients, API keys, and preferences
  3. Add Authors: Search for and add your favorite authors to track
  4. Configure Processing: Set up post-processing for downloaded books
  5. 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

  1. Permission Denied: Ensure volume permissions match PUID/PGID
  2. Port Conflict: Change host port mapping if 5299 is in use
  3. Slow Startup: Initial metadata download can take time
  4. 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. 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


Note: This container follows Docker and security best practices for production deployments. Always test in a development environment before production use.