Diffuse is a music player that supports various services such as Google Drive and S3, plus decentralized locations such as Webdav and IPFS. It is very easy to use and the latest, stable Electron release can be installed to Windows, MacOS or Linux desktops from here. Music is simply displayed as a list and can be further sorted into playlists. Basic EQ and volume control are available under settings. Development is tracked via the project’s github page. The website Diffuse.sh is a fully functional demo instance, so just start playing music and enjoy!

You can either run Diffuse as a desktop application or a more limited Web application. Only major difference between both options is Nextcloud storage (WebDAV), local storage and keyboard shortcuts are only supported on the desktop Diffuse application. To use the Desktop application with Nextcloud simply:

Select Sources Select Add a New Source Select WebDav and add your account credentials.

If you prefer to use the Web Application you’ll need to stick to IPFS, Google Drive, Azure, or S3 Storage.

What I like:

Easiest Nextcloud compatible Desktop application I’ve ever used!

Pretty!

What I hope is improved:

Gap less playback, or adding some sort of cache to avoid pauses between tracks.

WebDAV support in Web Application

It is the ease of use and eye catching design that stand out for me, plus actual support for the IPFS Protocol. Most applications available for self-hosters are ugly and unfriendly, so I’m excited to see a piece of software visually bucking that trend. Development is on-going, so it’ll be exciting to continue following this project. An interview with the developer follows…

An Interview with the Lead Developer, Steven Vandevelde

What inspired you to create Diffuse?

I used Spotify quite a bit before, but now and then they would remove music that I liked.

A large part of my music collection also can’t be found on streaming services.

I decided then to just put everything on Amazon S3 and make my own music “streaming” app.

Are you still using S3 and Spotify?

Amazon S3 yes, all my music is still on there. Haven’t used Spotify in years.

What have you learned from working on Diffuse?



Quite a bit, ranging over a lot of different subjects:

– Cryptography (I wrote my own HMAC implementation and a lot of SHA usage)

– Talking to other services is not easy, they all have their own idea of security

– Protocols are great, except that, a lot of software that uses them don’t implement them properly (I’m looking at you WebDAV)

– Audio formats, web workers, string encodings, swift/ios, native apps, etc.

Are you referring to CORS support missing from WebDAV, or something else? Yes, that’s the biggest issue for sure.

You have quite a few integrations, including IPFS and remoteStorage. Would you recommend any particular one to users curious about streaming their own music vs. users concerned with privacy? Well, remoteStorage is purely used for authentication, or in other words, as the information database that contains all the music metadata and sources data. That said, for music storage, I like Amazon S3 the most at the moment, because it’s fast and secure. You can even set permissions for the keys you use. For example, you can set the permission to read-only, so when someone else gets hold of your keys they can only read your data, not make any adjustments. Azure Blob Storage works similar I think, but I haven’t used it much. IPFS, on the other hand, is all public data.

Do you self host much software?



I don’t really use much software that is hosted. Like Diffuse, I tend to use software that runs on my OS and uses local/cloud storage to store things. What role does the HMAC implementation serve in Diffuse? HMAC is used to make signatures that are part of URLs to private data, which in turn is used to play the audio file. Different services use different security measures. Amazon S3 uses HMAC amongst other things. Would you consider Diffuse to be secure?

I would like to encrypt the user’s data in Not really, the user’s data is not encrypted. But the user does control their data, so there’s that.I would like to encrypt the user’s data in version 2 , but I haven’t found a great/simple solution yet.