Music player with IPFS backend

ipfs-cluster
go-ipfs
#34

My first ipfs-cluster setup has not been succesful yet… But I have arm, arm64 and amd64.
Going to try in a more regular way…

I was wondering if you ever use beets and beet-ipfs plugin
https://beets.readthedocs.io/en/v1.4.7/plugins/ipfs.html?highlight=ipfs

For me it seems to work (logging is good) but I couldn’t find how to get ipfs reference then and any easy way to share my music library…

#35

What was the problem?

#36

Even sharing same secret, cluster nodes didn’t connect.

ipfs-cluster-ctl peers ls
QmYQJExSsv29GFJ3U59jgozAbUvDoF6VUFMWNeAnj89ed3 | rock64 | Sees 0 other peers

Maybe I didn’t wait enough, or architecture storage and processors are too different (16GB RpiZeroW, 32GB RPI3B+, 5TB Rock64, 200GB amd64)
The more I discover IPFS, the more I think this is ENORMOUS! It can really replace so much tools in one.

Now I am trying to share my Music library between my computers with CLI first.
I wanted to use cluster to have an automatic sync, but I mostly need to have repository CID distributed.
I must figure out how to keep a permanent reference to a changing dataset…
And how to host a Web GUI for it

#37

diffuse.sh is a So Great Network Magic?
Some browser based executed code (js) which files are hosted inside IPFS swarms and redirected by DNSLink?
Am I right?

#38

Did you bootstrap one to the other as shown in https://cluster.ipfs.io/documentation/quickstart/#step-1-add-new-members-to-the-cluster ?

#39

Difuse is a static html page (aka. a static site) with javascript, hosted on Netlify. Alternatively, there’s a native app which is basically the same but you can use it offline. Nothing fancy. In the application you can add a “source” of music, which can be IPFS, among other options. It scans the metadata from files/directories you added (or linked if you will), you get a list of all the music you added and then you can play the music.

In V2, you’ll be able to store the application data as well on IPFS, encrypted that is.

No further associations with IPFS.
I hope that clears things up :v:

#40

Yes I followed it… But I didn’t investigate enough to know where the problem was.
ipfs dht findpeer QmYQJExSsv29GFJ3U59jgozAbUvDoF6VUFMWNeAnj89ed3 could have helped

I’ll come back later on that cluster mode…
I am studying how to add a directory to IPFS and still be able to change files in it but be sure to keep access with same CID to all sub datastructure… https://docs.ipfs.io/guides/examples/websites/

#41

After on node “ipfs add Qm1…”, I think I missed to pin new file to cluster with “ipfs-cluster-ctl pin add Qm1…”

[EDIT] In fact no pinning are necessary with ipfs-cluster.
It needs to be remotely pinned in case of Private Network mode (swarm.key). Then subpub system could be used (prefered gossippub with ipfs config Pubsub.Router gossipsub.)

#42

You mean that only metadata is get from IPFS, where are music files located?

#43

The music files are on your storage, it doesn’t copy/move anything.
The app connects to your ipfs node, your aws-s3 bucket, your dropbox, etc.

Basically, there are two layers of data: the user layer and the music layer.
More info here: https://diffuse.sh/about/

1 Like
#44

If I want to use IPFS as Music Layer, I need an ipfs gateway that gives access to music files root folder?
So diffuse.sh parse the file tree and extract metadata for User Layer

In my case, IPFS storage will be distributed among public server (gateway) and radio nodes (NAT).
I am listing there the 3 methods I identified to organise ti.
They can be run alone or together…

  1. use Private Network:
    Means to make my private bootstrap list and share swarm.key on all nodes
    pin distribution is not automatic, so I’ll need to use pubsub or textile to acomplish it

  2. use ipfs-cluster:
    Must share “secret”: Provide automatic PIN among all nodes.
    Limit node storage: ipfs config Datastore.StorageMax 500GB

  3. use regular IPFS network:
    For private files. Must encrypt files with PGP and share the private key on every decoding nodes.

Each node adding new file will have to update file listing WebSite and publish it
ipfs name publish --key=KEY QmNEW_SITE_ID

#45

Yeah exactly.

How’s the cluster setup going?

Also, I see you mentioned Textile, have you tried it yet?
I’m considering it for the “user layer”, but I’m not sure if it’s mature enough yet for my use case.
My use case being, syncing application data between devices.

#46

Cluster is working nicely (except ipfs-cluster on arm64)…

Didn’t tried textile neither yet, but subpub (or pubsub I never remember) in my private network case can be sufficient
exploring it…

#47

I am using DNSLink to my music library (TXT to ipfs / ipns Object_ID), but it does not work with difuse.sh as ipfs access.

#48

Oh interesting, I didn’t think of supporting DNSLink (not sure if it was even a thing when I built this).
So yeah, for now it only supports CIDs (it uses /api/v0/ls?arg=CID underneath).

I’ll definitely check it out for V2 though, which I’m currently working on.
Thanks for mentioning this! :wink:

#49

So I need to configure my Gateway to IPFS…

If I configure nginx proxy, is it?

    location /ipfs {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host            $host;
            proxy_set_header X-Forwarded-For $remote_addr;
    }

OR

    location /api/ {
            proxy_pass http://127.0.0.1:5001/;
            proxy_set_header Host            $host;
            proxy_set_header X-Forwarded-For $remote_addr;
    }

None of it is discovered as music…
Should I allow COR stuff like that? Or use the host of my IPFS gateway?
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin ‘[“https://diffuse.sh”]’

Will it be possible to host diffuse on IPFS? As a full DApp

#50

@icidasset can you shoot the link for the player? Seems like the http://ongakuryoho.com/ is dead.

#51

@vasa-develop Sure thing, it’s at https://diffuse.sh/about/

#52

hey, what’s the problem? Anything I can help with here?

#53

I think it runs now as an upgrade have been done for arm64…

But in my configuration, small nodes (16GB, NAT) are adding files and bootstrap to big nodes (TB).
This is not really a good showcase for cluster use.

I discovered Textile where my big nodes could be considered as cafe… It adds really nice functionality to create users, groups and sharing policies. Plus real-time communication channel. It replaces ipfs daemon and create its own data, metadata structure.
I will experiment it step by step. First I am going to use pubsub only to allow small nodes to warn big ones that a new file as to be pinned :wink: