Music player with IPFS backend

ipfs-cluster
go-ipfs
#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: