You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
3.0 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. # Deploy a Testnet
  2. Now that we've seen how ABCI works, and even played with a few
  3. applications on a single validator node, it's time to deploy a test
  4. network to four validator nodes.
  5. ## Manual Deployments
  6. It's relatively easy to setup a Tendermint cluster manually. The only
  7. requirements for a particular Tendermint node are a private key for the
  8. validator, stored as `priv_validator.json`, a node key, stored as
  9. `node_key.json` and a list of the public keys of all validators, stored
  10. as `genesis.json`. These files should be stored in
  11. `~/.tendermint/config`, or wherever the `$TMHOME` variable might be set
  12. to.
  13. Here are the steps to setting up a testnet manually:
  14. 1) Provision nodes on your cloud provider of choice
  15. 2) Install Tendermint and the application of interest on all nodes
  16. 3) Generate a private key and a node key for each validator using
  17. `tendermint init`
  18. 4) Compile a list of public keys for each validator into a
  19. `genesis.json` file and replace the existing file with it.
  20. 5) Run
  21. `tendermint node --proxy_app=kvstore --p2p.persistent_peers=< peer addresses >`
  22. on each node, where `< peer addresses >` is a comma separated list
  23. of the IP:PORT combination for each node. The default port for
  24. Tendermint is `26656`. Thus, if the IP addresses of your nodes were
  25. `192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4`, the command
  26. would look like:
  27. tendermint node --proxy_app=kvstore --p2p.persistent_peers=96663a3dd0d7b9d17d4c8211b191af259621c693@192.168.0.1:26656, 429fcf25974313b95673f58d77eacdd434402665@192.168.0.2:26656, 0491d373a8e0fcf1023aaf18c51d6a1d0d4f31bd@192.168.0.3:26656, f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@192.168.0.4:26656
  28. After a few seconds, all the nodes should connect to each other and
  29. start making blocks! For more information, see the Tendermint Networks
  30. section of [the guide to using Tendermint](./using-tendermint.md).
  31. But wait! Steps 3 and 4 are quite manual. Instead, use [this
  32. script](https://github.com/tendermint/tendermint/blob/develop/docs/examples/init_testnet.sh),
  33. which does the heavy lifting for you. And it gets better.
  34. Instead of the previously linked script to initialize the files required
  35. for a testnet, we have the `tendermint testnet` command. By default,
  36. running `tendermint testnet` will create all the required files, just
  37. like the script. Of course, you'll still need to manually edit some
  38. fields in the `config.toml`. Alternatively, see the available flags to
  39. auto-populate the `config.toml` with the fields that would otherwise be
  40. passed in via flags when running `tendermint node`. As you might
  41. imagine, this command is useful for manual or automated deployments.
  42. ## Automated Deployments
  43. The easiest and fastest way to get a testnet up in less than 5 minutes.
  44. ### Local
  45. With `docker` and `docker-compose` installed, run the command:
  46. make localnet-start
  47. from the root of the tendermint repository. This will spin up a 4-node
  48. local testnet. Review the target in the Makefile to debug any problems.
  49. ### Cloud
  50. See the [next section](./terraform-and-ansible.html) for details.