Настройка полной ноды на базе VPS с предустановленной ОС Ubuntu 16/18


  • Reward

    Добавил описание настройки запуска gvite как сервиса по шагам из официального гайда
    https://vite.wiki/tutorial/node/example.html#start-gvite-as-service

    На заметку полный список параметров для сервиса gvite можно посмотреть с помощью параметра --help
    Для текущей версии он выглядит следующим образом:

    /usr/local/vite/gvite --help
    gvite [global options] command [command options] [arguments...]
    
    VERSION:
       v1.2.3-alpha.4
    
    COMMANDS:
       attach   Start an interactive JavaScript environment (connect to node)
       console  Start an interactive JavaScript environment
       license  Display license information
       version  Print version numbers
       help     Shows a list of commands or help for one command
    GLOBAL OPTIONS:
       --config value                     Json configuration file
       --datadir                          use for store all files
       --keystore                         Directory for the keystore (default = inside the datadir)
       --devnet                           Rinkeby network: pre-configured proof-of-authority dev network
       --testnet                          Ropsten network: pre-configured proof-of-work test network
       --mainnet                          Rinkeby network: pre-configured proof-of-authority prod network
       --identity value                   Custom node name
       --networkid value                  Network identifier (integer, 1=MainNet, 2=TestNet, 3~12=DevNet,) (default: 0)
       --maxpeers value                   Maximum number of network peers (network disabled if set to 0) (default: 0)
       --maxpendpeers value               Maximum number of pending connection attempts (defaults used if set to 0) (default: 0)
       --port value                       Network listening port (default: 0)
       --nodekeyhex value                 P2P node key as hex
       --discovery value                  enable p2p discovery or not
       --ipc                              Enable the IPC-RPC server
       --ipcpath                          Filename for IPC socket/pipe within the datadir (explicit paths escape it)
       --rpc                              Enable the HTTP-RPC server
       --rpcaddr value                    HTTP-RPC server listening interface
       --rpcport value                    HTTP-RPC server listening port (default: 0)
       --ws                               Enable the WS-RPC server
       --wsaddr value                     WS-RPC server listening interface
       --wsport value                     WS-RPC server listening port (default: 0)
       --jspath loadScript                JavaScript root path for loadScript (default: ".")
       --exec value                       Execute JavaScript statement
       --preload value                    Comma separated list of JavaScript files to preload into the console
       --miner                            Enable the Miner
       --coinbase value                   Coinbase is an address into which the rewards for the SuperNode produce snapshot-block
       --minerinterval value              Miner Interval(unit: second) (default: 0)
       --loglevel value                   log level (info,eror,warn,dbug)
       --vmtest                           Enable the VM Test
       --vmtestparam                      Enable the VM Test params
       --single                           Enable the NodeServer single
       --fileport value                   File transfer listening port (default: 0)
       --pprof                            Enable a performance analysis tool, you can visit the address[http://localhost:8080/debug/pprof]
       --pprofport port                   pporof visit port, you can visit the address[http://localhost:`port`/debug/pprof] (default: 0)
       --metrics                          Enable metrics collection and reporting
       --metrics.influxdb                 Enable metrics export/push to an external InfluxDB database
       --metrics.influxdb.endpoint value  InfluxDB API endpoint to report metrics to
       --metrics.influxdb.database value  InfluxDB database name to push reported metrics to (default: "metrics")
       --metrics.influxdb.username value  Username to authorize access to the database (default: "test")
       --metrics.influxdb.password value  Password to authorize access to the database (default: "test")
       --metrics.influxdb.host.tag host   InfluxDB host tag attached to all measurements (default: "localhost")
       --help, -h                         show help
       --version, -v                      print the version
    

    Согласно официальному гайду статус синхронизации можно проверить прямо с консоли вашей полной ноды

    Enter gvite command line using script
    Отредактируем файл ~/.bashrc

    mcedit ~/.bashrc
    

    Добавляем строчку и сохраняем изменения:

    alias vite="/opt/gvite/gvite attach ~/.gvite/testdata/gvite.ipc"
    

    Не забываем, что для данного примера я использую путь /opt/gvite/gvite (поменять на свой вариант).
    Запускаем команду, чтобы применились внесенные нами изменения

    source ~/.bashrc
    

    Далее запускаем командную строку gvite

    vite
    

    Теперь в консоли мы можем проверять, к примеру раз в 10 секунд текущую длинну блоков

    Welcome to the Gvite JavaScript console!
    -> 
    # Periodically output current block height
    Execute below command in gvite command line:
    
    setInterval(function(){vite.ledger_getSnapshotChainHeight();}, 10000)
    

    Выход из консоли выполняется командой exit.


  • Reward

    Отличная работа 👍


  • Reward

    Собираем gvite из основной ветки на github

    Предварительно устанавливаем make, make-guile и gcc

    apt-get nstall make
    apt-get install make-guile
    apt-get install gcc
    
    curl -O -L https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz
    sha256sum go1.11.5.linux-amd64.tar.gz
    

    Проверяем хеш, совпадает ли с тем, что на сайте (битый архив)

    tar -xf go1.11.5.linux-amd64.tar.gz
    mv go /usr/local
    

    Добавляем параметры для go

    mcedit ~/.profile
    

    Добавляем строчки в конец файла.

    export GOPATH=$HOME/go
    export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
    

    Применяем изменения

    source ~/.profile
    

    Качаем код

    mkdir $HOME/go
    go get github.com/vitelabs/go-vite
    cd $HOME/go/src/github.com/vitelabs/go-vite/
    

    Компилируем файл.

    make gvite
    

    Наш готовый файл находится по адресу:

    cd ~/go/src/github.com/vitelabs/go-vite/build/cmd/gvite/
    

    Фикс бага со стаком на 7436*** блоке
    Останавливаем сервис и выполняем команду из папки с ранее приготовленным файлом

    ./gvite -config /source_to_config/node_config.json recover -del=7436000
    

  • Reward

    Заметил, что с новой версией может немного меняться конфигурационный файл. Например, добавляются в лишние пробелы, параметры и т.д.

    К примеру было:
    getURL":"" с заменой на getURL":"wss://stats.vite.net"
    И соответствующая команда
    sed -i 's/getURL": ""/getURL":"wss://stats.vite.net"/g' node_config.json

    Стало:
    getURL": "" с заменой на getURL": "wss://stats.vite.net",
    И соответствующая команда
    sed -i 's/getURL": ""/getURL" :"wss://stats.vite.net"/g' node_config.json


  • Reward

    Нужно помнить, что место не резиновое. Например если вы используете ноду с 25Gb жестким диском.
    В помощь пару команд, чтобы почистить наши логи. Иногда они полностью забивают все дисковое пространство из-за частых ошибок - например нода перестала нормально синхронизироваться и вы за ней не уследили.
    Первых две команды вычищают все их из двух папок с логами. Третья команда покажет информацию об использованом дисковом пространстве.

    rm -rfv ~/.gvite/testdata/rpclog/*
    rm -rfv ~/.gvite/testdata/runlog/*
    df -h
    


  • Добрый день.
    Подскажите где можно почитать как настроить полную ноду на Windows 10.
    Так же возможно ли настроить несколько нод на 1 компьютере с Windows 10.
    Для каждой ноды у меня есть отдельный выделенный IP адрес.


  • Reward



  • Не удалось настроить, вроде все делаю по написанному. Обязательно нового юзера создавать, потом с SSH манипуляции делать? Может как-то попроще можно?


  • Reward

    @SWENG Вы использовали последнюю доступную версию go vite ?



  • This post is deleted!


  • Подскажите какой командой cron можно перезапускать ноду через определенное время . Настраивал по официальной инструкции.


  • Reward

    @Константин-Котов можно в крон добавить скрипт с текстом, аналогичным куску из сервиса рестарта (если подняли ноду как самостоятельный сервис).

    #!/bin/bash
    ## Kill original gvite process
    pgrep gvite | xargs kill -s 9
    ## Check result
    ps -ef | grep gvite
    ## Start gvite service
    sudo service vite start
    

    https://crontab.guru/examples.html
    вот отличный ресурс с кучей примеров, можно любой период настроить и посмотреть параметры. Для крона строчка:
    */5 * * * * sript.sh - будет каждые пять минут запускать скрипт
    0 0 * * 0 script.sh - раз в неделю в воскресенье в 00:00



  • @Umcka а если нода не как сервис- а как описано в оф инструкции. То как будет выглядеть команда ? #*/5 * * * * pidof gvite > /dev/null|| /usr/sbin/service vite start


Log in to reply
 

Suggested Topics