Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Booklore Template Support Thread

Featured Replies

Oh my god, yes that was it! Thank you so much!!

If anyone else has this same problem and is unsure what jmztaylor means, edit the container for Booklore and check the entry that says Database URL. If it says "localhost" in the URL, replace that with the actual local IP address of your server.

Thanks again, you're the best!

  • Replies 73
  • Views 17.9k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • So what you have to do now is add 2 variables to specify UID/GID for the container and chown the directory in appdata make a new variable: Name: User ID Key: USER_ID Value: 99 Default: 99 Description

  • almighty7lurch
    almighty7lurch

    while i don’t enjoy FOSS drama, schadenfreude, or rumors, i will post this recent Reddit discussion about BookLore here, because i believe it’s of interest to Unraid users who may be using BookLore or

  • jmztaylor
    jmztaylor

    I updated the template to include these.

Posted Images

Anyone else getting errors when trying to fetch metadata? When I try to fetch metadata (but NOT from within a book's details page) I get something like:

Fatal error during metadata refresh: could not execute batch [(conn=70) Duplicate entry 'Untitled.epub-1' for key 'unique_file_library'] [update book set added_on=?,book_type=?,current_hash=?,deleted=?,deleted_at=?,file_name=?,file_size_kb=?,file_sub_path=?,library_id=?,library_path_id=?,metadata_match_score=?,similar_books_json=? where id=?]; SQL [update book set added_on=?,book_type=?,current_hash=?,deleted=?,deleted_at=?,file_name=?,file_size_kb=?,file_sub_path=?,library_id=?,library_path_id=?,metadata_match_score=?,similar_books_json=? where id=?]; constraint [unique_file_library]

  • 1 month later...

if it's not too hard, it would be great if you could provide a way to set PUID/PGID; if it's already possible, would you be so kind as to share how. thanks in advance

On 12/11/2025 at 3:53 AM, sinbrkatetete said:

if it's not too hard, it would be great if you could provide a way to set PUID/PGID; if it's already possible, would you be so kind as to share how. thanks in advance

You should just be able to set up two new variables: PUID and PGID
Based on the official Booklore docs, those are supported variables: https://booklore-app.github.io/booklore-docs/docs/installation/

Edited by smikwily

  • 3 weeks later...

I cannot get this to work. MariaDB is setup and running.

I get the following error:
SQL State : 28000

Error Code : 1045

Message : (conn=8) Access denied for user 'booklore'@'172.17.0.1' (using password: YES)


Screenshot 2025-12-31 at 13.03.31.png

In case it happens for anyone else: I have 3 instances of MariaDB. When I set up the third one, the /config path used was the same as the default for a second instance, /mnt/user/appdata/mariadb-1. I didn't bother changing this when I set up the second MariaDB. This lead to weird Could not connect to 192.168.0.162:3308 : unexpected end of stream, read 0 bytes from 4 (socket was closed by server) errors in the Booklore log. It is a simple fix. Edit the MariaDB instance, toggle the Advanced view and scroll to find the /config path and give it a unique name. Save, then restart the Booklore instance. profit

  • 2 weeks later...
On 5/21/2025 at 7:46 AM, GreenEyedMonster said:

Did that now I'm getting this error:

SQL State : HY000

Error Code : 1728

Message : (conn=5) Cannot load from mysql.proc. The table is probably corrupted

I got this error too. Figured it out - the mariadb container I'm using was installed long ago as an old version. After years of container updates it underwent a major version change (eg: 11.3.x -> 11.4.x). Not sure what my original version was, but in the end 11.4.8 worked for me.

On my mariadb container, I had to run mariadb-upgrade -u root -p in the console (the password is the mariadb password, not any sort of linux user root password). This fixed the database and resolved your posted error.

I feel really stupid asking this, but where are the folders mapped to? I would like to ingest some books automatically but cannot figure out where the ingest folder (bookdrop) is on the server. I've looked in where the books are mapped to, as well as the appdata folder but do not see it in either location. Sorry if it's obvious and I missed it.

Edit: I was able to map it manually by editing the image and verify it worked. Sorry for the dumb question

Edited by Taubin

  • 2 weeks later...

i'm trying to troubleshoot a longstanding issue that i've been having with this container. i'm aware that @jmztaylor is not the developer of booklore, and i've already posted about this in the booklore github issue where jmztaylor gave out their link to the Unraid template... a few people replied and said that they do not experience this issue. so, this seemed like the best place to post and ask for solutions and troubleshooting help.

i've also already posted a topic in the Unraid "General Support" forum here: https://forums.unraid.net/topic/196573-one-single-container-consistently-fails-to-stop-cleanly/ and one person has responded so far but i'm really not getting any closer to figuring out this issue.

tl,dr; the booklore container will not stop cleanly. whether a "stop" command is issued during the container update process, me clicking the "stop" button in the Unraid web ui, or i do docker stop booklorein the console, it never stops cleanly and will be forcibly SIGKILLed when Unraid's global docker stop timeout has been exceeded (Settings > Docker > Docker Stop Timeout).

i've done countless "delete the container, delete the appdata dir, delete the metadata xml, reinstall from scratch" routines; i've done the same to my mariadb container; i've installed unraid on a brand-new flash drive; i've completely deleted and rebuilt the docker.img file; nothing has solved this issue. i do not understand it, and i don't understand why my setup seems to be the only one experiencing this issue.

what i'd really like is some help with the troubleshooting -- i haven't found anything revealing in any system logs. does Unraid even keep system-level docker logs? Settings > Docker (as well as /boot/config/docker.cfg) has configuration options for docker log file rotation, size, etc., but i don't know where the log file is supposed to live. Tools > Log Viewer (New) has a "docker.log" dropdown, but it says "docker.log (0 bytes)" and is empty.

i don't know what else to check and i'm losing my mind over this, because it doesn't seem to make sense. we all love Unraid but it really needs some damn work, especially when it comes to the web ui giving helpful diagnostic/error output.

i think i may have solved this issue? i would like input from other users, though -- when you stop booklore, does it return exit code 137?

i’ve found that modifying the container (Unraid > Docker > BookLore > Edit, enable Advanced View) by adding --init fixes this behavior. that is to say, when run with --init and subsequently stopped, unraid now returns an exit code of 143 for that container. in bash, this equals signal 15 (143 - 128 = 15), which is a SIGTERM, and is what should be happening.

again, without --init stopping the container returns 9 (SIGKILL, 137 - 128 = 9). i’ll update my issue on the upstream github project for booklore to see what the dev has to say, since it appears to actually be a booklore problem and not a jmztaylor unraid template problem.

Edited by almighty7lurch

  • 3 weeks later...

Theres a new version out and I forced an update but it crashes at startup now with lots of "springframework" errors

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskService' defined in URL [jar:nested:/app/app.jar/!BOOT-INF/classes/!/org/booklore/service/task/TaskService.class]: Unsatisfied dependency expressed through constructor parameter 3: Error creating bean with name 'bookdropPeriodicScanTask' defined in URL [jar:nested:/app/app.jar/!BOOT-INF/classes/!/org/booklore/task/tasks/BookdropPeriodicScanTask.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'bookdropMonitoringService': Invocation of init method failed
  • Author
51 minutes ago, upthetoon said:

Theres a new version out and I forced an update but it crashes at startup now with lots of "springframework" errors

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskService' defined in URL [jar:nested:/app/app.jar/!BOOT-INF/classes/!/org/booklore/service/task/TaskService.class]: Unsatisfied dependency expressed through constructor parameter 3: Error creating bean with name 'bookdropPeriodicScanTask' defined in URL [jar:nested:/app/app.jar/!BOOT-INF/classes/!/org/booklore/task/tasks/BookdropPeriodicScanTask.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'bookdropMonitoringService': Invocation of init method failed


How did you force an update

EDIT: I opened an issue as I confirmed this locally as well. https://github.com/booklore-app/booklore/issues/2867

Edited by jmztaylor

55 minutes ago, upthetoon said:

Theres a new version out and I forced an update but it crashes at startup now with lots of "springframework" errors

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskService' defined in URL [jar:nested:/app/app.jar/!BOOT-INF/classes/!/org/booklore/service/task/TaskService.class]: Unsatisfied dependency expressed through constructor parameter 3: Error creating bean with name 'bookdropPeriodicScanTask' defined in URL [jar:nested:/app/app.jar/!BOOT-INF/classes/!/org/booklore/task/tasks/BookdropPeriodicScanTask.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'bookdropMonitoringService': Invocation of init method failed


I had to go through the terminal to see the full log history but long story short, it seems like they expect a path variable for bookdrop now.

add a new path

Name: Bookdrop

Container path: /bookdrop

Host Path: /mnt/user/appdata/booklore/bookdrop_temp

Default Value: /mnt/user/appdata/booklore/bookdrop_temp

Description: Path for bookdrop uploads.

I'm having issues now with being able to save book covers to the images directory but it doesnt appear to be a permissions issue as I can enter the container and write to that path. Still working through that one.

  • Author

Yeah it seems I am going to move away from Booklore. I already have my own reader I wrote so I will just wrap my own opds service. Too many hard breaking changes from Booklore and not going to keep chasing rabbit holes.

16 minutes ago, Adubs said:


I had to go through the terminal to see the full log history but long story short, it seems like they expect a path variable for bookdrop now.

add a new path

Name: Bookdrop

Container path: /bookdrop

Host Path: /mnt/user/appdata/booklore/bookdrop_temp

Default Value: /mnt/user/appdata/booklore/bookdrop_temp

Description: Path for bookdrop uploads.

I'm having issues now with being able to save book covers to the images directory but it doesnt appear to be a permissions issue as I can enter the container and write to that path. Still working through that one.

Thanks, up and running but I have the same image issue as you now too.

i know the purpose of this thread is to discuss the unraid template for the app rather than being designed for discussion of the app itself, so this is slightly off-topic, but... @jmztaylor i feel you, i’ve been losing faith in booklore over the past few months. i think the project is getting away from the (i believe well-intentioned) creator and it’s been growing more and more unstable and unreliable. recently, i experienced the “all book covers have disappeared, and it fails to regenerate them” bug described here: https://github.com/booklore-app/booklore/issues/2508

hope they can right the ship, but it’s crazy how much time i’ve had to spend massaging this one service just to keep it running right.

Edited by almighty7lurch
clarity

  • Author

For anyone that uses it for only OPDS like me,

https://github.com/Node-Dog-Consulting/python-opds/pkgs/container/opds

This is a very simple and dumbed down version of the OPDS standard. All I needed was the book listing, downloading, and the cover image. There is no web ui for this. Just map the container path of /books to wherever your books are. Not sure if I will put more effort into this to name it and publish it to Community Apps.

I built my own ereader so most of booklore was useless to me.

14 minutes ago, upthetoon said:

Thanks, up and running but I have the same image issue as you now too.

So what you have to do now is add 2 variables to specify UID/GID for the container and chown the directory in appdata

make a new variable:

Name: User ID

Key: USER_ID

Value: 99

Default: 99

Description: Unraid User ID

Then repeat for group ID

make a new variable:

Name: Group ID

Key: GROUP_ID

Value: 100

Default: 100

Description: Unraid Group ID

Finally start a console and enter: chown -R 99:100 /mnt/user/appdata/booklore/

You should now be able to do everything as expected.

I'm not certain what it was before, I assume 1000/1000 as that would be root which is fine for unraid but less than ideal for everything else. They're probably trying to bring this in line with best practices on other distros which is understandable. These changes should be fairly straight forward to implement on the template but anyone running without these variables initially is going to struggle.

18 minutes ago, Adubs said:

So what you have to do now is add 2 variables to specify UID/GID for the container and chown the directory in appdata

make a new variable:

Name: User ID

Key: USER_ID

Value: 99

Default: 99

Description: Unraid User ID

Then repeat for group ID

make a new variable:

Name: Group ID

Key: GROUP_ID

Value: 100

Default: 100

Description: Unraid Group ID

Finally start a console and enter: chown -R 99:100 /mnt/user/appdata/booklore/

You should now be able to do everything as expected.

I'm not certain what it was before, I assume 1000/1000 as that would be root which is fine for unraid but less than ideal for everything else. They're probably trying to bring this in line with best practices on other distros which is understandable. These changes should be fairly straight forward to implement on the template but anyone running without these variables initially is going to struggle.

thank you again, that did it

  • Author

I updated the template to include these.

1 hour ago, Adubs said:

So what you have to do now is add 2 variables to specify UID/GID for the container and chown the directory in appdata

make a new variable:

Name: User ID

Key: USER_ID

Value: 99

Default: 99

Description: Unraid User ID

Then repeat for group ID

make a new variable:

Name: Group ID

Key: GROUP_ID

Value: 100

Default: 100

Description: Unraid Group ID

Finally start a console and enter: chown -R 99:100 /mnt/user/appdata/booklore/

You should now be able to do everything as expected.

I'm not certain what it was before, I assume 1000/1000 as that would be root which is fine for unraid but less than ideal for everything else. They're probably trying to bring this in line with best practices on other distros which is understandable. These changes should be fairly straight forward to implement on the template but anyone running without these variables initially is going to struggle.

For what it's worth I had to run the command on my book library too, otherwise I wasn't able to upload.

chown -R 99:100 /mnt/user/data/media/books/

On 12/30/2025 at 6:04 PM, Tronalix said:

I cannot get this to work. MariaDB is setup and running.

I get the following error:
SQL State : 28000

Error Code : 1045

Message : (conn=8) Access denied for user 'booklore'@'172.17.0.1' (using password: YES)


Screenshot 2025-12-31 at 13.03.31.png

I'm in the same boat! Can't figure this one out. I've tried every combination of IPs (container,lan etc.). Strangely enough, I also never get the root password in the logs. I have an existing mariadb instance ( linuxsserver template) running for something else (romm), but I did change the port from 3306 to 3307 in this template for booklore and it just won't accept any password. For convenience, booklore is attached to the official maria-db CA template

Edited by cambrionic
Additional information

16 hours ago, cambrionic said:

I'm in the same boat! Can't figure this one out. I've tried every combination of IPs (container,lan etc.). Strangely enough, I also never get the root password in the logs. I have an existing mariadb instance ( linuxsserver template) running for something else (romm), but I did change the port from 3306 to 3307 in this template for booklore and it just won't accept any password. For convenience, booklore is attached to the official maria-db CA template

you configure the password on the database name, user, and password on the mariadb container, then enter it into the booklore template. Post your logs.

6 hours ago, Adubs said:

you configure the password on the database name, user, and password on the mariadb container, then enter it into the booklore template. Post your logs.

Booklore docker log: https://pastes.io/item-1772088002732

Maria-db docker log: https://pastes.io/2026-02-25

Screenshot 2026-02-25 at 22.42.48.png

Screenshot 2026-02-25 at 22.43.28.png

I had changed the database URL to point to my LAN ip (192.168.0.137:3307) before and it gave me the same error, with the address being [email protected] denied in the logs

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.