Ansible role for installing Audiobookshelf
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Simon Cornet a28d9930a4
All checks were successful
ci/woodpecker/push/linting Pipeline was successful
docs: update readme image version
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 17:32:01 +02:00
.woodpecker chore(package): update cr.simoncor.net/dockerhub/davidanson/markdownlint-cli2 docker tag to v0.23.3 2026-09-20 05:46:38 +00:00
meta feat: initial audiobookshelf role 2026-06-29 17:35:06 +02:00
roles feat: initial audiobookshelf role 2026-06-29 17:35:06 +02:00
tasks chore(package): update cr.simoncor.net/ghcr/advplyr/audiobookshelf docker tag to v2.37.1 2026-09-30 05:46:32 +00:00
.ansible-lint fix: exclude only sops yml files from lint 2026-07-14 16:23:34 +02:00
.editorconfig feat: initial audiobookshelf role 2026-06-29 17:35:06 +02:00
.gitattributes feat: initial audiobookshelf role 2026-06-29 17:35:06 +02:00
.gitignore feat: initial audiobookshelf role 2026-06-29 17:35:06 +02:00
.markdownlint-cli2.jsonc feat: initial audiobookshelf role 2026-06-29 17:35:06 +02:00
.sops.yaml fix: correct sops regex to ya?ml 2026-07-14 16:01:41 +02:00
.yamllint chore: exclude .yml files from lint configs 2026-07-14 16:17:17 +02:00
ansible.cfg chore: sync linting and config files from common 2026-07-14 11:33:15 +02:00
playbook.yaml chore(playbook): run galaxy install only on first host 2026-08-13 08:49:03 +02:00
readme.md docs: update readme image version 2026-10-05 17:32:01 +02:00
renovate.json feat: initial audiobookshelf role 2026-06-29 17:35:06 +02:00

Ansible Role: Audiobookshelf

Install and configure Audiobookshelf - a self-hosted audiobook and podcast server. The role runs Audiobookshelf as a Docker container and prunes unused Docker resources afterwards.

Requirements

A host with Docker (installed by the docker role) and Traefik (installed by the traefik role) in front of the container.

Dependencies

The playbook runs these roles first (see roles/requirements.yml):

  • docker
  • traefik

Variables

The role has no defaults/main.yaml. It only uses one variable that is expected to be defined elsewhere (for example by the common role or in the inventory).

Variable Required Default Description
timezone Yes Timezone (TZ) for the container

The image tag (2.37.1) and the paths are hardcoded in tasks/audiobookshelf.yaml.

Example

timezone: "Europe/Amsterdam"

Usage

Run the role through Semaphore using playbook.yaml. The playbook first runs ansible-galaxy install -f -r roles/requirements.yml to refresh the role dependencies, then runs the docker, traefik and audiobookshelf roles.

Notes

Item Value
Container audiobookshelf (restart policy always)
Image cr.simoncor.net/ghcr/advplyr/audiobookshelf:2.37.1
Port 8080/tcp on the host (container port 80)
Directories /mnt/audiobookshelf/{config,metadata,audiobooks,podcasts}

The four directories are created with mode 0755 and mounted at /config, /metadata, /audiobooks and /podcasts.

The cleanup tasks run docker_prune and docker system prune --all --force --volumes after every run. This removes all unused images, networks and volumes on the host, including those of other containers.