---
# System prepended metadata

title: Setting up a Genesis Validator for OmniFlix Testnet (flixnet-1)

---

# Setting up a Genesis Validator for OmniFlix Testnet (flixnet-1)

Hardware
---
#### Supported
- **Operating System (OS):** Ubuntu 20.04 (minimal)
- **CPU:** 1 core
- **RAM:** 2GB
- **Storage:** 25GB SSD

#### Recommended

- **Operating System (OS):** Ubuntu 20.04 (minimal)
- **CPU:** 2 core
- **RAM:** 4GB
- **Storage:** 50GB SSD

# A) Setup

## 1) Install Golang (go)

1.1) Remove any existing installation of `go`

```
sudo rm -rf /usr/local/go
```

1.2) Install latest/required Go version (installing `go1.16.5`)

```
curl https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf -
```

1.3) Update env variables to include `go`

```
cat <<'EOF' >>$HOME/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF

source $HOME/.profile
```

1.4) Check the version of go installed

```
go version
```

### 2) Install required software packages

```
sudo apt-get install git curl build-essential make jq -y
```

### 3) Install `omniflixhub`

```
git clone https://github.com/Omniflix/omniflixhub.git
cd omniflixhub
git checkout v0.1.0
make install
```

### 4) Verify your installation
```
omniflixhubd version --long
```

On running the above command, you should see a similar response like this. Make sure that the *version* and *commit hash* are accurate

```
name: OmniFlixHub
server_name: omniflixhubd
version: 0.1.0
commit: 95e2aebaf02406bdcc78f9268380528bd1a25617
```

### 5) Initialize Node

```
omniflixhubd init <your-node-moniker> --chain-id flixnet-1 
```
On running the above command, node will be initialized with default configuration. (config files will be saved in node's default home directory (~/.omniflixhub/config)

NOTE: Backup node and validator keys . You will need to use these keys at a later point in time.

### 6) Create Account keys 

```
omniflixhubd keys add <key-name>
```

NOTE: Save `mnemonic` and related account details (public key). You will need to use the need mnemonic/private key to recover accounts at a later point in time.

### 7) Add Genesis Account

```
omniflixhubd add-genesis-account <key-name> 50000000uflix
```

### 8) Create Your `gentx`

```
omniflixhubd gentx <key-name> 50000000uflix \
  --pubkey=$(omniflixhubd tendermint show-validator) \
  --chain-id="flixnet-1" \
  --moniker=<validator-moniker> \
  --website="https://yourweb.site" \
  --details="description of your validator" \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation="1" \
  --identity="<your-keybase-identity>" 
```    

Note:

- `<key-name>` and `chain-id` are required. other flags are optional
- Don't change amount value while creating your gentx 
- Genesis transaction file will be saved in `~/.omniflixhub/config/gentx` folder

### 9) Submit Your GenTx

Submit your gentx file to this [OmniFlix/testnets](https://github.com/OmniFlix/testnets) repository in the format of 
`<validator-moniker>-gentx.json`

NOTE: (Do NOT use space in the file name) 

To submit gentx, follow the below process:
 
   - Fork the [Omniflix/testnets](https://github.com/Omniflix/testnets) repository
   - Upload your gentx file in `flixnet-1/gentxs` folder
   - Submit Pull Request to [OmniFlix/testnets](https://github.com/OmniFlix/testnets) with name `ADD <your-moniker> gentx`

---

**Execute below instructions only after publishing of final genesis file**

genesis file will be published to [Omniflix/testnets/flixnet-1](https://github.com/Omniflix/testnets)




# B) Starting the validator

### 1) Download Final Genesis
download genesis file from [Omniflix/testnets](https://github.com/Omniflix/testnets) repository

TBU

### 2) Peers & Seeds

TBU

### 3) Start the Node

### 3.1) Start node with screen session
3.1.1) Update no of open files limit
  ```
   ulimit -Sn 65535
   ulimit -Hn 65535

   # verify the values above are updated correctly
   ulimit -n
  ```

3.1.2) Install screen if not installed
  ```
   sudo apt-get install screen -y
  ```
3.1.3) Start new screen with a name
   ```
   screen -Rd omniflix
   ```
3.1.4) Start omniflixhub
   ```
   omniflixhubd unsafe-reset-all 
   omniflixhubd start 
   ```
3.1.5) use CTRL+A+D to detach from screen
   
(OR)

### 3.2) Start node as `systemctl` service

3.2.1) Create the service file

```
sudo tee /etc/systemd/system/omniflixhubd.service > /dev/null <<EOF
[Unit]
Description=OmniFlixHub Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which omniflixhubd) start
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

- Load service and start
```
sudo systemctl daemon-reload
sudo systemctl enable omniflixhubd
sudo systemctl start omniflixhubd
```

- Check status of service
```
sudo systemctl status omniflixhubd`
```

You can use `journalctl` to:

- check logs
`journalctl -u omniflixhubd` 

- most recent logs
`journalctl -xeu omniflixhubd`

- logs from previous day
`journalctl --since "1 day ago" -u omniflixhubd`  
  