Skip to content

Instantly share code, notes, and snippets.

@KEINOS
Created October 26, 2022 14:07
Show Gist options
  • Select an option

  • Save KEINOS/03ddaead77e25079df0ff48c91845f74 to your computer and use it in GitHub Desktop.

Select an option

Save KEINOS/03ddaead77e25079df0ff48c91845f74 to your computer and use it in GitHub Desktop.
[IPFS] How to create a cluster secret.

How to create/generate a cluster secret of IPFS cluster

The cluster secret must be exactly 64 characters and contain only hexadecimal characters ([0-9a-f]). (from "cluster_config.go" | ipfs-cluster @ GitHub)

So, we just need to generate a 64 character in hex.

$ od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n'
902e6adde605ce06ad8881a5b9f6bc022e112ad739f6b8b2f76618791b878790
export CLUSTER_SECRET=$(od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n')
echo $CLUSTER_SECRET

As a reference, in the source code, it uses cryptographically secure random numbers.

// Default fills in all the Config fields with
// default working values. This means, it will
// generate a Secret.
func (cfg *Config) Default() error {
	cfg.setDefaults()

	clusterSecret := make([]byte, 32)
	n, err := rand.Read(clusterSecret)
	if err != nil {
		return err
	}
	if n != 32 {
		return errors.New("did not generate 32-byte secret")
	}

	cfg.Secret = clusterSecret
	return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment