Giter Club home page Giter Club logo

docker-booksonic-air's Introduction

linuxserver.io

Blog Discord Discourse Fleet GitHub Open Collective

The LinuxServer.io team brings you another container release featuring:

  • regular and timely application updates
  • easy user mappings (PGID, PUID)
  • custom base image with s6 overlay
  • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
  • regular security updates

Find us at:

  • Blog - all the things you can do with our containers including How-To guides, opinions and much more!
  • Discord - realtime support / chat with the community and the team.
  • Discourse - post on our community forum.
  • Fleet - an online web interface which displays all of our maintained images.
  • GitHub - view the source for all of our repositories.
  • Open Collective - please consider helping us by either donating or contributing to our budget

Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

Booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of:

  • Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic.
  • Booksonic App - An DSub based Android app for connection to Booksonic-Air servers.

booksonic-air

Supported Architectures

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/booksonic-air:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag
x86-64 amd64-<version tag>
arm64 arm64v8-<version tag>
armhf

Application Setup

While this is a more up to date rebase of the original Booksonic server, upgrading in place is not supported and a fresh install has been recommended. Default user/pass is admin/admin

Usage

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

docker-compose (recommended, click here for more info)

---
services:
  booksonic-air:
    image: lscr.io/linuxserver/booksonic-air:latest
    container_name: booksonic-air
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - CONTEXT_PATH=url-base #optional
    volumes:
      - /path/to/booksonic-air/config:/config
      - /path/to/audiobooks:/audiobooks
      - /path/to/podcasts:/podcasts
      - /path/to/othermedia:/othermedia
    ports:
      - 4040:4040
    restart: unless-stopped
docker run -d \
  --name=booksonic-air \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e CONTEXT_PATH=url-base `#optional` \
  -p 4040:4040 \
  -v /path/to/booksonic-air/config:/config \
  -v /path/to/audiobooks:/audiobooks \
  -v /path/to/podcasts:/podcasts \
  -v /path/to/othermedia:/othermedia \
  --restart unless-stopped \
  lscr.io/linuxserver/booksonic-air:latest

Parameters

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Parameter Function
-p 4040 Application WebUI
-e PUID=1000 for UserID - see below for explanation
-e PGID=1000 for GroupID - see below for explanation
-e TZ=Etc/UTC specify a timezone to use, see this list.
-e CONTEXT_PATH=url-base Base url for use with reverse proxies etc.
-v /config Configuration files.
-v /audiobooks Audiobooks.
-v /podcasts Podcasts.
-v /othermedia Other media.

Environment variables from files (Docker secrets)

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

Umask for running applications

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

User / Group Identifiers

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)

Docker Mods

Docker Mods Docker Universal Mods

We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

Support Info

  • Shell access whilst the container is running:

    docker exec -it booksonic-air /bin/bash
  • To monitor the logs of the container in realtime:

    docker logs -f booksonic-air
  • Container version number:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' booksonic-air
  • Image version number:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/booksonic-air:latest

Updating Info

Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.

Below are the instructions for updating containers:

Via Docker Compose

  • Update images:

    • All images:

      docker-compose pull
    • Single image:

      docker-compose pull booksonic-air
  • Update containers:

    • All containers:

      docker-compose up -d
    • Single container:

      docker-compose up -d booksonic-air
  • You can also remove the old dangling images:

    docker image prune

Via Docker Run

  • Update the image:

    docker pull lscr.io/linuxserver/booksonic-air:latest
  • Stop the running container:

    docker stop booksonic-air
  • Delete the container:

    docker rm booksonic-air
  • Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved)

  • You can also remove the old dangling images:

    docker image prune

Image Update Notifications - Diun (Docker Image Update Notifier)

tip: We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

Building locally

If you want to make local modifications to these images for development purposes or just to customize the logic:

git clone https://github.com/linuxserver/docker-booksonic-air.git
cd docker-booksonic-air
docker build \
  --no-cache \
  --pull \
  -t lscr.io/linuxserver/booksonic-air:latest .

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

  • 20.03.24: - Rebase to Alpine 3.19.
  • 10.07.23: - Rebase to Alpine 3.18.
  • 25.12.22: - Rebase to Alpine 3.17, migrate to s6v3, bump jre to 11, deprecate armhf.
  • 18.04.22: - Rebase to Alpine 3.15.
  • 15.09.20: - Initial Release.

docker-booksonic-air's People

Contributors

linuxserver-ci avatar thespad avatar chbmb avatar drizuid avatar j0nnymoe avatar thelamer avatar

Stargazers

Nicolas Flandrois avatar  avatar jonpants avatar  avatar  avatar  avatar Benjamin Krueger avatar Marc avatar  avatar Alexander Zoller avatar Couladin avatar Jonathan Scheiber avatar Daniël Haitink avatar  avatar Señor Frutti avatar Ben Bassett avatar Levi Roberts avatar cjax avatar  avatar  avatar R Huish avatar Lester Covax avatar Nathan Sherburn avatar  avatar phynias avatar Graham Moss avatar Brian Via avatar Ole Bittner avatar

Watchers

Paul Hendryx avatar  avatar James Cloos avatar  avatar  avatar Homer avatar  avatar  avatar

docker-booksonic-air's Issues

Build assumes umask is 0002

Decided not to PR this because the problem and the fix are trivial and I didn't want to kick off another CI build. Something like the following is required (for all archs)

--- ../docker-booksonic-air.sd/Dockerfile.armhf 2022-06-06 14:38:12.824342268 +0100
+++ Dockerfile.armhf    2022-06-06 14:33:45.435119031 +0100
@@ -45,6 +45,7 @@
 
 # add local files
 COPY root/ /
+RUN chmod a+rx /etc
 
 # ports and volumes
 EXPOSE 4040

linuxserver.io


Expected Behavior

Build should not depend on details of developer's environment, e.g. umask.

Current Behavior

docker/buildah copies the permissions of source files when using the COPY Dockerfile command; if developer's umask is 0007, this means read access is denied for non-root users to any files copied in and any parent directories touched in the process.
In this project, files are copied into /etc, so /et ends up lacking world-read permissions. /etc/services.d/booksonic-air/run then uses s6-setuidgid to become user abc, and consequently fails to run the java command, as it is a symlink into /etc/alternatives.

Steps to Reproduce

Set umask to 0007, build the project, test.

Environment

**OS:**Ubuntu 22.04 (build); Raspbian 10 (target/test)
CPU architecture: x86_64 (build); arm32 (target/test)
How docker service was installed:
podman and buildah installed from the 'kubic' repo linked from the official podman install instructions.

Command used to create docker container (run/create/compose/screenshot)

/usr/bin/podman run --conmon-pidfile %t/container-booksonic-air.pid --cidfile %t/container-booksonic-air.ctr-id --cgroups=no-conmon -d --name=booksonic-air -e JAVA_OPTS="-Xmx350m" -e PUID=1000 -e PGID=10000 -e TZ=Europe/London -e CONTEXT_PATH=booksonic -p 8080:4040 -v /config/booksonic-air:/config -v /vol/media:/vol/media -v /vol/media-audio:/vol/media-audio b88e3468e198

Docker logs

Jun 05 03:19:38 ocihost conmon[1896]: s6-applyuidgid: fatal: unable to exec java: Permission denied

15 minutes to start-up on raspberry pi (with arm32 image)

linuxserver.io


Expected Behavior

App to start-up in a reasonable time - I appreciate it will not be as fast as on x86, but the old docker-booksonic container was nowhere near this slow! (Started in about 30 secs)

Current Behavior

It takes 6 minutes for booksonic just to emit its logo and version number in the logs, and 15 minutes in total to fully start up.

Steps to Reproduce

Install and run with podman on a RPi 3B running Raspbian
I have switched to a high-end PSU and verified that the CPU on the RPi is not throttling, but problem persists.

Environment

OS: Raspbian GNU/Linux 10 (buster)
CPU architecture: arm32 [armv7l]
How docker service was installed:
podman 3.4.2 installed from the documented repository on download.opensuse.org

Command used to create docker container (run/create/compose/screenshot)

/usr/bin/podman run --conmon-pidfile %t/container-booksonic-air.pid --cidfile %t/container-booksonic-air.ctr-id --cgroups=no-conmon -d --name=booksonic-air -e PUID=1000 -e PGID=10000 -e TZ=Europe/London -e CONTEXT_PATH=booksonic -p 8080:4040 -v /config/booksonic-air:/config -v /vol/media:/vol/media -v /vol/media-audio:/vol/media-audio linuxserver/booksonic-air

Docker logs

Key section showing the delay here, will upload full logs separately (when app start-up finally completes!)

2022-06-02T21:58:41.515795441+01:00 [services.d] starting services
2022-06-02T21:58:41.536349643+01:00 [services.d] done.
2022-06-02T22:04:29.277806067+01:00   ____              _                    _      
2022-06-02T22:04:29.277806067+01:00  | __ )  ___   ___ | | _____  ___  _ __ (_) ___ 
2022-06-02T22:04:29.277806067+01:00  |  _ \ / _ \ / _ \| |/ / __|/ _ \| '_ \| |/ __|
2022-06-02T22:04:29.277806067+01:00  | |_) | (_) | (_) |   <\__ \ (_) | | | | | (__ 
2022-06-02T22:04:29.277806067+01:00  |____/ \___/ \___/|_|\_\___/\___/|_| |_|_|\___|
2022-06-02T22:04:29.277806067+01:00                                                 
2022-06-02T22:04:29.277806067+01:00                           2201.1.0

log.txt

Document JAVA_OPTS in readme

linuxserver.io


Desired Behavior

JAVA_OPTS should be documented, as it is with linuxserver/docker-airsonic

Current Behavior

JAVA_OPTS applies here, but is not documented in this image's readme. In addition, it may be worthwhile documenting usage of 'server.use-forward-headers=true' as an option when reverse proxying. I've seen issues in Airsonic's own repo mentioning that Nginx works as expected, but using Traefik here (albeit sending expected headers, including X-Forwarded-Proto) and had to explicitly set this parameter. ¯_(ツ)_/¯

Alternatives Considered

N/A

Does not start with new zlib

After updating the image at some point the last few weeks the container stopped working, I get an java.util.zip.ZipException: invalid entry CRC error. After some searching this seems to be a known issue with newer zlib versions.

Could the image pin an older zlib version until upstream fixes this issue? According to the second linked post above at least version 1.2.11 is supposedly known to work.

404 error when accessing the application


Expected Behavior

I should be able to see the login screen of the freshly deployed booksonic-air.

Current Behavior

I'm getting TomCat's 404 when accessing it with http://localhost:4040/

The container is running the latest tag.
The error page:


HTTP Status 404 – Not Found
Type Status Report

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/9.0.37


Steps to Reproduce

  1. Run Ubuntu 20.04 VM under Parallels
  2. create folder booksonic under your home folder
  3. create config, audiobooks, podcasts folders inside it
  4. in the booksonic folder create docker-compose.yml file and past my config bellow
  5. run docker-compose up
    6 in browser hit HTTP://localhost:4040

Environment

OS: Main host MacOs Catalina, Parallels VM, Ubuntu 20.04
CPU architecture: x86_64
How docker service was installed:

Inside of the Ubuntu VM I was following the steps from https://docs.docker.com/engine/install/ubuntu/
section "Install using the repository"

Command used to create docker container (run/create/compose/screenshot)

docker-compose up

My docker-compose.yml:

version: "2.1"
services:
  booksonic-air:
    image: linuxserver/booksonic-air
    container_name: booksonic-air
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - CONTEXT_PATH=url-base
    volumes:
      - /home/parallels/projects/booksonic/config:/config
      - /home/parallels/projects/booksonic/audiobooks:/audiobooks
      - /home/parallels/projects/booksonic/podcasts:/podcasts
    ports:
      - 4040:4040
    restart: unless-stopped

Docker logs

See the attached logs.txt
logs.txt

Additional info

I have tried the same steps directly on my MacOS with docker for Mac - same 404 error.

Request for Themes as with linuxserver/airsonic

Desired Behavior

Please would you consider adding in the Themes you already offer in your airsonic container?

Current Behavior

There is only the default theme and it would be lovely to be able to change from the bright white. :)

Can't navigate to settings and "Fontconfig error: No writable cache directories" error

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

I'm running a new install of the latest Docker image on a Synology NAS and was able to login using the default credentials but when I tried to go to the Settings tab it just won't get there (I can navigate to some of the other tabs though). I checked my Docker logs and see "Fontconfig error: No writable cache directories." Any idea how to get past this?

Expected Behavior

No response

Steps To Reproduce

  1. Running Docker on a Synology NAS
  2. With basically the default config
  3. Unable to navigate to Settings and getting "Fontconfig error: No writable cache directories" errors in logs

Environment

- OS: Synology DSM 7.2
- How docker service was installed: docker-compose from https://hub.docker.com/r/linuxserver/booksonic

CPU architecture

x86-64

Docker creation

---
version: "2.1"
services:
  booksonic:
    image: lscr.io/linuxserver/booksonic
    container_name: booksonic
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    volumes:
      - </path/to/appdata/config>:/config
      - </path/to/audiobooks>:/audiobooks
      - </path/to/podcasts>:/podcasts
      - </path/to/othermedia>:/othermedia
    ports:
      - 4040:4040
    restart: unless-stopped

Container logs

Config /config /metadata
[2023-11-07 06:19:42] INFO: === Starting Server ===
[2023-11-07 06:19:42] INFO: [Server] Init v2.5.0
[2023-11-07 06:19:42] INFO: [Database] Initializing db at "/config/absdatabase.sqlite"
[2023-11-07 06:19:42] INFO: [Database] Db connection was successful
[2023-11-07 06:19:43] INFO: [Database] Db initialized with models: user, library, libraryFolder, book, podcast, podcastEpisode, libraryItem, mediaProgress, series, bookSeries, author, bookAuthor, collection, collectionBook, playlist, playlistMediaItem, device, playbackSession, feed, feedEpisode, setting
[2023-11-07 06:19:44] INFO: [BackupManager] 0 Backups Found
[2023-11-07 06:19:44] INFO: [BackupManager] Auto Backups are disabled
[2023-11-07 06:19:44] INFO: [LogManager] Init current daily log filename: 2023-11-07.txt
[2023-11-07 06:19:44] INFO: Listening on port :80
[2023-11-07 06:19:46] INFO: [SocketAuthority] Socket Connected c-HLf7awg7OVr8zNAAAB
[2023-11-07 06:21:53] INFO: [Watcher] Initializing watcher for "Books".
[2023-11-07 06:21:53] INFO: [Watcher] "Books" Ready
[2023-11-07 06:22:54] INFO: [Watcher] Initializing watcher for "Podcasts".
[2023-11-07 06:22:54] INFO: [Watcher] "Podcasts" Ready
[2023-11-07 06:24:07] INFO: [Watcher] Initializing watcher for "Books".
[2023-11-07 06:24:07] INFO: [Watcher] "Books" Ready
[2023-11-07 06:24:20] INFO: [Watcher] Re-Initializing watcher for "Books".
[2023-11-07 06:24:20] INFO: [Watcher] Initializing watcher for "Books".
[2023-11-07 06:24:20] INFO: [Watcher] "Books" Ready
[2023-11-07 06:26:37] INFO: [SocketAuthority] Socket c-HLf7awg7OVr8zNAAAB disconnected from client "paulr24" after 411406ms (Reason: transport close)
[2023-11-07 06:27:53] INFO: [Auth] paulr24 logged in from ***.**.***.**
[2023-11-07 06:28:28] INFO: [LibraryScanner] Library metadata precedence changed since last scan. From [Unset] to [folderStructure,audioMetatags,txtFiles,opfFile,absMetadata]
[2023-11-07 06:28:28] INFO: [LibraryScanner] Starting (forced) library scan 3beb06fa-3b16-429c-ac45-e14c17c175d4 for Audiobooks
[2023-11-07 06:28:57] INFO: Received ping
[2023-11-07 06:30:55] ERROR: [AudioFileScanner] Invalid data found when processing input : "/books/audiobooks/Upgrade [B09L9TXHN4]/Upgrade꞉ A Novel [B09L9TXHN4] - 06 - Chapter 3.m4b" (AudioFileScanner.js:159)
[2023-11-07 06:31:22] INFO: Received ping
��
-07 06:31:35] ERROR: [AudioFileScanner] Invalid data found when processing input : "/books/audiobooks/The Real Sherlock [B07QY2QMCR]/The Real Sherlock꞉ An Audible Original [B07QY2QMCR] - 6 - Episode 5꞉ Fame, Fortune & War .m4b" (AudioFileScanner.js:159)
[2023-11-07 06:31:53] INFO: [Auth] paulr24 logged in from ***.**.***.**
[2023-11-07 06:34:07] INFO: [PlaybackSessionManager] startSession: Closing open session "The Real Sherlock: An Audible Original (Unabridged)" for user "paulr24" (Device: Pixel 7 SDK 34 / v14)
[2023-11-07 06:40:15] INFO: Received ping
[2023-11-07 06:57:11] INFO: [LibraryScanner] Library scan 3beb06fa-3b16-429c-ac45-e14c17c175d4 completed in 28:42.0 | 53 Added | 0 Updated | 0 Missing
[2023-11-07 06:57:15] INFO: [LibraryScan] Scan log saved "/metadata/logs/scans/2023-11-07_3beb06fa-3b16-429c-ac45-e14c17c175d4.txt"
[2023-11-07 06:57:15] INFO: [LibraryController] Scan complete

Unexpected high CPU usage and poor performance on Raspberry Pi 4

Expected Behavior

  • app should start in a reasonable time
  • after start the UI should be responsive
  • client connections should be responsive
  • CPU load should not be excessive
  • CPU usage should be even across the CPU cores (not sure if this is possible)

Current Behavior

  • app takes up to 18 minutes to start
  • a simple operation such as the administrator selecting "settings", maxes out a single thread on the CPU for quite a while until the page opens
  • UI is frustrating to use because you have a wait a minute or two after selecting any item
  • client streaming only works occasionally in my testing.
  • I'm not experience anything similar to this in other docker containers such as Navidrome

Steps to Reproduce

  • start the container on a Raspberry Pi 4 using docker-compose
  • this issue is occurring with only 11 audiobooks in the library

Environment

  • Raspberry Pi 4 4GB arm7l
  • Arch Linux Arm 5.15.79-2
  • Docker 20.10.21
  • Docker Compose 2.12.2

Docker Compose File


version: "2.1"
services:
booksonic-air:
image: lscr.io/linuxserver/booksonic-air:latest
container_name: booksonic-air
environment:
- PUID=1000
- PGID=1000
- TZ=Africa/Johannesburg
volumes:
- /opt/booksonic-air:/config
- /media/data/audiobooks:/audiobooks
ports:
- 4040:4040
restart: unless-stopped

Logs
logs.txt

Screnshots
htop

image

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.