Frequently Asked Questions
I forgot my admin password. How do I reset it?
Reset the password directly in the database by running a one-liner inside the running container:
docker exec <container_name> python3 -c "
from passlib.context import CryptContext
import sqlite3
pwd = CryptContext(schemes=['bcrypt_sha256']).hash('<your_new_password>')
db = sqlite3.connect('/app/data/grimoire.db')
db.execute(\"UPDATE users SET hashed_password = ? WHERE username = ?\", (pwd, '<your_username>'))
db.commit()
db.close()
print('Done')
"Replace <container_name>, <your_new_password>, and <your_username> with your values. The container name is typically grimoire.
Alternatively, create a new admin account by pre-seeding a users file and restarting the stack.
The scanner finds no books after I reorganized my library.
Grimoire expects a books/ subfolder at the root of the library mount:
/library/
books/
D&D 5e/
Core Rules/
Players Handbook.pdf
maps/
tokens/If your PDFs live directly under the mounted folder without a books/ subfolder, the scanner finds nothing.
Fix — mount your folder directly as /library/books:
volumes:
- /path/to/your/rpgs:/library/books:ro
- /path/to/grimoire/data:/dataThis keeps your existing host structure without adding an extra books/ folder. Restart the stack and trigger a rescan.
INFO
Cleanup missing removes database records for files that can't be found at their expected paths. If you moved files before fixing the mount, those records were removed — re-mounting correctly and rescanning will re-add everything.
How do I configure OIDC with Authentik?
See the dedicated Authentik Setup guide for a complete walkthrough including group-to-role mapping and explicit content access control.
