Sign inSign up

chicohaager/lectoria

By chicohaager

Updated about 1 year ago

📚 Modern digital library management system with embedded SQLite, multilingual support, and PWA ca

Image
0

1.0K

chicohaager/lectoria repository overview

📚 Lectoria BookManager - Docker Hub Repository

Overview

Lectoria is a professional, full-stack digital library management system built with Node.js and React. Upload, organize, and share your PDF and EPUB files with enterprise-grade security, beautiful cover images, and advanced sharing capabilities.

🚀 Professional Docker Features

  • PUID/PGID Support - Automatic file permission management
  • Init System - Proper signal handling with dumb-init
  • Health Checks - Built-in monitoring and self-healing
  • SQLite Database - No external dependencies required
  • Production Ready - Enterprise security and reliability

🔗 GitHub Repository: chicohaager/lectoria


✨ Key Features

📖 Book Management
  • PDF and EPUB file upload with drag-and-drop interface
  • Book cover image support (JPG, PNG, WEBP)
  • Smart search and filtering by title, author, or type
  • Real-time download analytics and counters
🔐 Security & Authentication
  • JWT-based secure authentication
  • Role-based access control (Admin/User)
  • Rate limiting and security headers
  • Input validation and file type checking
🚀 Advanced Sharing
  • Create public shareable links for books
  • Flexible expiration options (permanent, 24h, 7 days)
  • One-click copy to clipboard functionality
  • Access tracking and download statistics
🎨 Modern UI/UX
  • Beautiful dark mode with smooth transitions
  • 14 Languages Supported: EN, DE, FR, ES, IT, PT, NL, RU, PL, TR, ZH, JA, KO, AR
  • Material Design components and icons
  • Responsive design for all devices
  • Localized date formatting for all languages
🏠 NAS & Home Server Ready
  • PUID/PGID Support - Automatic permission management
  • Optimized for ZimaOS, Synology, QNAP, Unraid
  • Persistent storage with Docker volumes
  • Low resource usage, perfect for home labs
  • Health checks and auto-restart capabilities

🚀 Quick Start

Simple Setup (No External Database Required!)
# Run Lectoria with embedded SQLite database and proper permissions
docker run -d \
  --name lectoria \
  -p 3000:3000 \
  -e PUID=1000 \
  -e PGID=1000 \
  -e JWT_SECRET="your-secret-key-here" \
  -v lectoria-data:/app/data \
  -v lectoria-uploads:/app/uploads \
  chicohaager/lectoria:latest

PUID/PGID Support: Set PUID and PGID to your user/group IDs for proper file permissions (run id to find yours).

version: '3.8'
services:
  lectoria:
    image: chicohaager/lectoria:latest
    container_name: lectoria
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - JWT_SECRET=your-secure-secret-key
      - DB_PATH=/app/data/lectoria.db
    volumes:
      - lectoria-data:/app/data
      - lectoria-uploads:/app/uploads
    restart: unless-stopped

volumes:
  lectoria-data:
  lectoria-uploads:

Access: http://localhost:3000
Default Login: admin / admin123


🏗️ Architecture

Frontend: React 18 + Material-UI
Backend: Node.js + Express.js
Database: SQLite (embedded, no setup required!)
Storage: File system with validation
Authentication: JWT with bcrypt


📱 Platform Support

  • Architecture: linux/amd64, linux/arm64
  • Compatible with: Docker, Podman, Kubernetes
  • NAS Systems: ZimaOS, Synology, QNAP, Unraid
  • Cloud Platforms: AWS, GCP, Azure, DigitalOcean

🔧 Environment Variables

VariableDefaultDescription
NODE_ENVproductionApplication environment
PORT3000Server port
JWT_SECRETrequiredJWT signing secret
DB_PATH/app/data/lectoria.dbSQLite database path

💾 Volumes & Persistence

Container PathPurposeSize Estimate
/app/dataSQLite database~50MB
/app/uploadsPDF/EPUB filesVaries

⚠️ Important: Always use persistent volumes for production to retain data across container updates.


🏠 NAS-Specific Setup

ZimaOS
volumes:
  - /DATA/AppData/lectoria/data:/app/data
  - /DATA/AppData/lectoria/uploads:/app/uploads
Synology
volumes:
  - /volume1/docker/lectoria/data:/app/data
  - /volume1/docker/lectoria/uploads:/app/uploads
QNAP
volumes:
  - /share/Container/lectoria/data:/app/data
  - /share/Container/lectoria/uploads:/app/uploads

📊 Tags & Versions

TagDescriptionSize
latestLatest stable release (SQLite)~180MB
v2.4Version 2.4 with SQLite (simplified deployment)~180MB
v2.3Version 2.3 with PWA support~200MB
v2.1Version 2.1 with dark mode & multilingual support~200MB
v2.0Version 2.0 with cover images~200MB
v1.0Initial release~180MB

🔒 Security Best Practices

  1. Change default credentials immediately after first login
  2. Set a strong JWT_SECRET (use openssl rand -hex 32)
  3. Use HTTPS in production with reverse proxy
  4. Regular backups of data volume (includes SQLite database)
  5. Update regularly for security patches

📚 Documentation & Support


🤝 Contributing

Contributions welcome! Check our contributing guidelines and feel free to submit issues or pull requests.


📄 License

MIT License - Free for personal and commercial use.


Created by @chicohaager | ⭐ Star on GitHub

Tag summary

Content type

Image

Digest

sha256:84548d15d

Size

206.3 MB

Last updated

about 1 year ago

docker pull chicohaager/lectoria