[Support] binhex - Airsonic-Advanced


Recommended Posts

Overview: Support for Docker image arch-airsonic-advanced in the binhex repo.

Application: Airsonic-Advanced - https://github.com/airsonic-advanced/airsonic-advanced

Docker Hub: https://hub.docker.com/r/binhex/arch-airsonic-advanced/

GitHub: https://github.com/binhex/arch-airsonic-advanced

Documentationhttps://github.com/binhex/documentation

 

If you appreciate my work, then please consider buying me a beer 😁

 

btn_donate_SM.gif

 

For other Docker support threads and requests, news and Docker template support for the binhex repository please use the "General" thread here

  • Like 2
Link to comment

Yesterday I started looking into making my mp3s on unraid accessible. I haven't listened to almost any in 10+ years.  It seems airsonic is a good first step. Is this the install to use? The new one as of today, or should I start with the older, less advanced, version?

Link to comment

Install worked well but have trouble changing the admin password.  The new password works as well as the old default password.  Seems this is a known issue from a couple years ago, still looking for the resolution.

 

Edit: This seems to be a resolution. https://github.com/airsonic/airsonic/issues/733#issuecomment-384286666  

Edit: Problem solved.  within the WebUI, click on the user tab, select the admin user, click the add credentials checkbox to put in the new password. Then click on the Credentials tab and remove the old one from the list.

Edited by Everend
  • Like 1
Link to comment

Moved to Advanced from Airsonic all stuff working the only problem was with admin user and credentials ,

but after checked github issues , founded that admin username cant be deleted from system  but old credential need be deleted after greated new one....

Binhex Thanks for Great Docker

 

Link to comment
  • 1 month later...

I'm having issues getting the Sonos integration working. After activating it this is all I get back from the logs,

 

2021-04-17 00:19:59,651 DEBG 'start-script' stdout output:
2021-04-17 00:19:59.650 INFO --- o.a.player.service.SonosService : No Sonos controller found

2021-04-17 00:19:59,651 DEBG 'start-script' stdout output:
2021-04-17 00:19:59.651 INFO --- o.a.player.service.SonosService : No Sonos controller found

 

Anyone have any suggestions? I do have Airsonic running though Swag on its own subdomain but its accessible locally though http using the servers ip address and container port. For Sonos equipment I just have a couple of Ikea Sonos Bookshelf speakers.

Link to comment
  • 1 month later...

I am currently trying to get this docker to scan my music files but it wont, when I load the gui and setup a folder with my music on my array it says folder cannot be found. Any idea how to get it to scan my folder? 

Screenshot from 2021-06-05 14-06-20.png

Screenshot from 2021-06-05 14-07-16.png

Link to comment
23 minutes ago, grjbb said:

I am currently trying to get this docker to scan my music files but it wont, when I load the gui and setup a folder with my music on my array it says folder cannot be found. Any idea how to get it to scan my folder? 

You set the container path to /media, so that is the folder you want to scan, not the /mnt/user path.

  • Haha 1
Link to comment

Thank you! now for my second issue I cant seem to get anything to scan. I created a Music share and moved my music to that. I hit scan and its very briefly scans and nothing after that. No music is to be seen, its over 400gb worth. Could this be a issue with the share permission perhaps? I can see all files in my OS finder and play songs etc.

Link to comment
1 hour ago, grjbb said:

I cant seem to get anything to scan. I created a Music share and moved my music to that.

Did you change the host mapping in the docker container config to point to the new share instead of /mnt/user/music? Music != music, they are 2 different paths, and you already had a share called music. Regardless of the name in the host (Unraid) the container still needs to be pointed to /media unless you created a new path mapping.

Link to comment
33 minutes ago, jonathanm said:

Did you change the host mapping in the docker container config to point to the new share instead of /mnt/user/music? Music != music, they are 2 different paths, and you already had a share called music. Regardless of the name in the host (Unraid) the container still needs to be pointed to /media unless you created a new path mapping.

I did! I have a share called music, then in that itunes>music. Problem I am having now is AIrsonic sees my folder, even scanned a .plist folder called iTunes Media and that appeared, yet no music. My music in a folder structure of Artist > Albums. I cant work out what could be causing it not to scan all my files. I have made another account and gave it the permission. Scanning just shows up a window scanning 5 items then dissapears.

Link to comment
Posted (edited)
Spoiler

2021-06-05 18:36:32.277 INFO --- o.a.p.s.MediaScannerService : Starting to scan media library.

2021-06-05 18:36:32,278 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.278 INFO --- o.a.p.s.CacheConfiguration$CacheLogger : Cache Key: /media/user/music | EventType: REMOVED | Old value: music | New value: null

2021-06-05 18:36:32,279 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.279 INFO --- o.a.p.s.CacheConfiguration$CacheLogger : Cache Key: /media/user/music/iTunes Media/Music | EventType: REMOVED | Old value: Music | New value: null

2021-06-05 18:36:32,292 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.292 INFO --- o.a.p.s.MediaScannerService : Scanned media library with 5 entries.

2021-06-05 18:36:32,293 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.293 INFO --- o.a.p.s.MediaScannerService : Persisting albums

2021-06-05 18:36:32,293 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.293 INFO --- o.a.p.s.MediaScannerService : Persisting artists
2021-06-05 18:36:32.293 INFO --- o.a.p.s.MediaScannerService : Marking non-present albums.

2021-06-05 18:36:32,294 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.293 INFO --- o.a.p.s.MediaScannerService : Marking present files
2021-06-05 18:36:32.293 INFO --- o.a.p.s.MediaScannerService : Marking non-present artists.
2021-06-05 18:36:32.293 INFO --- o.a.p.s.MediaScannerService : Persisting genres

2021-06-05 18:36:32,294 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.293 INFO --- o.a.p.s.MediaScannerService : Album persistence complete
2021-06-05 18:36:32.294 INFO --- o.a.p.s.MediaScannerService : Updating genres

2021-06-05 18:36:32,294 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.294 INFO --- o.a.p.s.MediaScannerService : Marking non-present files.
2021-06-05 18:36:32.294 INFO --- o.a.p.s.MediaScannerService : Genre persistence successfully complete: true
2021-06-05 18:36:32.294 INFO --- o.a.p.s.MediaScannerService : Artist persistence complete
2021-06-05 18:36:32.294 INFO --- o.a.p.s.MediaScannerService : File marking complete

2021-06-05 18:36:32,295 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.294 INFO --- o.a.p.s.MediaScannerService : Completed media library scan.

2021-06-05 18:36:32,342 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.342 INFO --- o.a.p.s.MediaScannerService : Media library scan took 0s

2021-06-05 18:36:32,342 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.342 INFO --- o.a.p.service.PlaylistService : Starting playlist import.

2021-06-05 18:36:32,344 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.344 WARN --- o.a.p.service.PlaylistService : Failed to auto-import playlist /config/airsonic/playlists

java.io.IOException: Is a directory
at sun.nio.ch.FileDispatcherImpl.read0(Native Method) ~[na:1.8.0_281]
at sun.nio.ch.FileDispatcherImpl.read(FileDispatcherImpl.java:46) ~[na:1.8.0_281]
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[na:1.8.0_281]
at sun.nio.ch.IOUtil.read(IOUtil.java:197) ~[na:1.8.0_281]
at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:159) ~[na:1.8.0_281]
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65) ~[na:1.8.0_281]
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109) ~[na:1.8.0_281]
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103) ~[na:1.8.0_281]
at java.io.InputStream.read(InputStream.java:101) ~[na:1.8.0_281]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2314) ~[commons-io-2.6.jar!/:2.6]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2270) ~[commons-io-2.6.jar!/:2.6]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2291) ~[commons-io-2.6.jar!/:2.6]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2246) ~[commons-io-2.6.jar!/:2.6]
at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:765) ~[commons-io-2.6.jar!/:2.6]
at chameleon.playlist.SpecificPlaylistFactory.readFrom(SpecificPlaylistFactory.java:131) ~[core-1.2.1-RELEASE.jar!/:na]
at org.airsonic.player.service.PlaylistService.importPlaylist(PlaylistService.java:237) ~[classes!/:10.6.0]
at org.airsonic.player.service.PlaylistService.importPlaylistIfUpdated(PlaylistService.java:352) ~[classes!/:10.6.0]
at org.airsonic.player.service.PlaylistService.lambda$15(PlaylistService.java:329) ~[classes!/:10.6.0]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:1.8.0_281]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_281]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_281]
at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[na:1.8.0_281]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[na:1.8.0_281]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[na:1.8.0_281]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[na:1.8.0_281]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:1.8.0_281]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:1.8.0_281]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_281]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[na:1.8.0_281]
at org.airsonic.player.service.PlaylistService.doImportPlaylists(PlaylistService.java:327) ~[classes!/:10.6.0]
at org.airsonic.player.service.PlaylistService.importPlaylists(PlaylistService.java:308) ~[classes!/:10.6.0]
at org.airsonic.player.service.MediaScannerService.lambda$3(MediaScannerService.java:195) ~[classes!/:10.6.0]
at java.util.concurrent.CompletableFuture.uniRun(CompletableFuture.java:719) ~[na:1.8.0_281]
at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:701) ~[na:1.8.0_281]
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:457) ~[na:1.8.0_281]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[na:1.8.0_281]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067) ~[na:1.8.0_281]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703) ~[na:1.8.0_281]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172) ~[na:1.8.0_281]


2021-06-05 18:36:32,344 DEBG 'start-script' stdout output:
2021-06-05 18:36:32.344 INFO --- o.a.p.service.PlaylistService : Completed playlist import.

  Above is the log from scanning.

Edited by grjbb
Link to comment
Posted (edited)

Any one able to help? I have reinstalled countless times, removed from appdata and reinstalled to no avail. Below is my current docker inspect return.

 

[
    {
        "Id": "d4390d77dd39c6488e7c1cc6b39271e3f6a8845af2c05b2825a5c0ff2a8744e0",
        "Created": "2021-06-06T14:21:17.438206984Z",
        "Path": "/usr/bin/tini",
        "Args": [
            "-g",
            "--",
            "/bin/bash",
            "/usr/local/bin/init.sh"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 23591,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-06-06T14:35:06.877468334Z",
            "FinishedAt": "2021-06-06T14:35:06.415341688Z"
        },
        "Image": "sha256:e200af18a3e8fac47053616719aa912ba610003a4c5115ef53e6e99d6b7ac462",
        "ResolvConfPath": "/var/lib/docker/containers/d4390d77dd39c6488e7c1cc6b39271e3f6a8845af2c05b2825a5c0ff2a8744e0/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/d4390d77dd39c6488e7c1cc6b39271e3f6a8845af2c05b2825a5c0ff2a8744e0/hostname",
        "HostsPath": "/var/lib/docker/containers/d4390d77dd39c6488e7c1cc6b39271e3f6a8845af2c05b2825a5c0ff2a8744e0/hosts",
        "LogPath": "/var/lib/docker/containers/d4390d77dd39c6488e7c1cc6b39271e3f6a8845af2c05b2825a5c0ff2a8744e0/d4390d77dd39c6488e7c1cc6b39271e3f6a8845af2c05b2825a5c0ff2a8744e0-json.log",
        "Name": "/binhex-airsonic-advanced",
        "RestartCount": 0,
        "Driver": "btrfs",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": [
            "9a5785b3e78730321b9022f4249833f263b4b4970e1a31e5e1cc4ec1ae8519c0",
            "8f4c889bbbe287bba71107e396fd470d6307c327575a002761972da6e5247e76",
            "36369849de4dfac160a122d668f85327926b45c0f0f639f64a1497ec2400f020"
        ],
        "HostConfig": {
            "Binds": [
                "/media/:/media:rw",
                "/mnt/user/appdata/binhex-airsonic-advanced:/config:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {
                "4040/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "4040"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": null,
            "Name": "btrfs"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mnt/user/appdata/binhex-airsonic-advanced",
                "Destination": "/config",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/media",
                "Destination": "/media",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "d4390d77dd39",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "4040/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "UMASK=000",
                "PUID=99",
                "PGID=100",
                "TZ=Europe/London",
                "HOST_OS=Unraid",
                "CONTEXT_PATH=/",
                "MAX_MEMORY=2046",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "HOME=/home/nobody",
                "TERM=xterm",
                "LANG=en_GB.UTF-8",
                "JAVA_HOME=/usr/lib/jvm/java-8-openjdk/jre"
            ],
            "Cmd": [
                "/bin/bash",
                "/usr/local/bin/init.sh"
            ],
            "Image": "binhex/arch-airsonic-advanced",
            "Volumes": {
                "/config": {},
                "/media": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "/usr/bin/tini",
                "-g",
                "--"

 

Edited by grjbb
Link to comment
20 hours ago, grjbb said:

Cache Key: /media/user/music

Not that I use airsonic, but it would appear that you've set airsonic to scan /media/user/music (which translates to a host path of /mnt/user/music/user/music), since the host path on your template is /mnt/user/music

 

Set it to scan /media....

 

ie:

On 6/5/2021 at 9:32 AM, jonathanm said:

You set the container path to /media, so that is the folder you want to scan, not the /mnt/user path.

 

Link to comment

And, according to the docker inspect you posted,

            "Binds": [
                "/media/music:/media:rw",
                "/mnt/user/appdata/binhex-airsonic-advanced:/config:rw"
            ],

You changed the host path of /mnt/user/music that you originally had to instead be /media/music (which doesn't exist on the host).  You have the paths in the template correct in the first place.

Link to comment
Posted (edited)
16 minutes ago, Squid said:

TLDR: Within the container, you reference the container path you've set in the template.  This path translates to the host path you set in the template.

 

I currently have it set to /media and same issue, it scans 2 things and quickly ends with nothing being scanned 🤔 I have had it as /media, but been trying others to try get it to work. Restart the docker afterwards, couple of times having to restart my server due to my shares dissapearing! 

 

Screenshot from 2021-06-06 15-28-07.png

Screenshot from 2021-06-06 15-33-32.png

Edited by grjbb
Link to comment

Yes.  Trust what I said  You had the paths on the template mapped correctly before

 

Container Path /media mapped to host path /mnt/user/music

 

Within airsonic you set the path for music to be /media.   Is iTunes a subfolder off of the music share? (and is the regular music also a subfolder?)

 

If no, then get rid of the itunes line.  If yes, then set Music to be /media/musicFolder and iTunes to be /media/iTunesFolder

 

This might also help you understand path mappings 

 

  • Thanks 1
Link to comment
  • 1 month later...

I've been using this docker for a few months and it has been going well.  I did run into a recent issue and after looking into it, looks like it was just fixed in a recent release of airsonic-advanced. But I don't see an update is available in the docker?  When do the updates become available?

Link to comment
  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.