# FrostFS Admin Tool ## Overview Admin tool provides an easier way to deploy and maintain private installation of FrostFS. Private installation provides a set of N3 consensus nodes, FrostFS Alphabet, and Storage nodes. Admin tool generates consensus keys, initializes the sidechain, and provides functions to update the network and register new Storage nodes. ## Build To build binary locally, use `make bin/frostfs-adm` command. For clean build inside a docker container, use `make docker/bin/frostfs-adm`. Build docker image with `make image-adm`. At FrostFS private install deployment, frostfs-adm requires compiled FrostFS contracts. Find them in the latest release of [frostfs-contract repository](https://git.frostfs.info/TrueCloudLab/frostfs-contract/releases). ## Commands ### Config Config section provides `init` command that creates a configuration file for private installation deployment and updates. Config file is optional, all parameters can be passed by arguments or read from standard input (wallet passwords). Config example: ```yaml rpc-endpoint: https://address:port # sidechain RPC node endpoint alphabet-wallets: /path # path to consensus node / alphabet wallets storage network: max_object_size: 67108864 # max size of a single FrostFS object, bytes epoch_duration: 240 # duration of a FrostFS epoch in blocks, consider block generation frequency in the sidechain fee: candidate: 0 # inner ring candidate registration fee, for private installation consider 0 container: 0 # container creation fee, for private installation consider 0 container_alias: 0 # container nice-name registration fee, for private installation consider 0 withdraw: 0 # withdraw fee, for private installation consider 0 credentials: # passwords for consensus node / alphabet wallets az: password1 buky: password2 vedi: password3 glagoli: password4 dobro: password5 yest: password6 zhivete: password7 ``` ### Morph #### Network deployment - `generate-alphabet` generates a set of wallets for consensus and Alphabet nodes. - `init` initializes the sidechain by deploying smart contracts and setting provided FrostFS network configuration. - `generate-storage-wallet` generates a wallet for the Storage node that is ready for deployment. It also transfers a bit of sidechain GAS, so this wallet can be used for FrostFS bootstrap. #### Network maintenance - `set-config` add/update configuration values in the Netmap contract. - `force-new-epoch` increments FrostFS epoch number and executes new epoch handlers in FrostFS nodes. - `refill-gas` transfers sidechain GAS to the specified wallet. - `update-contracts` updates contracts to a new version. #### Container migration If a network has to be redeployed, these commands will migrate all container meta info. These commands **do not migrate actual objects**. - `dump-containers` saves all containers and metadata registered in the container contract to a file. - `restore-containers` restores previously saved containers by their repeated registration in the container contract. - `list-containers` output all containers ids. #### Network info - `dump-config` prints FrostFS network configuration. - `dump-hashes` prints FrostFS contract addresses stored in NNS. ## Private network deployment Read step-by-step guide of private storage deployment [in docs](./docs/deploy.md).