rockstor/rockon-registry

Add Airsonic-advanced

Closed this issue · 12 comments

I propose mbirth/subsonic for replacement. If I have time at some point I will make a PR proposal.

@Termitebug Thanks for opening this issue. Just looked and yes our existing image;
https://hub.docker.com/r/hurricane/subsonic/
Hasn't been updated for 4 years!!
But the replacement you suggest, although far more recent at 2 years old, is still way old. It is also only X86_64!

As per @mcbridematt core issue here:
rockstor/rockstor-core#2191

We are really trying to gain ARM64 compatibility across the board with each Rock-on image selection as we go.

I'm not familiar with subsonic myself so can't really suggest sensibly what the best image might be but if we could possible find a dual architecture aware/available image that would be much preferred as we move to getting as many Rock-ons as possible over to the aarch64 side as well as possible. In some cases that may just not be possible but that's getting more rare these days.

Thanks for offering to step-up to the pull request to address this. And let us know here what alternative image you might otherwise suggest to improve our standing on the arm side.

Incidentally I see there is a 7 month old image that is dual architecture (x86_64/AMD64 and arm64) and 1M+ pulls here:
https://hub.docker.com/r/hydria/subsonic/tags
Different and lower share arrangement/count but is newer and dual arch compatible. So there may be issues for our existing users of that Rock-on migrating over. That is another concern if we can handle/document that. But it's not a show stopper to getting multi-arch and newer images. Again I'm not really sure what I'm looking at Subsonic wise.

@Hooverdan96 You've done a number of these image updates, along with @FroggyFlox, if either of you get time to advise on this issue that would be most appreciated. The Rock-ons are not really my expertise, and @Termitebug looks to be game, time permitting, to do the legwork (initial development and testing) post image selection.

Sorry for the delay. I took a quick look.
I think the reason @Termitebug is proposing the above as a drop-in replacement is that it uses the same share approach, separating them into:
/subsonic - Folder to store Subsonic's log, configuration and database.
/music - Default music folder.
/podcasts - Default podcast folder.
/playlists - Default playlists folder.

@Termitebug can you confirm?

Some of the other ones only map to a config_data and a single music share from which (I presume via the config files) one can persist what goes where.

I think the reason the hurricane container has not been updated is because it can be set up to auto-update the subsonic version internally (not quite like Linuxserver.io but close). Of course that doesn't apply to the base image OS the container is based on.

If we do make an update, I would also recommend to go with a container like hydria/subsonic because of the multi-architecture thing.

However, not being a subsonic user there is the question how difficult it becomes to migrate from a four-share setup to a two-share setup. I guess, losing the auto-update might not be that bad, as it seems that Subsonic, after going closed-source doesn't seem to issue very frequent updates and the hydria (as well as mbirth) version tags the latest version (6.1.6).

Finally, I just saw that the github repo (https://github.com/mbirth/docker-subsonic) associated with the mbirth/subsonic container has been archived by its owner, so it's unlikely that it will see any additional updates any time soon.

My 2 cents

one other comment, after starting to read more on this, it seems there is also an open source fork that's very similar to subsonic: airsonic. Though not sure whether that is even up for discussion, since I assume there is a dedicated subsonic user base that would not like this change. For airsonic linuxserver.io has released a multi-arch container with all the advantages (and disadvantages) that their packages offer:
linuxserver/airsonic

Just wanted to add that here for posterity, even if that's not strictly part of this discussion.

I agree with you, @Hooverdan96 , it is my understanding that subsonic might deprecated even nowadays but as I'm not a user, this is mostly from hearsay. I'll try to find a proper answer to that.
If this is the case, we might thus prefer to deprecate our subsonic rock on and create one for airsonic.

Following-up on my previous post:
The Arch wiki does indicate Subsonic as deprecated and points to its open-source fork Airsonic: https://wiki.archlinux.org/title/Subsonic

The Airsonic website, does provide some history and further information: https://airsonic.github.io/

History

The original Subsonic is developed by Sindre Mehus. Subsonic was open source through version 6.0-beta1, and closed-source from then onwards.

Libresonic was created and maintained by Eugene E. Kashpureff Jr. It originated as an unofficial(“Kang”) of Subsonic which did not contain the Licensing code checks present in the official builds. With the announcement of Subsonic’s closed-source future, a decision was made to make a full fork and rebrand to Libresonic.

Around July 2017, it was discovered that Eugene had different intentions/goals for the project than some contributors had. Although the developers were hesitant to create a fork as it would fracture/confuse the community even further, it was deemed necessary in order to preserve a community-focused fork.

To reiterate this more clearly:

Airsonic’s goal is to provide a full-featured, stable, self-hosted media server based on the Subsonic codebase that is free, open source, and community driven.

Pull Requests are always welcome. Keep in mind that we strive to balance stability with new features. As such, all Pull Requests are reviewed before being merged to ensure we continue to meet our goals.

License

Airsonic is free software and licensed under the GNU General Public License version 3. The code in this repository(and associated binaries) are free of any “license key” or other restrictions. If you wish to thank the maintainers of this repository, please consider a donation to the Electronic Frontier Foundation.

Airsonic software includes Roboto Fonts by Google, distributed under GPLv3. Available as Apache 2.0 from here.

The Subsonic source code was released under the GPLv3 through version 6.0.beta1. Beginning with 6.0.beta2, source is no longer provided. Binaries of Subsonic are only available under a commercial license. There is a Subsonic Premium service which adds functionality not available in Airsonic. Subsonic also offers RPM, Deb, Exe, and other pre-built packages that Airsonic currently does not.

@Termitebug @Hooverdan96 @FroggyFlox
So given:

The Arch wiki does indicate Subsonic as deprecated and points to its open-source fork Airsonic:
and
... we might thus prefer to deprecate our subsonic rock on and create one for airsonic.

I'm in favour of this approach myself.

This way we give folks a way forward that is currently supported, and assuming there is a cross arch airsonic image that is currently maintained we also up our aarch64 showing at the same time. I'm also OK with dropping the subsonic relatively soon given it's now very old version and our old docker image. That way we also prune as we go.

@Termitebug & @Hooverdan96 Do we have a consensus in the making here.

I.e.:

  1. New issue/pr to add an Airsonic image
  2. This issue, or another and pr to drop our existing Subsonic.

We can't really hold onto stuff that hasn't been updated for ages as we then offer a tone of old stuff to folks who might assume we are pruning and fail to offer newer alternatives as our 'surface area' only grows as we try to hang-on to every deprecated project that ever existed. We are also in clearer licencing territory with this kind of prune.

@Hooverdan96 & @FroggyFlox Thanks for comming in with a more informed perspective here. Much apprecaited.

@Termitebug If we are mostly agreed on the above plan, to be confirmed here soon hopefully, are you game to build and test a new airsonic Rock-on instead of your prior offer to do an image update of our Subsonic rock-on. We will also need an issue/pr set to remove the subsonic Rock-on. That's a super easy task but nice to have in it's own issue/pr so we can indicate the way etc. Mostly likely covered here already so this issue could be referenced or even re-named to be the depricate/delete one.

Cheer all. I'm super keen for us to go through our entire Rock-on offering and drop all relatively dead projects and offer newer alternatives if possible. And as stated, again if possible, go the dual arch route.

@phillxnet @Hooverdan96 I agree to remove Subsonic container & image and replace it with airsonic equilevant.

I'm ready to test proposed images, Tasked mainly for the weekends.

The main functionately I'm after is that Airsonic would work as mush as possible with Volumio and other MPD's.

I apologize such a great absent of this issue but to me moderate IRL events have happened and eaten my time completely.

Now thath things are lookign to move fast forward I'll pay more attention on github and the forum.

@Hooverdan96

Sorry for the delay. I took a quick look.
I think the reason Termitebug is proposing the above as a drop-in replacement is that it uses the same share approach, separating them into:
/subsonic - Folder to store Subsonic's log, configuration and database.
/music - Default music folder.
/podcasts - Default podcast folder.
/playlists - Default playlists folder.
@Termitebug can you confirm?

Yes this is exactly what I'm after. However I don't see podcast needed requirement at all. too inconvenient.
Most of users use smartphone apps for podcasts.

I have been a Subsonic user for a 1-2 years and very much disliked the premium business model.

As a workaround I montly deleted /config and re-created it again, gaining free 30-day premium.

Here is a Linuxserver.io Rock-On .json for a review:

https://github.com/linuxserver/docker-airsonic-advanced

airsonic-advanced.json

{
    "Airsonic Advanced": {
        "containers": {
            "airsonic-advanced": {
                "image": "linuxserver/airsonic-advanced",
                "launch_order": 1,
                "ports": {
                    "4040": {
                        "description": "Webserver Port. Required default: 4040.",
                        "host_default": 4040,
                        "label": "Webserver port",
                        "protocol": "tcp",
                        "ui": true
                    }
                },
                "volumes": {
                    "/config": {
                        "description": "Choose a Share for Airsonic configuration. Eg: create a Share called airsonic-config for this purpose alone.",
                        "label": "Config Storage",
                        "min_size": 1073741824
                    },
                    "/music": {
                        "description": "Select the Share containing your Media",
                        "label": "Music Storage",
                        "min_size": 1073741824
                    },
                    "/playlists": {
                        "description": "Choose a Share for Airsonic playlists. Eg: create a Share called airsonic-playlists for this purpose alone.",
                        "label": "Playlist Storage",
                        "min_size": 1073741824
                    },
                    "/podcasts": {
                        "description": "Select the Share to store podcasts",
                        "label": "Podcast Storage",
                        "min_size": 1073741824
                    }
                },
                "environment": {
                    "MAX_MEM": {
                        "description": "This environment variable is used to set the maximum Java heap size in megabytes - 150 is a good default",
                        "label": "MAX_MEM",
                        "index": 1
                    },
                    "PUID": {
                        "description": "Enter a valid UID of an existing user with permission to media shares to run Airsonic as (default: 1001).",
                        "label": "UID",
                        "index": 2,
                        "default": 1001
                    },
                    "PGID": {
                        "description": "Enter a valid GID of an existing user with permission to media shares to run Airsonic as (default: 100.",
                        "label": "GID",
                        "index": 3,
                        "default": 100
                    }
                }
            }
        },
        "description": "Airsonic music server. <p>Based on a linuxserver docker image: <a href='https://hub.docker.com/r/linuxserver/airsonic-advanced' target='_blank'>https://hub.docker.com/r/linuxserver/airsonic-advanced</a>, available for x86-64 and arm64 architectures only.</p>",
        "ui": {
            "slug": ""
        },
        "volume_add_support": true,
        "website": "https://airsonic.github.io/",
        "version": "2.1"
       }
}

@Termitebug Could you present this json as a pull request, along with the associated root.json entry. That would make it a lot easier to review and make suggestions as we can then submit exact suggested changes etc. Plus it can be tested via our back-ends if presented via a pull request.

Great to see you back involved with this one. I've submitted a generic clean-up pr myself today that does away with the Subsonic Rock-on so at least that is dealt with now (in pending and post a review hopefully).

Cheers. And if you are unfamiliar with the pull request creation process here on GitHub then take a look at our following doc entry:
https://rockstor.com/docs/contribute/contribute_rockons.html

Hope that helps.

@Termitebug Just edited this issues title to reflect the fact that we have now remove Subsonic.