Peermusic is a mobile ready music player that runs locally the browser. It strives to deliver all convenience features of modern music players combined with easy and encrypted peer-to-peer based sharing of music files.
- Runs in your browser tab.
- Features a beautiful mobile ready interface with different themes for every taste.
- Connections are only established between Peermusic instances that got deliberately connected by the user(s).
- The music player is a single-page application that can run offline.
- Requires minimal server infrastructure:
- (required) A signalhub server via which instances can initiate their peer-to-peer connections.
- (optional) A metadata providing server that delivers cover art and information about similarity of songs.
- A radio functionality that tries to automatically generate meaningful playlists.
- Connects peer-to-peer between instances to share data.
- Secures the communication cryptographically (regular WebRTC encryption - no public key pinning).
- Does not leak IP information to the central signalhub server that faciliates the peer-to-peer connection setup.
- Peermusic instances can be set to one of four different sharing levels:
- "leech" and "private" only connect to the users own Peermusic instances.
- "friends" allows connections to instances that were added as friends by the user.
- "everyone" takes advantage of WebTorrent:
- Locally available songs will be seeded via WebTorrent.
- Locally unavailable songs that are requested by other instances will be downloaded via WebTorrent.
- Peermusic instances employ an escrow sharing concept:
- If A knows B and B knows C. But A does not know C. Then B will act as an escrow between A and C.
- This escrow concept is used for:
- The index of available songs.
- The songs themselves.
- The songs metadata (cover art and similarity information).
- Association of instances using QR codes and custom
web+peermusic://...
URLs. - Desktop notifications on track changes.
- Works with Google Chrome and Chromium on desktop and mobile plattforms.
- Peermusic can easily be self hosted.
You can find the most recent version here: Peermusic hosted on Github Pages.
git clone https://github.com/peermusic/peermusic.git
cd peermusic
npm install -g gulp
npm install
gulp
A local webserver will be started on http://localhost:8000. A file watcher will automatically recompiled when source files are beeing changed. The generated files will be placed in public/build/
.
Also a local signalhub server will be started on http://localhost:7000 to allow for easy testing of the peer-to-peer features. To run a different instance of Peermusic within the same browser use http://127.0.0.1:8000.
If you have livereload installed browser reloads will be triggered automatically on code changes.