Koel logo

Koel

Personal music streaming server that works

Alternative to: spotify, apple music, youtube music


About Versions (100)

v7.6.1

2025-06-23

v7.6.1

[!NOTE]
There was never a v7.6.0 because my dumb ass screwed it up as always. Sorry!

[!CAUTION] Though a minor version, v7.6.1 brings some breaking changes (SemVer? What’s SemVer?), so please read this release note carefully before attempting an upgrade.

This new version of Koel comes with these improvements and changes:

  • Most importantly, the media scanner received the biggest overhaul since the project’s conception. As a result: Koel now supports perhaps every music format you’ve heard of, both lossy and lossless — I’m talking about mp3 (duh), mp4, m4a, aac, ogg, flac, aiff, ape, wma, wav, opus, ra, ac3, dts… Admittedly, I’ve not tested them all myself, but in theory, since getId3 and FFmpeg do all the hard work, I don’t even have to. Of course, if you want to stream those lossless files, make sure FFmpeg is installed and configured, you audiophile.
  • The second biggest improvement is in how Koel handles lossless streaming (transcoding). The functionality has been completely rewritten to support all storage drivers (local, SFTP, S3, and Dropbox), as opposed to only local as before. Now, for example, if you’re using S3 as your storage driver, a transcoded version will be generated on the fly and cached for subsequent plays.

Now to think about it, why am I tagging a minor version? This should be some major shit goddamnit. Anyways…

  • An ARTIFACTS_PATH .env config has been added. This is the local path to store artifacts like local transcodes, temporarily downloaded and uploaded files, etc. This is useful, for example, if you have a mounted disk and want to use it instead of relying on the app server’s tmp directory.
  • The concepts of the playlist owner and collaborators are now consolidated (#1938). TL;DR: Better database design, more open for future functionalities.
  • Album/artist info views now display loading skeletons during, well, loading (6a8959cebe18208ec0cc32e7fa5055c7872c8fec)
  • The play button on the artist/album thumbnail in the sidesheet (you know, where the lyrics and stuff are) is restored. It was gone due to some smartass “mobile-first” code (d6bb32cf9631cf08baedbb62a6a859867652244d)
  • Use public ID for users, albums, and artists.
  • The content of the sidesheet (you know, where the lyrics and stuff are) is now lazy-loaded (77d0b27bbdc524cbffb030d0a7463e459ca3070f). Meaning, a request is only made now if you activate the corresponding tab (Album Info, Artist Info, YouTube…)
  • You can now toggle and sort by Genre and Year columns, too (e43dfd1d250fa8e14041a771275d660289dbf95a)
  • Last but not least, Laravel’s been upgraded to version 11 to make use of new features and mitigate all security issues.

Upgrade

[!IMPORTANT] Since Laravel 11 requires PHP >= 8.2, make sure your PHP version meets this prerequisite before upgrading.

  1. Back up your database. I know, I sound like a broken record now, but this version comes with a few database changes, so you want to do it, trust me.
  2. Back up your database again. You can’t be too careful, can you?
  3. Check out v7.6.1 tag or extract the downloaded archive.
  4. If installing from source, run composer install
  5. Run php artisan koel:init as the webserver user. Note: The database migration step may take a while as Koel will have to do some magic moves behind the scene. Be patient!
  6. If every goes well, enjoy the shiny v7.6.1

”Oh shoot” you say?

  1. Look at storge/logs/laravel.log to hopefully find out what went wrong and fix it.
  2. If all hope is lost: restore the database, restore the files, etc., you know the drill, and let me know.