An eBook and Comics webbased manager

Overview

Booklib - Ebook and Comic library system

Summary

An e-Library system that uses an external database for storage. Designed for large libraries.

Screenshots

Screenshots can be found at https://imgur.com/a/WTzchmS

Docker Installation

  1. docker run (click here for more info)
docker run -d \
  --name=booklib \
  -e DB_HOST=<hostname> \
  -e DB_DATABASE=<database_name> \
  -e DB_USERNAME=<Username> \
  -e DB_PASSWORD=<Password> \
  -p 8080:8080 \
  -v /path/to/data:/storage \
  -v /path/to/library:/library \
  --restart unless-stopped \
  ghcr.io/MKaterbarg/Booklib

The DB_ Variables listed above are required. Failing to add those will result in the container not starting.

The storage volume is used for persistent storage, and contains files generated by the software such as thumbnails and logs. The library volume is the path to the library/ies you want to add to Booklib.

  1. Once the container has started, you may login to the system using the URL you specified in your webserver configuration. Login using the initial login details:

    1. Username: admin
    2. Password: password
    3. Make sure to update this as soon as possible using the top-right settings icon/menu
  2. Add your first library using the top right menu. Make sure the www-data user has read permissions on the directories you're adding"

Manual Installation

Requirements

Pre-installed Linux-based distro with a webserver, PHP8 and MySQL Server installed.

You will need to create a new, empty database for this system.

Additional software required:

  • PHP Extension: zip
  • PHP Extension: gd
  • PHP Extension: mysql
  • PHP Extension: xml
  • Application: git
  • Application: unrar (5.21+)

Instructions

  1. Checkout our repo in the location where you want to host the files:

    git clone "https://github.com/MKaterbarg/Booklib.git" .

  2. Install composer packages with php composer.phar install

  3. Add the appropriate webserver configuration to your webserver. Please point your document root not to the base directory, but to the "public" subdirectory of our system

  4. Rename the .env.example file to .env and edit the required values. Make sure you update the following values:

    • DB_HOST - This probably needs to be "localhost", unless you use an external MySQL server
    • DB_DATABASE - The name of your database
    • DB_USERNAME - The username that has access to the database
    • DB_PASSWORD - The password of the above user
  5. Execute the initialization of the database using the following commands:

    php artisan key:generate

    php artisan migrate

    php artisan db:seed

This will actually create the database tables, set basic settings and add a default user.

  1. Add the cron scheduler to you /etc/crontab file. This cron should run every minute, as the application itself will manage when which command should run. Please add as:

    * * * * * root php artisan schedule:run

  2. Due to a security policy in ImageMagick, you may need to update the security policy in /etc/ImageMagick-7/policy.xml. Just before , add:

  3. Once this is done, you may login to the system using the URL you specified in your webserver configuration. Login using the initial login details:

    1. Username: admin
    2. Password: password
    3. Make sure to update this as soon as possible using the top-right settings icon/menu
  4. Add your first library using the top right menu. Make sure the www-data user has read permissions on the directories you're adding"

Known issues

  1. The number of files counters are currently not working

Roadmap

  • Add monitoring of failed jobs, and notifications of it.
Comments
  • Add Docker Support

    Add Docker Support

    • Added Dockerfile to build container. Based on Alpine 3.14, Nginx 1.2, and PHP8.
    • Added GitHub actions to auto-build containers on tagged release.
    • Added docker-conf folder containing pre-build config files
    • Added docker-conf/empty folder for use in the Dockerfile build process.
    opened by LDShadowLord 2
  • artisan db:seed fails to complete

    artisan db:seed fails to complete

    Not experienced with PHP, so unsure what the issue is or if this is a misconfiguration on my end. The two preceding artisan commands completed succesfully. Running MariaDB with a user with "Grant All" privileges on a database specifically for booklib. Installing on Alpine Linux 3.14 inside a Docker container. All commands are being run as ROOT.

    Seeding: Database\Seeders\setting_thumbnail Seeded: Database\Seeders\setting_thumbnail (8.48ms) Seeding: Database\Seeders\scanning_frequency Seeded: Database\Seeders\scanning_frequency (0.52ms)

    Illuminate\Contracts\Container\BindingResolutionException

    Target class [Database\Seeders\create_admin_user] does not exist.

    at /Booklib/vendor/laravel/framework/src/Illuminate/Container/Container.php:875 871▕ 872▕ try { 873▕ $reflector = new ReflectionClass($concrete); 874▕ } catch (ReflectionException $e) { ➜ 875▕ throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e); 876▕ } 877▕ 878▕ // If the type is not instantiable, the developer is attempting to resolve 879▕ // an abstract type such as an Interface or Abstract Class and there is

      +8 vendor frames 
    

    9 /Booklib/database/seeders/DatabaseSeeder.php:18 Illuminate\Database\Seeder::call()

      +22 vendor frames 
    

    32 /Booklib/artisan:37 Illuminate\Foundation\Console\Kernel::handle()

    opened by LDShadowLord 2
  • Error reading a content stream. The page may be incomplete.                Output may be incorrect.

    Error reading a content stream. The page may be incomplete. Output may be incorrect.

    Full error:

    Currently Processing: 2020-09-30.Olive Magazine.October 2020.424650.fullpdf.pdf **** Error reading a content stream. The page may be incomplete. Output may be incorrect. **** Error: Form stream has unbalanced q/Q operators (too many q's) Output may be incorrect. **** Error: File did not complete the page properly and may be damaged. Output may be incorrect.

    opened by MKaterbarg 1
  • Invalid or uninitialized Zip object

    Invalid or uninitialized Zip object

    Error log:

    Currently Processing: 2019-07-26.Bloomberg Businessweek - Bloomberg Businessweek Jul 29 2019.244793.cbz

    ValueError

    Invalid or uninitialized Zip object

    at app/Console/Commands/GenerateThumbnails.php:261 257▕ protected function getZipFirstPageData(\ZipArchive $za, $index){ 258▕ 259▕ $details = new \stdClass(); 260▕ ➜ 261▕ $details->pageName = $za->statIndex($index)["name"]; 262▕ $details->pageContent = $za->getFromIndex($index, 0); 263▕ 264▕ if(str_ends_with($details->pageName, "/")){ 265▕ $index = $index + 1;

    1 app/Console/Commands/GenerateThumbnails.php:261 ZipArchive::statIndex()

    2 app/Console/Commands/GenerateThumbnails.php:115 App\Console\Commands\GenerateThumbnails::getZipFirstPageData()

    bug 
    opened by MKaterbarg 1
  • A few fixes for you

    A few fixes for you

    The project is very nice and tidy! Well Done!

    Read my commits to see what I have done.

    A few observations:

    Your migrations should have a down migration. Something like Schema::dropIfExists('tablename'); Look at converting your routes to a resource/crud https://stackoverflow.com/questions/23505875/laravel-routeresource-vs-routecontroller

    opened by mrl22 1
  • Generate Thumbnails: : Failed to open stream: Is a directory

    Generate Thumbnails: : Failed to open stream: Is a directory

    ErrorException

    file_put_contents(***): Failed to open stream: Is a directory

    at app/Console/Commands/GenerateThumbnails.php:111 107▕ 108▕ $firstPageName = $za->statIndex(0)["name"]; 109▕ 110▕ $firstPage = $za->getFromIndex(0, 0); ➜ 111▕ file_put_contents(storage_path("app/tmp/thumbnails/" . $firstPageName), $firstPage); 112▕ 113▕ $this->SaveThumb($firstPageName, $file); 114▕ 115▕ exec("rm -rf "" . storage_path("app/tmp/thumbnails/") . """);

    1 app/Console/Commands/GenerateThumbnails.php:111 file_put_contents()

      +13 vendor frames
    

    15 artisan:37 Illuminate\Foundation\Console\Kernel::handle()

    opened by MKaterbarg 0
  • Add support for different storage systems for scanning and thumbs

    Add support for different storage systems for scanning and thumbs

    examples: Google Drive, S3, etc etc. May need different tickets on each one of these. Anyone feel free to add suggestions for other file/storage systems

    enhancement 
    opened by MKaterbarg 0
Owner
null
flare Manager .flare framework Manager

flare-Manager flare Manager .flare framework Manager Welcome to the flare-Manager install Flare form https://github.com/flare-framework/Flare move ind

Flare framework 1 Aug 14, 2022
CI4-Lic is a software license manager modul for Codeigniter 4, connecting to WordPress license server based on the Software License Manager Plugin.

CI4-Lic CI4-Lic is a software license manager modul for Codeigniter 4, connecting to WordPress license server based on Software License Manager Plugin

George Lewe 1 Jan 15, 2022
This is a Task Manager system for managing your task. You can categorize your tasks and upload music to the project And a whole host of other features

taskManager Login and register Each user can have their own task Categorize tasks by creating folders Edit and Delete Folders Search for Tasks Show nu

masoudharooni 11 May 22, 2022
Server manager is a open source project made for people so that they can add the servers to one single place irrespective of their provider and manage it through one location.

Server Manager Are you sick of having to log into hundreads of different website just to access your server? Well we got you, Server manager is a open

null 8 Aug 9, 2022
A self hosted download manager for movie and tv show trailers.

Introduction Trailarr is a self hosted download manager for movie and tv show trailers. Features: A beautiful, easy to use UI. Easy setup, readily con

null 13 Dec 19, 2022
PHP web based Password Manager for business and personal use.

sysPass - Systems Password Manager Join us in the Gitter chat room: PHP web based Password Manager for business and personal use. AES-256 encryption i

RubénD 896 Dec 26, 2022
Firefly III: a personal finances manager

"Firefly III" is a (self-hosted) manager for your personal finances. It can help you keep track of your expenses and income, so you can spend less and save more. Firefly III supports the use of budgets, categories and tags. Using a bunch of external tools, you can import data. It also has many neat financial reports available.

Firefly III 9.5k Jan 6, 2023
Improved File Manager package for YunoHost

IFM for YunoHost Lire ce readme en français. This package allows you to install IFM quickly and simply on a YunoHost server. If you don't have YunoHos

null 4 Nov 12, 2022
Task Manager is a Task Management Module/Tools for wordpress

Task Manager is a Task Management Module/Tools for wordpress, where you can create, manage, assign user, update and delete different tasks. It has all features of Task Management Application.

Louie Sanchez 2 Dec 31, 2021
A simple, intuitive, yet powerful password manager.

Poziomy zabezpieczeń Brak zabezpieczeń Kod jest widoczny bez konieczności podejmowania żadnej akcji. Nie jest szyfrowany. Można udostępniać. Niski poz

Burda Kacper 1 Feb 4, 2022
🔐 Password Manager written in PHP with MySQL database.

Password Manager A very basic password manager. Tech stack: PHP MySQL Bootstrap Setup Download and install XAMPP. Clone this repository: git clone htt

Olivér 4 Jun 25, 2022
Passbolt - Open source password manager for teams

Passbolt - Open source password manager for teams

Passbolt 3.4k Dec 30, 2022
A free and open-source accounting and production system for businesses and non-profits with support for multiple users and varied integrations

A free and open-source accounting and production system for businesses and non-profits with support for multiple users and varied integrations.

null 3 Sep 22, 2022
Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms 1.1k Dec 22, 2022
Created simple login system and chat type website using mysql database along with php and html , css and javascript.

Created simple login system and chat type website using mysql database along with php and html , css and javascript.

null 1 Jan 6, 2022
This prj we have two NODEMCU ( ESP8266) and two RFID_RC522 and some rfid tags we used ARDUINO IDE on NODEMCU and running server with XAMPP

This prj we have two NODEMCU ( ESP8266) and two RFID_RC522 and some rfid tags we used ARDUINO IDE on NODEMCU and running server with XAMPP

Mohammadamir Soltanzadeh 2 Mar 29, 2022
Rafa Cake and Bakery is a web-based application project that aims to introduce Rafa Cake and Bakery, introduce what products are sold and can also order them via Whatsapp.

Rafa-cake-and-bakery Rafa Cake and Bakery is a web-based application project that aims to introduce Rafa Cake and Bakery, introduce what products are

Aan Evian Nanda 2 Jun 19, 2022
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Lychee A great looking and easy-to-use photo-management-system. Since the 1st of April 2018 this project has moved to it's own Organisation (https://g

Tobias Reich 6.2k Jan 5, 2023