Great stuff. I built a private Blossom to IPFS gateway (Khatru based, despite the fact that the framework author does not like IPFS). My main problem so far is that when my CDN evicts media, latency increases substantially, even when I am acting directly as an IPFS host and gateway. It also seems to be a bit more bandwidth hungry, which is not a big deal.

But aye, in terms of redistribution and redundancy it is ahead of Blossom, especially as most Blossom implementations out there take liberties with the specs and are not compatible with each other, nor even between clients. I totally gave up on BUD-04 mirroring, as client and Blossom server devs break compatibility faster than I can fix stuff on my side.

Reply to this note

Please Login to reply.

Discussion

Here is fix for you friend,

ipfs config --json Routing.Type dhtclient

bandwidth hungry - you are right, small part to pay for availability

I think I did play with a direct DHT Client as well as a cache-in-between the Blossom server and a local HTTP to IPFS Gateway with some aggressive catching headers (which gave me the best results as when the CDN evicts media, more often than not the bridge hits the cache instead of IPFS), but I'll revisit it for sure. And also play with your stuff, as if IPFS is enough Blossom becomes unnecessary.

last time i tried mirroring it was an rt on nostrudel it took a while, it was three videos, I don't think any other nostr clients have implemented it.

Primal did, but compatibility between Blossom servers is still a bit hit and miss as some fair play is required between clients and both servers involved.

I thought it was only for your uploads, not for reposting someone else's note?

Ah, fair. I haven't seen a more general "mirror button" in any other clients besides NoStrudel, only in Blossom-specific management utilities. One way or another, mirroring your own images or someone else's flows the same way in the backend. At the end of the day, it is a REST endpoint that the client calls, and both servers have to be mindful of what each other expects. One missing header on the origin server can be enough for the destination server to reject the media, so you are basically hostage to each dev interpretation of the specs or even of things beyond the specs. Thankfully, there is no such thing in IPFS, as it is basically torrent-style P2P stuff under the hood.

you are a nostr hostage? ๐Ÿ˜…

Lol. I'm... Increasingly disappointed and less invested in Nostr. So, not a hostage, but lacking incentive (more than financial incentive, if I'm being totally honest Nostr culture and content is just not for me... I don't think I'll be on NIP-01 for much longer, although I'm still interested in Alexandria, GRASP and a few "other things").

Youโ€™re always welcome to contribute ๐Ÿ™‚

Iโ€™ve intentionally kept the code simple and the implementation as close to the raw IPFS spec as possible.

https://github.com/besoeasy/file-drop