This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Audio Book Shelf ====== [[https://www.audiobookshelf.org|AudioBookShelf]] is a //Self-hosted audiobook and podcast server//. ===== Installation ===== It is possible to install ABS on bare-metal. They provide prebuilt packages for Debian, Redhat/CentOS and NixOS. But i am on Gentoo, so i decided against downloading a //deb// or an //rpm// package but go the containers way instead. As usual, you need to create the **audiobookshelf** user but be careful to assign it to the **media** group so that it can access all the audiobooks and podcasts of your collection,: <code bash> useradd -d /data/daemons/audiobookshelf -m -g media audiobookshelf </code> Then, as user **audiobookshelf**, create the following docker compose yaml (see [[https://www.audiobookshelf.org/docs#docker-compose-install|here]]): <file - docker-compose.yml> version: "3.7" services: audiobookshelf: image: ghcr.io/advplyr/audiobookshelf:latest ports: - 13378:80 volumes: - /data/Audiobooks/:/audiobooks - /data/Podcasts:/podcasts - /data/daemons/audiobookshelf/config:/config - /data/Metadata:/metadata environment: - TZ=Europe/Rome </file> Set a proper port (13378)for your needs, one that is free from all your other services. Double check the various volumes to point to your media collection properly. Also set your TimeZone (TZ) appropriately. Now ensure your folders do exist: <code bash> mkdir /data/Podcasts mkdir /data/Audiobooks mkdir /data/Metadata chown audiobookshelf:media -R /data/Podcasts /data/Audiobooks /data/Metadata su - audiobookshelf mkdir config </code> And then pull the images: <code bash> su - audiobookshelf podman compose pull </code> ===== Reverse Proxy ===== [[https://github.com/advplyr/audiobookshelf#reverse-proxy-set-up|This]] page is a collection of reverse proxy setups for AudioBookShelf. This is my recomended one for NGINX: <file - audiobookshelf.conf> server { server_name podcast.gardiol.org; listen 8443 ssl; # external access listen 443 ssl; # internal access access_log /var/log/nginx/podcast.gardiol.org_access_log main; error_log /var/log/nginx/podcast.gardiol.org_error_log info; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_pass http://127.0.0.1:13378; proxy_redirect http:// https://; } include org.certbot.conf; } </file> Unfortunately AudioBookShelf at this time does not support yet sub-paths, so you will need to host it on a subdomain. ===== Autostart ===== To start it, and set it up on boot, as usual follow my indications [[gentoo:containers|Using Containers on Gentoo]], so link the **user-containers** init script: <code> ln -s /etc/init.d/user-containers /etc/init.d/user-containers.audiobookshelf </code> and create the following config file: <file - /etc/conf.d/user-containers.audiobookshelf> USER=audiobookshelf DESCRIPTION="The audiobooks and podcast server" </file> Add the service to the default runlevel and start it now: <code bash> rc-update add user-containers.audiobookshelf default rc-service user-containers.audiobookshelf start </code> ===== Upgrade ===== Since it's using pdoman, stop the service then, as user **audiobookshelf**, run: <code bash> podman compose pull </code> and restart the service.