A Docker container for cataloging audiobooks, intended for use on an Unraid server. Uses Sequelize with a SQLite database and Fastify on the backend, and Preact on the frontend.
LOG_LEVEL
: Optional. Passed to pino. Sanitized: options aretrace
,debug
,info
,warn
,error
. Defaults toinfo
.
- The directory for audiobooks to be organized and stored should be mounted at
/audiobooks
. - The directory where the database will be stored should be mounted at
/db
. - The directory where imports go should be mounted at
/import
.
Certain command-line utilities are included in the container (located at
.build/bin
). They will respond to -h
/--help
for more information:
removeTag
: For safety, tags can only be deleted through the UI if they are not associated with any audiobooks. This utility can be used to remove one or multiple tags, including those associated with audiobooks (with-f
).
.audiobooks
and .import
will be mounted at /audiobooks
and /import
respectively, and are gitignored; you can use them to work in a local
environment.
This repo adhere's to GitHub's Scripts to Rule Them All pattern.
script/cmd
: executes a Docker command with all the extra configuration needed for this project. Most other scripts usescript/cmd
under the hood.script/setup
: creates a new Docker image for dev, ignoring cachescript/update
: builds the dev Docker image, using cache if possible. In most cases,script/update
is all you need andscript/setup
is unnecessary.script/migrate
: exposes the Umzug CLI inside the dev container. If no arguments are passed,up
is assumed.script/server
: runsscript/update
and then starts dev server inside generated Docker image. Server will be visible at http://localhost:6541.script/test
: runsscript/update
and runsnpm test
inside it. Extra arguments will be passed as arguments tonpm test
, e.g.script/test -u
to update Jest snapshots.