Skip to content

Deployment checklist

redshiftzero edited this page May 2, 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
  • 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 User Guide to mention the git tag
  • Create new git tag e.g. 006-orthosie, push to shared remote: git tag -a <tag_name> - must be annotated tag for Vergen build
  • cd penumbra and check out new git tag on DO droplet
  • Install any new apt dependencies
  • Archive the old configs: mv ~/.penumbra/testnet_data ~/.penumbra-MOON
  • Generate new configs: cargo run --release --bin pd -- generate-testnet --preserve-chain-id
  • Fix permissions or tendermint will immediately crash: chmod -R 777 ~/.penumbra/testnet_data
  • Start the prod docker-compose: docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
  • Make an announcement 🎉
  • Make GH release object
  • Bounce galileo: git checkout latest tag, stop, do pcli wallet reset, restart
Clone this wiki locally