Skip to content

Latest commit

 

History

History
176 lines (143 loc) · 17.2 KB

README.ru-RU.md

File metadata and controls

176 lines (143 loc) · 17.2 KB

IDENA Runner Bash Script - fast idena-go network node deployment with possibility of multiple instances installation: 1 user - 1 idena-go node instance
🏃 IDENA RUNNER — Запуск, настройка и обновление ИДЕНА, с возможностью установки шаред и мультинод

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

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

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

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

  • 1 ЦПУ от 2.5 ГГц.
  • 2 ГБ ОЗУ.
  • 20 ГБ SSD/HDD.
  • Порт от 100 Мбит/сек.
  • Ubuntu 18.04 и выше.

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

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

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

  • Нода (которую мы устанавливаем) — создаёт блоки, занимается майнингом. Обновляется автоматически, с помощью данного скрипта, для бесперебойной работы.
  • Клиент — позволяет взаимодействовать с кошельком, оракулом, делать флипы и проходить валидации через графический интерфейс. Самый простой способ доступа к клиенту — через официальный веб-интерфейс, также есть официальное десктопное приложение для Windows, MacOS и Linux.

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

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

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

  • apt-get install -y git
    устанавливаем пакет git
  • git clone https://github.com/ltraveler/idena-runner.git
    клонируем репозиторий
  • cd idena-runner
    переходим в директорию скрипта
  • chmod +x idena_install.sh
    делаем скрипт исполняемым
  • ./idena_install.sh
    запускаем скрипт

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

  • Устанавливать несколько нод на одном сервере — один пользователь = одна нода.
  • Импортировать существующие приватные ключи и нодкеи во время процесса установки.
  • Автоматически обновлять ноду idena-go crontask задачей.
  • Автоматически настраивать порты для Uncomplicated Firewall (UFW) во время установки ноды.
  • Возможность установить idena-go как шаред ноду, с указанием всех наиболее важных параметров.

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

  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. Сервис запускается при запуске системы, на стадии начальной инициализации. Таким образом обеспечивая бесперебойную работу ноды.

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

  • service idena_$username status
    проверка статуса
  • service idena_$username restart
    перезапуск
  • service idena_$username stop
    остановка демона
  • service idena_$username start
    запуск демона

*здесь $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 && 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.

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

  • 0xf041640788910fc89a211cd5bcbf518f4f14d831

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

  • 20 IDNAОтлично, чтобы я делал без твоего скрипта.
dna://send/v1?address=0xf041640788910fc89a211cd5bcbf518f4f14d831&amount=20&comment=%D0%9E%D1%82%D0%BB%D0%B8%D1%87%D0%BD%D0%BE%2C+%D1%87%D1%82%D0%BE%D0%B1%D1%8B+%D1%8F+%D0%B4%D0%B5%D0%BB%D0%B0%D0%BB+%D0%B1%D0%B5%D0%B7+%D1%82%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0&callback_url=https%3A%2F%2Fgithub.com%2Fltraveler%2Fidena-runner
  • 10 IDNAХорошо, скрипт пригодился.
dna://send/v1?address=0xf041640788910fc89a211cd5bcbf518f4f14d831&amount=10&comment=%D0%A5%D0%BE%D1%80%D0%BE%D1%88%D0%BE%2C+%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82+%D0%BF%D1%80%D0%B8%D0%B3%D0%BE%D0%B4%D0%B8%D0%BB%D1%81%D1%8F&callback_url=https%3A%2F%2Fgithub.com%2Fltraveler%2Fidena-runner
  • 0 IDNA - Плохо, сейчас напишу что добавить.

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

  • Если вы ищете стабильный и надёжный сервис shared нод, вы всегда можете написать мне в личку в мессенджере Telegram @ltrvlr
  • Скрипт не проходил проверку на версиях Убунту ниже 20.04

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

  • Email ltraveler@protonmail.com
  • Telegram @ltrvlr

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