Repository navigation
feat(infra): import the IPNS signing key in the aggregator IPFS node - #3621
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved critical Terraform-state secret exposure and moderate issues affect key rotation, IPNS publishing, and existing-node bootstrap.
2 open findings
What changed in this PR
Adds Terraform, CI, Docker, and runbook support for importing an IPNS signing key into the aggregator’s IPFS node.
Changes:
- Adds configurable signing-key variables and updates Kubo to
v0.43.1. - Passes and imports the key during deployments.
- Documents key creation, registration, and rotation.
Unresolved review findings:
- Critical (3 votes): The private key is persisted in Terraform state through resource triggers.
- Moderate (3 votes):
ipns_key_nameis ignored because aggregator publishing support is missing. - Moderate (1 vote): Regex matching can break key rotation for names containing special characters.
- Moderate (1 vote): Existing nodes may not receive the new startup assets.
| File | Summary |
|---|---|
mithril-infra/variables.tf |
Adds IPNS variables and updates the Kubo version. |
mithril-infra/mithril.aggregator.tf |
Passes signing-key material and IPNS configuration. |
mithril-infra/assets/docker/ipfs/container-init.d/configure-node.sh |
Imports or rotates the IPFS signing key. |
mithril-infra/assets/docker/docker-compose-aggregator-ipfs-override.yaml |
Supplies key-related environment variables. |
docs/runbook/README.md |
Registers the IPNS signing-key runbook. |
docs/runbook/ipns-signing-key/README.md |
Documents key creation, registration, and rotation. |
.github/workflows/test-deploy-network.yml |
Passes the IPNS secret for test deployments. |
.github/workflows/release.yml |
Passes the IPNS secret for releases. |
.github/workflows/pre-release.yml |
Passes the IPNS secret for pre-releases. |
.github/workflows/ci.yml |
Passes the IPNS secret in CI. |
.github/workflows/actions/deploy-terraform-infrastructure/action.yml |
Adds and encodes the deployment input. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Test Results 5 files ± 0 226 suites ±0 1h 0m 26s ⏱️ - 1h 1m 40s Results for commit 772f3f1. ± Comparison against base commit 6b29cde. This pull request removes 60 tests.♻️ This comment has been updated with latest results. |
7d50fc4 to
580d20c
Compare
Alenar
left a comment
There was a problem hiding this comment.
LGTM, the fact with the Kubo terminology that there's an "IPNS key name" (the local name of the key pair) and a "IPNS name" (the name of the IPNS record in the IPFS network) is confusing 😅.
…` version * mithril-infra/assets/infra.version from `0.5.28` to `0.5.29`
580d20c to
772f3f1
Compare


Content
This PR includes the infrastructure and CI support for the IPNS signing key used by the aggregator IPFS node to publish the immutable archives directory:
mithril_ipfs_ipns_signing_keyTerraform variable (PEM PKCS#8 format, base64 encoded, optional) and themithril_ipfs_ipns_signing_key_nameTerraform variable (defaults tomithril-snapshot)ipns_key_nameto the aggregatorIPFS_RPC_SERVER_CONFIGwhen a signing key is setmithril_ipfs_ipns_signing_keyinput to the deploy action, base64 encoded in the prepare step like the GCP KMS credentialsIPFS_IPNS_SIGNING_KEYsecret in theci,pre-release,releaseandtest-deploy-networkworkflows (harmless unless IPFS is enabled on the deployment)v0.43.1Pre-submit checklist
Issue(s)
Relates to #3606