Skip to content

Deployment checklist

Ava Howell edited this page Apr 19, 2022 · 13 revisions

Deployment steps only for a new node

  • Update hardcoded testnet URL in code
  • Create droplet & associated floating IP
  • Add droplet to database trusted sources in DO
  • Add team member SSH keys to droplet
  • Create A record in Namecheap for testnet DNS
  • Create database cluster in DO
  • Configure Caddy (./config/Caddyfile in repo will need the correct domain name set)
  • git clone https://github.com/penumbra-zone/penumbra.git
  • sudo apt-get install python3 docker-compose build-essential pkg-config libssl-dev clang libclang-dev
  • Install the DO metrics clients (for setting up alerts for e.g. disk utilization)
  • curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • source $HOME/.cargo/env
  • cargo install sqlx-cli
  • Configure Grafana (currently the penumbra_grafana_configs volume needs OAuth creds for GitHub set in grafana.ini)

Deployment steps for the existing node

  • Update discord-addresses file using the Galileo bot (cargo run --release history --channel <channel>)
  • Create a new testnet/<moon>/allocations.csv file describing the initial genesis allocations for this testnet (make sure all current team members have some assets!)
  • Update the README to mention the git tag
  • Create new git tag e.g. 006-orthosie, push to shared remote
  • cd penumbra and check out new git tag on DO droplet
  • Create database and credential in DO cluster
  • Create database config file on droplet (mkdir -p /root/secretz/ && nano /root/secretz/db_connection_string then paste the connection string generated by DO for user penumbra and the database for this testnet)
  • Install any new apt dependencies
  • Archive the old configs: cp -r ~/scratch ~/scratch-MOON
  • Generate new configs: cargo run --release --bin pd -- generate-testnet --output-dir ~/scratch/testnet_build
  • Fix permissions or tendermint will immediately crash: chmod -R 777 ~/scratch/testnet_build
  • Paste validator private key into ~/scratch/testnet_build/node0/tendermint/config/priv_validator_key.json (stored in 1Password)
  • Start the prod docker-compose: docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
  • Make an announcement 🎉
Clone this wiki locally