Установка Moonbeam Node под управлением операционной системы CentOS7

Антон Машнин
3 min readFeb 20, 2021

Всем привет!

Иногда случается, что некоторые пользователи используют контейнерный тип виртуализации, а не аппаратный, где нет возможности поставить гостевую операционную систему отличную от операционной системы самой nod(ы). Такая виртуализация не может быть использована для установки nod(ы) используя docker контейнера.

Поэтому мною было принято решение создать статью, которая будет описывать настройку Nod(ы) Moonbeam на русском языке, да и ещё не используя стандартную операционную систему Ubuntu, которая описывается каждым, я выбрал сервер под управлением операционной системы CentOS7

Обычно, контейнерная виртуализация не очень корректно разграничивает ресурсы между контейнерами (например LXC виртуализация), т.е все ресурсы системы одновременно доступны всем виртуальным машинам, однако всё равно требуется обозначить, что минимальные ресурсы для вашего контейнера или полноценной виртуальной машины, должны быть не ниже:

Процессор: 8 ядер
ОЗУ: 16 ГиБ
Жесткий диск: 50 ГиБ
Брандмауэр: Разрешаем трафик для следующих портов TCP 30333, 30334

Информация была взята с официального сайта проекта:
https://docs.moonbeam.network/node-operators/networks/full-node/

Стоить отметить, что эти требования являются относительными, так как по словам самих разработчиков проекта программное обеспечение Moonbeam не было ещё до конца оптимизировано, поэтому со временем, системные требования могут быть снижены.

Установка и настройка программного обеспечения.

Для начала давайте установим следующие пакеты, которые понадобятся для правильной настройки и установки Moonbeam nod(ы):

# yum groupinstall "Development Tools" -y
# yum install git curl cmake pkgconfig openssl-devel git gcc clang clang-devel nano -y

Создадим пользователя для того, чтобы не запускать нашу nod(y) от имени “root” пользователя, так как Linux это многопользовательская система и сточки зрения масштабируемости и безопасности, желательно запускать и настраивать различные программы от имени отдельных пользователей:

# adduser moonbeam

После создания аккаунта переходим в окружение пользователя moonbeam:

# su -s /bin/bash moonbeam

Внимание: после создания пользователя, я не смог попасть в его окружение из-за следующей ошибки:

su: failed to execute /bin/bash: Resource temporarily unavailable

Если у Вас будет такая же проблема, то для её решения понадобится увеличить “nproc” и “nofile” лимиты. Для этого открываем файл “limits.conf”:

# nano /etc/security/limits.conf

И добавляем туда следующие значения:

moonbeam soft nproc 10240
moonbeam hard nproc 10240
moonbeam soft nofile 10240
moonbeam hard nofile 10240
# End of file

В моём случае установленных лимитов хватило, если Вам понадобится Вы также можете увеличить текущие лимиты, например до 32768 или 65535

Переходим в домашний каталог пользователя:

$ cd ~

Кстати, чтобы убедиться, что вы находитесь в правильном каталоге, Вы можете выполнить команду:

$ pwd

Если всё верно, клонируем репозиторий при помощи команды “git”:

$ git clone -b tutorial-v3 https://github.com/PureStake/moonbeam

Переходим в каталог “moonbeam”:

$ cd moonbeam

Синхронизируем наш репозиторий до последней версии файлов:

$ git checkout tags/$(git tag | tail -1)

Устанавливаем программный компонент Substrate, где выбираем пункт “1”, что значит “установка по-умолчанию”:

$ curl https://sh.rustup.rs -sSf | sh

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

Задаём переменную среды окружения:

$ source ~/.cargo/env

Запускаем скрипт инициализации для проверки всех необходимых компонентов:

$ ./scripts/init.sh

Устанавливаем нашу Nod(y):

$ cargo build --release

После того как установка была завершена и мы увидели что-то вроде этого:

Выходим из оболочки пользователя “moonbeam” при помощи команды:

$ exit

Добавляем правила Брандмауэра:

# firewall-cmd — zone=public — permanent — add-port=30334/tcp
# firewall-cmd — zone=public — permanent — add-port=30334/tcp

Создаём “systemd” сервис со следующими параметрами:

# nano /etc/systemd/system/moonbeam.service
[Unit]
Description="Moonbase Alpha systemd service"
After=network.target
[Service]
Type=simple
#StartLimitIntervalSec=1
Restart=on-failure
RestartSec=10
User=moonbeam
SyslogIdentifier=moonbeam
SyslogFacility=local7
KillSignal=SIGHUP
ExecStart=/home/moonbeam/moonbeam/target/release/moonbeam \
--parachain-id 1000 \
--no-telemetry \
--port 30333 \
--rpc-port 9933 \
--ws-port 9944 \
--pruning=archive \
--unsafe-rpc-external \
--unsafe-ws-external \
--rpc-methods=Safe \
--rpc-cors all \
--log rpc=info \
--base-path /home/moonbeam/moonbeam/target/release \
--chain alphanet \
--name "CentOS7-Moonbeam-Node" \
-- \
--port 30334 \
--rpc-port 9934 \
--ws-port 9945 \
--pruning=archive \
--name="CentOS7-Moonbeam-Node"
[Install]
WantedBy=multi-user.target

Перечитываем конфигурационные файлы для запуска служб:

# systemctl daemon-reload

Затем запускаем сервис:

# systemctl start moonbeam.service

И проверяем его статус:

# systemctl status moonbeam.service

Состояние должно быть “Active (running)”:

Active: active (running)

Так же рекомендую добавить данный сервис в автозагрузку, чтобы в случае остановки/перезапуска Вашей виртуальной машины или сервера, сервис был запущен автоматически в процессе запуска системы:

# systemctl enable moonbeam.service

На этом установка Nod(ы) Moonbeam завершена

--

--