Idena Runner — быстрый старт вашего нод сервера 🏃

Idena Runner — баш скрипт, для установки сервера ноды идена

Скрипт (bash) для быстрой установки ноды Idena (idena-go) с автоматическими обновлениями для ОС Ubuntu 20.04 и выше. С его помощью вы можете установить на сервер одну и больше нод.

Открыть проект на GitHub ltraveler/idena-runner-man

Запуск, настройка и обновление ИДЕНА, с возможностью мультинод

Установщик Идена в виде bash скрипта. Позволяет устанавить множество нод Idena-Go на ваш сервер в виде простого и понятного мастера с дружественным интерфейсом.

последняя версия скрипта idena runner Минимальная версия Ubuntu Последний релиз idena-go license

📈 Требования к серверу

Рекомендации от команды (на ОДНУ ноду):

На период валидации, во избежание перегрузки сервера, на случай оверсейла VPS, можно добавить 1-2 CPU.

❔ Что устанавливается

Проект Idena состоит из нескольких приложений:

Внимание: для работы веб интерфейса, вам поребуется API ключ (англ. Shared Node API KEY).
Приобрести API ключ можно у меня (первая валидация бесплатная), либо в маркет плейсе, при переходе в настройки вашего аккаунта, после авторизации.

🚀  Запуск idena_install.sh (запускать от пользователя с привилегиями root)

Пожалуйста убедитесь, что у вас установлена ОС Ubuntu 18.04 и выше. Для установки ноды идена-гоу, используя данный скрипт, вам нужно выполнить 4 простых шага:

✅  Возможности скрипта

🙋  Что делает скрипт?

  1. Проверяет существует ли сервис idena.service.
  2. Создаёт нового пользователя и пароль для запуска демона ноды идена от его имени.
  3. Обновляет необходимые пакеты и устанавливает всё необходимое для стабильной работы ноды.
  4. Скачивает последнюю версию клиента ноды Idena или той версии, которая была введена вручную в процессе установки. Если пользователь ничего не вводит, скачивает самую последнюю версию. История релизов сервера ноды idena-go.
  5. Для продвинутых пользователей — скрипт использует предопределённый разработчиками конфигурационный файл config.json. Файл можно редактировать во время процесса установки.
  6. Устанавливает и запускает ноду Idena-go на базе конфигурационного файла config.json из репозитория.
  7. Заменяет во время установки private key и nodekey на ваш собственный, если он у вас есть.
  8. Создает задание cron для регулярной проверки обновлений для ноды. По умолчанию проверка происходит раз в день. Вы можете установить любую периодичность с помощью языка cron.
  9. Создает и запускает демон Idena.
  10. Устанавливает и настраивает фаервол для добавления в него всех необходимых портов на основе выставленных номеров портов SSH и IPFS из конфигурационного файла.

🏛️  В случае если вы устанавливаете шаред ноду:

  1. Скрипт добавляет --profile=shared в качестве аргумента для запуска сервиса шаред ноды;
  2. Вы можете указать наиболее критичные параметры: BlockPinThreshold, FlipPinThreshold, AllFlipsLoadingTime
    • Значения по умолчанию:
      • BlockPinThreshold = 0.3
      • FlipPinThreshold = 1
      • AllFlipsLoadingTime = 7200000000000

⚙️  Коротко об управлении демоном Idena

Скрипт создаёт демон-сервис который называется idena_$username. Сервис запускается при запуске системы, на стадии начальной инициализации. Таким образом обеспечивая бесперебойную работу ноды.

Вы можете его котролировать с помощью следующих команд:

*здесь $username это имя пользователя, от которого запускается демон

💻  Флаги и их аргументы для запуска скрипта из командной строки

Начиная с версии 0.3.0 скрипт может быть запущен в полностью автоматическом (тихом) режиме. В котором все или часть ответов на вопросы мастера установки, могут быть переданы через командную строку.
Доступные опции:
-u или --username - username
-p или --password - password в случае использования -u без -p имя пользователя и пароль будут одинаковыми
-s или --shared - установка клиента idena-go в качестве шаред ноды
-v или --version - версия клиента idena-go или аргумент latest для скачивания последней доступной версии
-b или --blockpinthreshold - Block Pin Threshold если не указано, при указании -f и/или l будет взято значение по умолчанию [0.3]
-f или --flippinthreshold - Flip Pin Threshold если не указано, при указании -b и/или l будет взято значение по умолчанию [1]
-l или --allflipsloadingtime - All Flips Loading Time если не указано, при указании -b и/или f будет взято значение по умолчанию [7200000000000]
-r или --rpcport - RPC Port известный также как HTTP Port
-i или --ipfsport - IPFS Port
-k или --privatekey - Приватный ключ Идены для импорта известный также как nodekey /datadir/keystore/nodekey
-a или --apikey - Идена API ключ ноды для импорта /datadir/api.key
-d или --updatefreq - Частота обновления в формате CRON expression

За исключением флага -s или --shared, все остальные флаги требуют обязательного указания аргумента внутри ‘’ (знак апострофа)

Например, для установки ноды в полностью автоматическом режиме:
./idena_install.sh -u ratel -p ratel -s -v 'latest' -b '0.3' -f '1' -l '7200000000000' -r '9189' -i '41283' -k '6e17f7490f7922f3224d41769ce5ed2a01030de69d77163a291a77e8280aad3' -a '33e32cd86ecfb3179e50208428541a1e' -d '0 0 * * *'

⏳  Idena-runner процесс обновления скрипта (требуются привилегии root)

  1. Сделайте бэкап приватного ключа (/home/idena_instance_username/idena-go/datadir/keystore/nodekey)
  2. Сделайте бэкап node api.key (/home/idena_instance_username/idena-go/datadir/api.key)
  3. Запустите самую последнюю версию скрипта Idena Runner и введите имя пользователя от имени которого вы будете ставить сервис idena-go. Имя должно быть тем же, от которого была изначально установлена инстанция idena-runner.
    Внимание: все файлы внутри папки idena-go, обновляемой инстанции, будут полностью уничтожены.
  4. service idena_$username stop
    Остановка обновлённой инстанции скрипта.
  5. Восстановите файлы приватного ключа nodekey и API ключа ноды api.key из бэкапа, сделанного на шаге №1.
  6. service idena_$username start
    Запуск обновлённой инстанции скрипта.

🗑️  Удаление установленной инстанции Idena-go (требуется запуск от пользователя root)

  1. service idena_username stop
    остановка демона idena от имени пользователя, инстанцию idena-go которого мы собираемся удалить
  2. pkill -u username
    убиваем все активные процессы, которые принадлежат данному пользователю
  3. deluser --remove-home username
    удаление относящихся к этому пользователю файлов и папок
  4. rm /etc/cron.d/idena_update_username
    удаляем cron задачу, которая была создана для своевременного обновления ноды idena-go
  5. rm /etc/systemd/system/idena_username.service
    удаляем демона idena привязанного к этому пользователю
  6. systemctl disable idena_username
    отключаем демона idena привязанного к этому пользователю
  7. systemctl daemon-reload and systemctl reset-failed
    обновление изменений в systemctl которые мы сделали на предыдущем шаге
  8. ufw show added | grep "IDENA Instance for user $username" | awk '{ gsub("ufw","ufw delete",$0); system($0)}'
    не забудьте изменить $username на имя удалённого пользователя от которого запускалась инстанция идены
  9. sudo visudo
    вам нужно найти и удалить строку относящуюся к удаляемому пользователю в конце редактируемого файла
  10. nano /etc/ssh/sshd_config
    вам нуно удалить имя пользователя из группы DenyUsers;
  11. sudo sshd -t
    для проверки корректности произведённых вами изменений в файле sshd_config;
  12. sudo service sshd restart
    перезапускаем сервис sshd.

🤝  Кошелёк для отправки донейшенов

🚦  Оцените полезность скрипта

ℹ️  Другая информация

🗣️  Контактная информация

За более подробной информацией о клиенте idena-go вы можете обратится к официальному репозиторию idena-go github.