Terabytes of blocks on object storage, not SSDs.
~6–7TB → ~100GB
local disk per S3 replica
3 regions
Wasabi block replicas
Millions
cluster pins in sync
Private swarm
no public DHT
I built a private IPFS Cluster where most content lives in Wasabi S3-compatible buckets, not on expensive local volumes.
Public IPFS was not a fit. We needed a closed swarm, coordinated pinning, and storage that could grow without buying another 6–7TB disk per node. The answer was hybrid: disk-based nodes for speed and bootstrap, plus S3-backed Kubo nodes that keep metadata locally and blocks in Wasabi.
A disk-only IPFS node holding millions of pins used about 6–7TB locally. Scaling that across peers meant:
Custom Kubo images with the go-ds-s3 plugin, coordinated by IPFS Cluster. S3 nodes stay around ~100GB local plus ~160GB in Wasabi instead of another 6–7TB volume. Cluster metadata still syncs so every node knows the same pinset; blocks are fetched from S3 or peers on demand.
Disk master
Bootstrap peer, fast local reads, full block set on disk
S3 nodes
Blocks in Wasabi, LevelDB metadata and a ~70GB local cache
IPFS Cluster
Shared pinset (CRDT), recover and sync across peers
Wasabi
Multi-region buckets; region and endpoint have to match — S3-compatible still returns InvalidAccessKeyId / PermanentRedirect if they do not
swarm.txt
Private IPFS Cluster
├── Disk node(s) → full local repo (~TB scale)
└── S3 nodes → Wasabi blocks + small local cache
├── LevelDB → CIDs / datastore metadata
└── Wasabi → actual IPFS blocksHave a project in mind?
Let's build something together.