13 ms·
Koel: A personal music streaming server
- sneak 11y agoSubsonic is a similar project, and has a mature ecosystem of client apps. (Added bonus: no PHP.)
- mschuster91 11y ago> (Added bonus: no PHP.) It uses Java, a pile of (insert swear word) so high that nothing comes close.
- mahouse 11y agoAre you seriously comparing PHP with Java? Not saying Java is the best, but dude, at least it was not designed by monkeys.
- mschuster91 11y agoThere's a lot of high-performance, widely used PHP projects: MediaWiki, Drupal (to a certain degree though), Wordpress, Facebook... Now let's take a look at some popular Java apps: Eclipse, SAP's frontend, Lotus Notes, Atlassian JIRA/Confluence, JDownloader... recognize the pattern of slowness? PHP might have been designed by monkeys (and many of the early design mistakes are gone by now, anyway!), but at least PHP kept the 10-abstraction-layers-minimum monkeys away. Also, a PHP web (or CLI, or GUI) app will in most cases eat far less RAM than a Java app of same functionality. Also, PHP projects are far faster to develop because the intermediate step of compiling is removed, and it's far easier (and faster) to deploy PHP projects than a Java web app. Edit: did some quick measurement on a RPi 1, java hello world vs PHP hello world vs C hello world: javac takes 16.8s wall time, 28MB peak RSS. Running the program itself is 1.99s wall time, 13MB peak RSS. PHP in contrast is a single process with 0.7s wall time, 14MB peak RSS. C takes 1.24s wall time for the compile, 15MB peak RSS. The resulting program takes 0.01s wall time, 1MB peak RSS. Versions are openjdk 7u91-2.6.3-1+rpi1, php 5.6.14+dfsg-1+b1 and gcc 5.2.1-23+rpi1. That compile time of javac is simply... wtf.
- mahouse 11y agoYou are right about the slowness, that's not exactly the point I wanted to make. Anyway, calling wordpress or drupal "high performance" is a joke.
- mschuster91 11y ago> Anyway, calling wordpress or drupal "high performance" is a joke. Well, these two platforms are by far the leader in the CMS space. It's either usability, ease of administration or speed that keeps people using WP/Drupal over alternatives in other languages/frameworks.
- creshal 11y agoSeeing it from the point of view of a company with a few hundred Wordpress deployments: Definitely usability (if you want laypersons to be able to author content, there's little competition), largely availability of plugins, a bit ease of administration (it's getting better), but definitely not speed. Wordpress is so mindbogglingly slow that we have to use excessive amounts of caching for anything even remotely resembling medium traffic.
- sbarre 11y agoHonest question: do you not consider caching to be a normal part of a dynamic web application? I've never worked with a CMS or web app - in any language - that didn't include caching as a core part of the performance layer once it reaches a certain amount of load.. I'm sure it's possible, with enough money to throw at hardware, to scale without it, but why would you? Caching is a completely valid optimization approach in my view..
- mschuster91 11y agoWell Wordpress long came without any caching at all, dunno if that's changed by now. Drupal in contrast comes with its own DB caching. Both can be plugged into memcache and friends, and if done right you can put in Cloudflare or other frontend caching systems in front. Biggest performance +1, though, is enabling php opcache.
- jenscow 11y agoThe answer to "what's the best language?" should not be "language X", but "what are you making?" Once you've defined the requirements, restrictions, and personal abilities, only then you can have a meaningful discussion on what the "best" language is - and even then there is more than one answer.
- vincentkriek 11y agoI use subsonic and like it a lot. However, it could use a webinterface update. The default is old and ugly, but works very well. Jamstash (another web interface) looks nice but doesn't work well.
- maaaats 11y agoGreat minds discuss the product, small minds belittle the language it was written in.
- progrn 11y agoIt is fair to discuss the language of an open source project in a technical leaning forum.
- maaaats 11y agoYeah, but this discussion was not very fruitful. Just language-bashing.
- devNoise 11y agoI 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.
- skeletonjelly 11y agoI'm not sure this is a saying
- lostsock 11y agoHave you actually even looked at the source code for this project before you jumped in with the snark of it being written in PHP?
- archseer 11y agoI'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 11y agoDid 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 11y agoDon'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 11y ago> 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.
- edent 11y agoWill 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.
- fungi 11y agoTried hacking on a mobile skin last week and gave up. Cherry music is very minimal but works on mobile.
- benbristow 11y agoThe yellow on that homepage is painful.
- OJFord 11y agoIt would be okay without the orange logo and glow above it IMO.
- CaptSpify 11y agoAmpache Providor + Just Player works on mobile for me. It's not a great solution, but it gets the job done.
- mikerackhabit 11y agoEnable the Subsonic API[1] and use DSub[2]. Work amazingly well. Not sure if you're not on Android, although I imagine there must be a decent subsonic client for most mobile platforms. [1] https://github.com/ampache/ampache/wiki/API#subsonic-api https://github.com/ampache/ampache/wiki/API#subsonic-api [2] https://github.com/daneren2005/Subsonic https://github.com/daneren2005/Subsonic
- sphildreth 11y agoAmpaches inability to handle like named Albums (https://github.com/ampache/ampache/issues/807 https://github.com/ampache/ampache/issues/807) was my reason to drop it and start Roadie https://github.com/sphildreth/roadie https://github.com/sphildreth/roadie
- dannyrosen 11y agoOne of the features I've long sought after has been multiroom streaming (ala Sonos)
- lsiunsuex 11y agoI'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 11y agoI 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 11y agoOh 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.
- amelius 11y agoWhat 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.
- martin-adams 11y agoI used to use Pandora before they cut off the UK due to licencing. I kept discovering great new songs using Pandora that I just haven't been able to recreate in any other service (I use Spotify regularly). I've no idea if that would still be the case as we're looking at about 5+ years ago now when I used it.
- soft_dev_person 11y agoI had the same experience and only started using Spotify when Pandora left Europe. Discover Weekly is a very good replacement, though, even if it's not the same.
- smt88 11y agoYou might want to look into http://www.last.fm http://www.last.fm I've found those recommendations much better than Pandora or Google Music, and you can hook into it with many different services/players.
- younes0 11y agoyou can also check this little "similar artists" spotify tracklist generator I've built, based on last.fm api: http://verdisco.yebsoft.com/ http://verdisco.yebsoft.com/
- nosuchthing 11y agoLast.FM used to have an amazingly accurate and helpful music discovery system, and great similar artist recommendations up until roughly 2 years ago where they either limited the amount of similar artists, or put some sort of blanket filter or whitelist for a smaller pool of "approved similar artists". Last.FM was so ahead of the game it's mind boggling how they just seem to have fizzled out while Grooveshark, and Spotify came in. Last.FM had a huge user base with great info on individual music tastes, had a functioning streaming service, a whole functioning ecosystem of music fans and musicians that just seemed to have layed dead in the water after it was bought out.
- methyl 11y agoPlex is also very good alternative to Spotify, if you share your server on public IP.
- unixhero 11y agoI have been using Subsonic.org on my servers since 2009. It has and still is serving me very well.
- CaptSpify 11y agoI've been using ampache, because I hate java, but it's pretty much the same thing. Both products work really well
- neumann 11y agoSubsonic is great. I switched to Kodi with the chorus web application that allows controlling and streaming your music to the web browser. Not as feature rich, but together with yatse on my android devices it means a raspberry pi with only kodi running can be a total home media server.
- e40 11y agoI've been happy using Subsonic, though just this week I upgraded the server and got jetty db corruption. The forums have a few other people complaining of this (on Linux) and no solutions. Very frustrating.
- greatquux 11y agoThis was the very problem that got me to switch to Madsonic and I haven't looked back since!
- bombtrack 11y agoI just want to echo the love for Subsonic (and the iOS iSub app). I happily used Google Music until I hit the (at the time) 20k track limit. Now that I've been running and using Subsonic for a couple years, I consider it a complete upgrade in terms of features and performance. I had not heard of koel or ampache until today, but choices will always be welcomed.
- pervycreeper 11y agoSubsonic 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.
- ascagnel_ 11y agoThis 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).
- danpalmer 11y agoI 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.
- richoakley 11y agoIt's a visual clone.
- BillinghamJ 11y agoI think it's more about the UI - which looks near-identical to Spotify's.
- est 11y agoEarlier Spotify desktop client was a state of art. 2 megabytes, every function works seamlessly. It's developed by the same author of original uTorrent, Ludvig Strigeu. Nowadays, Spotify kinda bloats with cef and funny feeling HTML5 UI. Trivia: Ludvig Strigeus also developed Spotiamp http://news.spotify.com/us/2013/12/20/spotiamp-long-live-the-llama/ http://news.spotify.com/us/2013/12/20/spotiamp-long-live-the...
- dkns 11y agoYes! I remember when they introduced new client. I was less than impressed. I think the new one is built on chromium or at least uses it partially as base.
- icebraining 11y agouT was a good client, but it pales in comparison to his other project, OpenTTD.
- 72deluxe 11y ago
- mkj 11y agoDoes it have 30 million tracks?
- mapleoin 11y agoNo, but The Pirate Bay does.
- mentos 11y agoiTunes 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.
- scott_karana 11y agoBy the time we get to 100TB iPods, we'll probably have a million-odd TB of musicians to listen to... :-)
- tomschlick 11y agoImagine 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 11y agoI'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).
- parski 11y agoSource?
- djloche 11y agoAn acquaintance recently counted up their list of mp3 downloads and had ~150,000 songs, representing 15 years worth of downloading and a relatively narrow music interest spectrum. I imagine that it is easier to auto download all the new releases from your favorite genres than it is to try to download everything from all release dates from all the genres that you don't even enjoy.
- mrmondo 11y agoWas 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.
- ohblahitsme 11y agoThis 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!
- acoleman616 11y agoI'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 11y agoNothing wrong with this comment, should not be downvoted.
- gedrap 11y agoThe 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.
- cwyers 11y agoI mean, I think clone is the polite way of describing how this looks.
- OJFord 11y ago> 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 11y ago> 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 11y agoThe 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.
- OJFord 11y agoIt recommends me things that it expects me to rate (as in, when it guesses your rating with red stars) less than 3/5. It also recommends me kids shows and cartoons, despite my painstaking completion of the huge preferences list, and many ratings/"not interested"s that clearly state I "never" watch cartoons or kids shows.
- mentos 11y agoAnyone 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.
- mxuribe 11y agoSame here; I have been listening to streaming stuff less and less...but my reasons are: 1. Between so many work/day-job meetings, seldom in front of a laptop with the opportunity to work with headphones, and music in the background. 2. When I'm mobile - and on my mobile/away from laptop - I'm just too stingy with my mobile data plan. (Maybe its my age, or cuz of family, but priorities of data plans change with growing families ;-)
- mentos 11y ago>I'm just too stingy with my mobile data plan. Yea that is exactly my sentiment. There was a time when I was cool to walk/drive about and listen to music. Now my data plan pushes me over the fence into silence.
- occam65 11y agoThis is where I really like Google Play Music. I can download the album/songs I want to listen to while I'm on WiFi at home, then when I'm on-the-go it just plays the local version rather than streaming.
- anu_gupta 11y agoWhich streaming service do you use that doesn't allow offline caching?
- deleted 11y ago[deleted]
- 11y ago
- oxguy3 11y agooh 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.
- callumlocke 11y agoWeird 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.
- johansch 11y agoHaving your own stash of pirated mp3 tracks is so 1997.
- quadrangle 11y agonot at all, you mean more like 1999 at the earliest.
- johansch 11y agoI 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 11y agoHah. 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.
- snthd 11y agoI 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 11y agofor 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...
- brandonmenc 11y agoIf this lets you cache music locally, it will replace iTunes for me.
- pwenzel 11y agoI 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?
- addict3d 11y agoHoly, 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 11y agoI'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 11y agoI 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 11y agofor 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 )
- xena 11y agoI wish that people would write stuff like this in languages other than PHP.
- monsieurmechant 11y agoWhy?
- pierrec 11y agoI'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 11y agoI 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 11y agoCreate playlists as machine readable, version them, inject them into IPFS [1] for public consumption. [1] https://ipfs.io/ https://ipfs.io/
- mongol 11y agoYou have a very good idea there. Generate json files with music files metadata and you are well on your way.
- addict3d 11y agoThis 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!
- joeyspn 11y agoDocker image for y'all incoming... https://github.com/phanan/koel/issues/10 https://github.com/phanan/koel/issues/10 =)
- sphildreth 11y agoI 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
- knoopx 11y agoI 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