bookorbit
A self-hosted library and reading platform
Example
{config, ...}: {
nps.stacks.bookorbit = {
enable = true;
libraryPath = "/mnt/hdd/media/books";
jwtSecretFile = config.sops.secrets."bookorbit/jwt_secret".path;
podcastEncryptionKeyFile = config.sops.secrets."bookorbit/podcast_encryption_key".path;
setupBootstrapTokenFile = config.sops.secrets."bookorbit/setup_bootstrap_token".path;
db.passwordFile = config.sops.secrets."bookorbit/db_password".path;
oidc = {
registerClient = true;
clientSecretHash = "$pbkdf2-sha512$...";
userGroup = "bookorbit_user";
adminGroup = "bookorbit_admin";
};
tts.enable = true;
};
}Stack Options
nps.stacks.bookorbit.db.passwordFile
Path to the file containing the database password for BookOrbit.
Can be generated with openssl rand -hex 24.
nps.stacks.bookorbit.db.username
Database user name for BookOrbit.
nps.stacks.bookorbit.enable
Whether to enable bookorbit.
nps.stacks.bookorbit.extraEnv
Extra environment variables to set for the container. Variables can be either set directly or sourced from a file (e.g. for secrets).
See https://bookorbit.app/installation/#environment-variables
attribute set of (null or boolean or signed integer or string or absolute path or (submodule))
{ }
nps.stacks.bookorbit.jwtSecretFile
Path to the file containing the secret that signs the login tokens.
Can be generated with openssl rand -hex 32.
nps.stacks.bookorbit.libraryPath
Host directory where the book files are stored.
string
"${config.nps.storageBaseDir}/bookorbit/books"
nps.stacks.bookorbit.oidc.adminGroup
Users of this group will be assigned admin rights.
In order to take effect, you will have to enter the value groups in the Group Claim form field in the BookOrbit UI.
nps.stacks.bookorbit.oidc.clientSecretHash
The client secret hash. For examples on how to generate a client secret, see
https://www.authelia.com/integration/openid-connect/frequently-asked-questions/#client-secret
The value can be passed in multiple ways:
- As a literal string
- As an absolute path to a file containing the hash (
toFile) - As an absolute oath to a file containing the client_secret, in which case the hash will be automatically computed (
toHash)
string or (submodule)
# Literal String:
"$pbkdf2-sha512$310000$cbOAIWbfz3vCVXIPIp6d2A$J0klwULa6TvPRCU1HAfuKua/dMKTl8gbTYJz2N73ejGUu0LUGz/y3kwmJLuKuAYGg3WQOT0q9ZzVHHUvpKpgvQ"
# Client secret hash stored in a file
{ fromFile = config.sops.secrets."immich/client_secret_hash".path; }
# Client secret stored in a file: Hash will be computed dynamically
{ toHash = config.sops.secrets."immich/client_secret".path; }
nps.stacks.bookorbit.oidc.registerClient
Whether to register a BookOrbit OIDC client in Authelia.
If enabled you need to provide a hashed secret in the clientSecretHash option.
To enable OIDC Login for BookOrbit, you will have to enable it in the Web UI.
For details, see:
nps.stacks.bookorbit.oidc.userGroup
Users of this group will be able to log in.
In order to take effect, you will have to enter the value groups in the Group Claim form field in the BookOrbit UI.
nps.stacks.bookorbit.podcastEncryptionKeyFile
Path to the file containing the key that encrypts the podcast URLs.
Generate an independent key with openssl rand -hex 32 and keep it stable, otherwise
previously issued podcast URLs become invalid.
nps.stacks.bookorbit.setupBootstrapTokenFile
Path to the file containing the token for the initial setup wizard.
Can be generated with openssl rand -hex 16.
nps.stacks.bookorbit.tts.enable
Whether to enable Kokoro text-to-speech.
Container Aliases
nps.stacks.bookorbit.containers.bookorbit
Alias of {option}services.podman.containers.bookorbit.
nps.stacks.bookorbit.containers.bookorbit-db
Alias of {option}services.podman.containers.bookorbit-db.
nps.stacks.bookorbit.containers.bookorbit-kokoro
Alias of {option}services.podman.containers.bookorbit-kokoro.
