Repository navigation
Rebuild the one-click installer once the images and CLI are public (pre-beta) #397
Copy link
Copy link
Open
Labels
blockedCannot proceed until a named dependency resolves: an EU act, an upstream release, or a decisionCannot proceed until a named dependency resolves: an EU act, an upstream release, or a decisionenhancementNew feature or requestNew feature or requesturgency/backlogOwed, unscheduledOwed, unscheduled
Description
Target: pre-beta, before 1.0. Blocked until the things an installer installs are published.
The old scripts/install.sh is being removed rather than repaired, because a repaired script would still have nothing to install. This issue is the installer that replaces it, written against real, pinned artefacts once they exist.
Blocked on — three distribution decisions
- Public container images.
ghcr.io/odal-node/dpp-nodeand…/dpp-resolverare private today: an anonymousdocker manifest inspectis refused.release.ymlpushesX.Y.Z,X.Yandlatest. - A published
odalbinary. No GitHub Release exists for any tag, anddpp-cliis not on crates.io. The only way to get the CLI iscargo build -p dpp-cli --releasefrom a checkout. - A hosted, pinned script and the files it needs.
https://odal-node.io/install.shand/docker-compose.ymlboth return 404. The static facade is the wrong host for anything versioned; a tag-pinned source, such as a release asset, is not.
Until then, the maintained path is docs/guides/OPERATOR-SETUP.md: clone, build odal, odal init, odal up.
Requirements — every one is a defect the old script shipped
- Never
cargo installa crate name nobody owns. The old script rancargo install odal-cli, a name that did not exist on crates.io: whoever registered it would have run code on every machine following the installer. Fetch a published binary and verify it, or reserve the name first. - Verify what is downloaded — a checksum or signature for the binary and the compose bundle, pinned to the release.
curl -sSLwithout--failsaved a 404 page asdocker-compose.yml. - Install the layout the compose file expects. It reads
env_file: ../.envand bind-mounts../ops/bootstrap/*relative to itself, so it must land at<root>/docker/docker-compose.ymlbeside<root>/ops/bootstrap/. Docker creates an empty directory for a missing mount source, and Postgres role provisioning then silently never runs. Reuseodal init's scaffold (cli/src/core/infra.rs::scaffold_install) rather than a second copy of the layout. - Write the
.envthe stack requires, generated from.env.example's required set:DATABASE_POSTGRES_PASS,DATABASE_APP_PASS,KEY_STORE_PASSPHRASE,DID_WEB_BASE_URL,RESOLVER_BASE_URL,ADMIN_USERNAME,ADMIN_PASSWORD. UseNODE_PORT, the name compose maps, and no JWT variables — the engine authenticates withodal_sk_*keys and Basic local admin only. RESOLVER_BASE_URLmust be the operator's public resolver origin, asked for, never defaulted. It is signed into every carrier and cannot be changed afterwards. See RESOLVER_BASE_URL defaults to a host that does not resolve, and the value is signed #382 / fix(node,resolver)!: require RESOLVER_BASE_URL #394.- Never print a credential the node did not issue. The old script printed a locally generated
odal_sk_…as "API Key"; it was never registered and authenticated nothing. Mint the first key withodal bootstrap. - Pin a version. No
latestfor images or binaries in an installer. - No
sudoinsidecurl | bashwithout saying so up front.
Done when
On a clean machine with only Docker, the documented one-liner produces a node that boots, odal bootstrap mints a working key, a demo passport publishes, and scanning its carrier reaches the resolver. Verified by running it, not by reading it.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
blockedCannot proceed until a named dependency resolves: an EU act, an upstream release, or a decisionCannot proceed until a named dependency resolves: an EU act, an upstream release, or a decisionenhancementNew feature or requestNew feature or requesturgency/backlogOwed, unscheduledOwed, unscheduled
Activity