Конфігурація 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 завершена.

--

--