
Koel: A personal music streaming server - vive-la-liberte
https://github.com/phanan/koel
======
mentos
Anyone else find that in this new streaming age they listen to a lot less
music? It may just be a function of my age, but I feel like if I had a device
with all of my songs on it again I would listen to much more.

I think there could be another iPod age.

Imagine a device with 10Tb of flash memory, an E-Ink display and 2.5 million
songs.

~~~
ytjohn
Opposite for me. Someone turned me onto pandora 7 years ago and I listen to it
all day at work (via headphones). I have it on my phone and use it in the car.
I actually ended up paying for Pandora|One.

Only in the last couple years, when I started flying for work, did I realize I
had virtually no mp3s anymore. So I've been working on gathering music to use
in offline mode at airports.

~~~
coreymaass
This is where podcasts came in for me. And downloading the occasional DJ mix.

------
snthd
I couldn't compile it on Debian yet, but tomahawk ([https://www.tomahawk-
player.org/](https://www.tomahawk-player.org/)) looks interesting.

You could set up a music NAS with beets
([http://beets.radbox.org/](http://beets.radbox.org/)) as one of several
sources (also you could have spotify, youtube, soundcloud) then have playlists
that include stuff from a combination of them.

A last.fm type service for tomahawk is in beta at
[https://hatchet.is](https://hatchet.is)

~~~
anarcat
for tomahawk, the RFP is coming along nicely: [https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=649287](https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=649287)

not sure how this relates with the parent though...

------
unixhero
I have been using Subsonic.org on my servers since 2009. It has and still is
serving me very well.

~~~
pervycreeper
Subsonic works well enough, if you ignore the fact that it requires Java,
frequently corrupts its own database, doesn't properly cache certain file
formats on the client side even though it sends transcoded files (this one is
inexplicable to me), and has many other strange quirks. Worst of all, though,
is that it bills itself as free software, but requires activation after a
short period of use, and patches to circumvent the ransomware anti-features
have been taken down (not sure why tho). Recently, the pod catcher has been
crippled and made ransomware as well.

A good replacement would be welcome.

~~~
CaptSpify
Have you looked at ampache? I switched to it because of everything you just
mentioned.

~~~
mintplant
I could never get any of the Android apps for Ampache to work.

~~~
CaptSpify
The android apps are kind of terrible. I use ampache-provider and just-player
and it gets the job done. It's not a great solution though

------
amelius
What I'm looking for is better music discovery. This would require some form
of machine learning/statistics/collaborative filtering, but basically, if I
like a number of songs, I'd want the system to automatically recommend new
songs/artists.

~~~
jonty
You should try Spotify's "Discover Weekly" personalised autogenerated
playlist, it's been built by the Echo Nest team and learns directly from what
you listen to.

[https://press.spotify.com/uk/2015/07/20/introducing-
discover...](https://press.spotify.com/uk/2015/07/20/introducing-discover-
weekly-your-ultimate-personalised-playlist/)

~~~
amelius
I could try that. But I think I eventually want something more flexible. For
example, when listening to a song, I want the system to automatically pick
songs that are similar to that song. Or I'd like to pick songs based on
instruments used, tempo, origin, language, genre, etc.

~~~
earlz
You can do this if you right click and do play song/artist radio.. but in my
experience it sucks really bad, and has only gotten worse over time. Use to,
it was kinda useful. Now it's complete garbage. I'm not sure what they changed
in their algorithm but typically when I do this I get 5 artists that are only
marginally related, and then it proceeds to play music from those 5 artists in
a loop and the "dislike this" feature seems to do nothing. I've actually
disliked a song and then it came on about 20 minutes later.

~~~
Scarblac
I have a playlist of a lot of songs I like (except I try to keep it to one or
two songs per band).

The radio from that converges to endless Foo Fighters and The Prodigy -- over
half the songs!

It's not that I dislike them, but I don't particularly love them either and
there is just no diversity on that station.

~~~
krisdol
I understand, suggestions still have issues. I listen to a lot of more
obscurely specific genres, and sometimes will get just a couple of repeated
songs if I make a radio based on a lesser-known artist.

That said, if you haven't given the Spotify Weekly Recommendations a shot --
you should. Maybe it's because it has more data to work with than
song/artist/playlist-specific radios, but for me that feature has been
extremely spot-on. In fact, I hadn't used spotify for a while because I kept
hearing the same songs, but now I religiously keep on top of my discoveries
each week.

~~~
Scarblac
I agree on the weekly discoveries, they are great. The radios, at least the
playlist radios, are crap.

It seems like the radios point me towards the most common denominator and
plays the most mainstream stuff that matches, while the weekly discovery lists
come up with some very quirky stuff that I love.

I guess the radios can't have any "memory", it seems to generate close to one
song at a time (hence a lot of repetitions), whereas the discovery list can be
created 30 songs at a time and seems to go out of its way to find songs by
bands that I've never listened to.

------
acoleman616
I'm happy to see Laravel being used for more and more projects and getting the
credit it deserves as truly first-class framework -- regardless of language.

~~~
callumlocke
Nothing wrong with this comment, should not be downvoted.

------
archseer
I've been working on something similar, just for fun (gave me an excuse to
mess with Elixir and Ember). Still highly unstable though, I've spent maybe a
week total on this. It's a rewrite of an older sinatra-based project I did
back when html5 audio became stable enough (on my github as well).

[https://github.com/archSeer/colibri](https://github.com/archSeer/colibri)
[https://github.com/archSeer/colibri-
server](https://github.com/archSeer/colibri-server)

~~~
onli
Did you also run into the problem of playing .ogg's in Firefox when sending
the file content via sinatra?

Searching a solution for that for my own sinatra-based html5 webplayer
([https://github.com/onli/music-streamer](https://github.com/onli/music-
streamer), not even close technically and from the UI) since a long time.

~~~
archseer
Don't think so, it was a few years ago though :/ Might have been an incorrect
content-type header?

I'm looking into [https://github.com/audiocogs](https://github.com/audiocogs)
to add AAC/other codecs to browsers with no support -- that's the main feature
I'm missing with all these web-players, depending on the browser, parts of my
library may not play.

~~~
onli
> _Might have been an incorrect content-type header?_

Thought that as well, and it seems like there are multiple type headers for
ogg. But none worked :/ Also not those that worked on other sites, so I
thought about Content-Length and errors in my logic when to transcode. Went
nowhere.

> _I 'm looking into
> [https://github.com/audiocogs](https://github.com/audiocogs) to add
> AAC/other codecs to browsers with no support_

If you can install that clientside, that is a great feature. I tried to
transcode and stream stuff on the server using ffmpeg, and the big problem was
content-length – when streaming I could only estimate the correct setting,
leading to some songs being ended too soon. Could've changed by now ofc in the
new browser version.

~~~
archseer
Yep, the work they do at Audiocogs is pretty amazing, live demo:
[http://audiocogs.org/codecs/](http://audiocogs.org/codecs/) The transcoding
is done completely client-side.

~~~
onli
Not quite there yet for me (small lags in the beginning), but that is already
pretty great. I should integrate that instead of battling the transcoding, at
least for FLAC, which seems like it will never be supported by browsers
directly.

Thanks for the link.

------
edent
Will be interesting to see how this compares with
[http://ampache.org/](http://ampache.org/) which, while great, still hasn't
solved the mobile access problem.

~~~
benbristow
The yellow on that homepage is painful.

~~~
OJFord
It would be okay without the orange logo and glow above it IMO.

------
addict3d
This looks great, could you please integrate youtube and soundcloud search for
streaming?

EDIT:
[https://github.com/embedly/player.js](https://github.com/embedly/player.js)
may save you some time!

------
knoopx
I also built something similar, however instead of ripping of Spotify UI,
which I personally find terrible, I made a "power user" UI that is album-
centric (they way I listen to music), keyboard navigable and has a powerful
filtering "omnibar". Check it out at:
[https://github.com/knoopx/headbang](https://github.com/knoopx/headbang)

------
mrmondo
Was excited to see this, I did hit a lot of composer and npm problems (as I
somewhat expected) here's hoping the bug reports I've filed can be easily
resolved. At the moment I'm using groovebasin but that needs some serious
improvement around it's installation dependencies.

------
pierrec
I've been looking through online playlist servers and wondering: Why shouldn't
I host something like this as a static website? After looking around and not
finding any tool that generates this, I'm considering making it myself,
shouldn't be too hard.

I don't really need any features that require server-side processing, and
static hosting would essentially reduce the cost to zero, for the amount of
storage and bandwidth I would make of it (as well as possibly making it a bit
faster).

~~~
benkaiser
I guess it's persistence.

You want to remember playlists across machines? no longer static You want to
modify song info / update cover art? no longer static

But gosh a static music player would be incredibly fast. Put it up on gh-pages
and watch it fly!

~~~
toomuchtodo
Create playlists as machine readable, version them, inject them into IPFS [1]
for public consumption.

[1] [https://ipfs.io/](https://ipfs.io/)

------
ohblahitsme
This is awesome! I'm gonna set up my R-Pi at home to run this and merge my
brother's and my music libraries. Thanks for this!

------
addict3d
Holy, cow! I was working on a node-webkit/cordova angularJS app very similar
to this until I got bored of angular. It pulls music from Soundcloud and
YouTube.

Here's a screenshot if anyone's interested
[http://i.imgur.com/uSBNSeE.png](http://i.imgur.com/uSBNSeE.png)

~~~
daguava
I'm working on an insanely similar project, also in angular, except mine's
exclusively backed by youtube. Interesting how many similar projects pop up
like this.

~~~
addict3d
I did some googling a while back and saw some very similar. Same stack even.
I've on multiple occasions seen ideas I've had created in the same exact stack
I'm using. I probably have even seen your project, I'm thinking of open-
sourcing mine since it's not being used at the moment but it's a tad-bit
incomplete.

------
benkaiser
for a node.js based Google Play Music clone (with android sync application
included) \+ youtube downloading built in (with playlists) \+ soundcloud
downloading built in (with playlists) see my project Node Music Player:
[https://github.com/benkaiser/node-music-
player](https://github.com/benkaiser/node-music-player)

I've been working on it for the last few years with a few pull requests from
awesome members of the community and I'm about to launch auto-generated mixes
that allow you to explore music in a way similar to Google Play Music and
Spotify (using lastfm api and youtube: here's the module for it
[https://www.npmjs.com/package/similar-
songs](https://www.npmjs.com/package/similar-songs) )

------
sphildreth
I also started a project on my own; mostly to accommodate my 80k music
collection and partly to get better with Python:
[https://github.com/sphildreth/roadie](https://github.com/sphildreth/roadie)

------
dannyrosen
One of the features I've long sought after has been multiroom streaming (ala
Sonos)

~~~
lsiunsuex
I've solved this in my house and a friends house with a bunch of Airport
Expresses and a multi channel amplifier.

1 Airport Express for each zone - I have 3 currently - Patio, 1st floor, 2nd
floor. (installed 6 in my friends house)

Each "zone" is a named Airplay point on each Airport Express

Airport Express connects to the multi channel amp via headphone > RCA left /
right > RCA left right to 1 RCA

Then the amp is hard wired to each in wall speaker.

iOS devices can only stream to 1 Airplay point at a time but iTunes / OS X can
stream to multiple at a time.

So the wife or I could be cooking in the kitchen, listening to 1 stream and
the party can be outside on the patio listening to another stream

Not cheap at $100 (ish) per Airport Express + amp + speakers but by far
cheaper then Sonos and their in wall speakers - not book shelf so theres no
clutter.

It's cool to stream from iTunes and fill the entire house with 1 synced
stream.

~~~
Galaxeblaffer
I believe the new Chromecast Audio is the cheapest solution here.. They have
even added support for setting up zones. But if you insist on using iTunes i
guess it's not an option for you.

~~~
soylentcola
Oh hey, thanks for that bit of info. I somehow missed the new multi-room
"groups" feature and that's something I've been waiting for.

I've only got a single CC Audio at the moment (and one of the original video
ones) but I was waiting for them to add this feature before buying more. I've
actually wanted this feature since the original CC came out and when they
announced the CC Audio I was worried that it would take forever to add the
multi-cast capabilities.

Now instead of investing hundreds in a Sonos system I can grab a few $35
receivers and turn every set of random powered PC speakers and shelf
system/boom box with an aux-input into an endpoint for audio. And if I want
better sound I can always pick up a nicer set of powered speakers and do the
same but as cheap as PC speakers can be (I often see them for $5-10 at
Goodwill) it's got the potential to add audio to any room for very little
cost.

------
ascagnel_
This is interesting, but how would it compare against something like Plex
(that handles video and transcoding as well as music, but not open source) or
Boombox (just music and also open source).

------
joeyspn
Docker image for y'all incoming...

[https://github.com/phanan/koel/issues/10](https://github.com/phanan/koel/issues/10)

=)

------
oxguy3
oh my god yes thank you, i've wanted this exact piece of software for so long,
and just was too lazy to program it myself. this is EXACTLY what i wanted.

------
pwenzel
I wonder if one could drop Koel on a webserver and use a cloud service like
Box.com, Dropbox, Google Drive/Nearline to serve the MP3 files?

------
methyl
Plex is also very good alternative to Spotify, if you share your server on
public IP.

~~~
tomtoise
I find it pretty trash for discovery and things like playlists. I have 368
artists of stuff and it's quite unwieldly. Looking at Koel now.

~~~
methyl
I don't use playlist, grouping by artist/album is pretty much what I need, so
it works for me :)

------
brandonmenc
If this lets you cache music locally, it will replace iTunes for me.

------
mkj
Does it have 30 million tracks?

~~~
mapleoin
No, but The Pirate Bay does.

~~~
mentos
iTunes has a catalog of 26 million songs which represents probably around
100Tb of data

Imagine a future where you can fit 100Tb on an iPod and never have to stream
again.

~~~
tomschlick
Imagine a future where you don't have to because we have a strong 5G network
and mobile providers that don't price gouge per GB... we can dream...

~~~
toomuchtodo
I'd rather just carry >1TB of flash storage around with me, with all of the
content stored web addressable (so it could be served back to the net if
needed).

------
sneak
Subsonic is a similar project, and has a mature ecosystem of client apps.
(Added bonus: no PHP.)

~~~
maaaats
Great minds discuss the product, small minds belittle the language it was
written in.

~~~
progrn
It is fair to discuss the language of an open source project in a technical
leaning forum.

~~~
maaaats
Yeah, but this discussion was not very fruitful. Just language-bashing.

~~~
devNoise
I agree. PHP isn't as sexy as node.js or rails. Though the project is using
PHP 5.5.9, composer and the Laravel framework. It seems like author is making
an effort to make good PHP code. The only thing he could have done to make the
code base cooler for PHP was to use HHVM.

------
johansch
Having your own stash of pirated mp3 tracks is so 1997.

~~~
quadrangle
not at all, you mean more like 1999 at the earliest.

~~~
johansch
I certainly mean 1997. Early that year is when it took off. Winamp was
released in April of that year. Before that there was some other Windows-based
mp3 player with a super simplistic UI, the name of which I can't recall right
now. I may or may not have had about a hundred tracks using up almost all of
my hard drive space at the time.

You were just behind the curve. :)

~~~
quadrangle
Hah. Still, in 1997, the fact that some people had the capacity to have mp3
files on their computers doesn't mean much since even disorganized file-
sharing wasn't all that common and there was little way for almost anyone to
real gather substantial collections. 100 tracks is nothing, that's like a
small stack of CDs.

------
danpalmer
I find it interesting that this is described as a Spotify clone. To me,
Spotify is a large music library that I can pay a subscription to access, with
advanced (arguably) discovery features. This on the other hand is a web based
player and streaming server. I wouldn't describe them as the same at all.

Is this really how people view Spotify?

Edit: interestingly, the product itself doesn't mention Spotify anywhere.

~~~
jmilloy
Spotify is: a library, a streaming service, and a web/desktop player. This is:
a streaming service and a web player. You have to provide your own library,
which I think goes hand in hand with _self-hosted_.

~~~
krisdol
Spotify is all about Music Discovery. It is:

1\. a music recommendation engine

2\. social sharing of playlists

3\. a music subscription service

To me, those are more important than the player itself -- in fact, I'd say #2
and #3 on that list are the defining aspects of Spotify for the general user,
where #1 is more of a personal killer-feature for me.

~~~
untog
Spotify is "all about" whatever you use it for. As someone who does not share
playlists nor use the sub-par radio feature, it certainly isn't about music
discovery for me.

~~~
krisdol
Do you use it for its player, or its cloud library?

Music subscription was on my list. But, if you already have all the songs
you'd listen to, and don't care for finding new music, what do you use it for?

~~~
untog
I do care for finding new music, I just don't do it through Spotify. I do
_play_ that new music through Spotify, however.

~~~
vdaniuk
Spotify radio is the worst recommendation system I've ever used in any
software product ever.It's just that bad and my music tastes are not really
esoteric. Do you have any suggestions for music discovery?

~~~
jmilloy
I mostly follow labels of albums I already like.

The main way I do music discovery on Spotify is looking at the "Appears on"
section under artists I like. A lot of these are compilations and mixtapes.
They've been curated by a person _and_ actually released, so you can get
quality, real variety, and real similarity (of taste).

~~~
vdaniuk
thanks!

------
gedrap
The project looks cool, however, I find using 'Spotify' in the title very very
clickbaity. It's just a music streaming service + player. There's nothing
wrong with that, I am not saying that the project sucks or anything, it's just
uncool to use a popular brand to attract clicks and call it a clone when it's
something totally different.

It's like calling VLC self-hosted netflix clone.

~~~
OJFord

        > It's like calling VLC self-hosted netflix clone.
    

Only with a VLC skin to make it look like Netflix. And even then, what about
library browsing? They're fundamentally different. Netflix recommendations are
awful, but they do exist.

~~~
gedrap
> Netflix recommendations are awful, but they do exist.

That's odd, they were amazing to me for about 2-3 years :) but that's one of
the things that probably varies a lot from person to person because of
different preferences, different availability based on region, etc.

~~~
cballard
The problem I have with Netflix recommendations is that while they understand
genres, they're not good at recommending _good_ shows.

Since I've watched Archer and Arrested Development, Netflix thinks I'd like
every mediocre comedy show, since I've watched Sherlock and Luther, it thinks
I'd like mediocre non-serialized detective shows, and anything made by the
BBC. Watching all of BSG (which isn't even on Netflix anymore, RIP) has given
me a permanent section of terrible sci-fi recommendations.

------
callumlocke
Weird that everyone is nitpicking the HN submission title. Using the word
clone is just an honest admission that the UI design is ripped off. It's
fairly obvious that a "self-hosted Spotify clone" would require you to bring
your own music.

~~~
dang
Everyone always nitpicks the title, because titles are the bikesheds of HN:
it's easy to have something to say.

------
xena
I wish that people would write stuff like this in languages other than PHP.

~~~
monsieurmechant
Why?

