Настройка полного узла

В этом руководстве рассказывается, как настроить узел Edgeware. Есть два способа продолжить:

{% подсказка стиль = "информация" %} Чтобы быстро запустить узел из образа Docker: https://hub.docker.com/repository/docker/hicommonwealth/edgeware {% конец%}

Если вы используете частный узел, вам нужно будет выполнить только шаги 0 и 1 этого руководства. В противном случае мы проведем вас через настройку SSL-сертификата на шагах 2 и 3, чтобы любой браузер мог безопасно подключиться к вашему узлу. (Большинству людей, включая валидаторов, достаточно настроить приватный узел.)

0. Инициализация сервера

Предоставьте сервер подходящего размера от надежного поставщика VPS, например:

Мы рекомендуем узел с оперативной памятью не менее 2 ГБ и Ubuntu 18.04 x64. Другие операционные системы потребуют внесения изменений в эти инструкции.

Если вы используете общедоступный узел, настройте DNS с доменного имени, которым вы владеете, чтобы оно указывало на сервер. Цель DNS должна быть типа A, а не типа Redirect. Мы будем использовать testnet1.edgewa.re. (Вам не нужно делать это, если вы настраиваете частный узел.)

SSH на сервер.

1. Установка Edgeware и настройка его как системной службы

Сначала клонируйте репозиторий edgeware-node, установите все зависимости и запустите необходимые сценарии сборки.

apt update
apt install -y gcc libc6-dev
apt install -y cmake pkg-config libssl-dev git clang libclang-dev

# Prefetch SSH publickeys
ssh-keyscan -H github.com >> ~/.ssh/known_hosts

# Install rustup
curl https://sh.rustup.rs -sSf | sh -s -- -y
source /root/.cargo/env
export PATH=/root/.cargo/bin:$PATH

# Get packages
git clone https://github.com/hicommonwealth/edgeware-node.git
cd edgeware-node

# Build packages
./setup.sh

Настройте узел как системную службу. Для этого перейдите в корневой каталог репозитория edgeware-node и выполните следующее, чтобы создать файл конфигурации службы:

{
    echo '[Unit]'
    echo 'Description=Edgeware'
    echo '[Service]'
    echo 'Type=exec'
    echo 'WorkingDirectory='`pwd`
    echo 'ExecStart='`pwd`'/target/release/edgeware --chain=edgeware --ws-external --rpc-cors "*"'
    echo '[Install]'
    echo 'WantedBy=multi-user.target'
} > /etc/systemd/system/edgeware.service

Примечание. Это создаст сервер Edgeware, который принимает входящие подключения от любого пользователя в Интернете. Если вы используете узел в качестве валидатора, вам следует вместо этого удалить флаг ws-external, чтобы Edgeware не принимал внешние подключения.

Дважды проверьте правильность записи конфигурации в /etc/systemd/system/edgeware.service. Если это так, включите службу, чтобы она запускалась при запуске, а затем попробуйте запустить ее сейчас:

systemctl enable edgeware
systemctl start edgeware

Проверить статус услуги:

systemctl status edgeware

Вы должны увидеть узел, подключающийся к сети и синхронизирующий последние блоки. Если вам нужно сохранить последний вывод, вы можете использовать:

journalctl -u edgeware.service -f

2. Настройка SSL-сертификата (только для публичных узлов)

Мы будем использовать Certbot для связи с Let’s Encrypt. Установите зависимости Certbot:

apt -y install software-properties-common
add-apt-repository universe
snap install --classic certbot
apt update

Установите Сертбот:

apt -y install certbot python-certbot-nginx

Он поможет вам получить сертификат от Let's Encrypt:

certbot certonly --standalone

Если у вас уже есть работающий веб-сервер (например, nginx, Apache и т. д.), вам нужно будет остановить его, запустив, например, service nginx stop, чтобы это работало.

Certbot задаст вам несколько вопросов, запустит собственный веб-сервер и поговорит с Let's Encrypt, чтобы выдать сертификат. В конце вы должны увидеть вывод, который выглядит следующим образом:

root:~/edgeware-node# certbot certonly --standalone
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): testnet1.edgewa.re
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for testnet1.edgewa.re
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/testnet1.edgewa.re/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/testnet1.edgewa.re/privkey.pem
   Your cert will expire on 2019-10-08. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"

3. Настройка прокси-сервера Websockets (только для публичных узлов)

Сначала устанавливаем nginx:

apt -y install nginx

Установите предполагаемый публичный адрес сервера, например. testnet1.edgewa.re в качестве переменной среды:

export name=testnet1.edgewa.re

Настройте конфигурацию nginx. Это введет публичный адрес, который вы только что определили.

{
    echo 'user       www-data;  ## Default: nobody'
    echo 'worker_processes  5;  ## Default: 1'
    echo 'error_log  /var/log/nginx/error.log;'
    echo 'pid        /var/run/nginx.pid;'
    echo 'worker_rlimit_nofile 8192;'
    echo ''
    echo 'events {'
    echo '  worker_connections  4096;  ## Default: 1024'
    echo '}'
    echo ''
    echo 'http {'
    echo '    map $http_upgrade $connection_upgrade {'
    echo '      default upgrade;'
    echo "      \'\' close;"
    echo '    }'
    echo '    server {'
    echo '      listen       443 ssl;'
    echo '      server_name  '$name';'
    echo ''
    echo '      ssl_certificate /etc/letsencrypt/live/'$name'/cert.pem;'
    echo '      ssl_certificate_key /etc/letsencrypt/live/'$name'/privkey.pem;'
    echo '      ssl_session_timeout 5m;'
    echo '      ssl_protocols  SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;'
    echo '      ssl_ciphers  HIGH:!aNULL:!MD5;'
    echo '      ssl_prefer_server_ciphers   on;'
    echo ''
    echo '      location / {'
    echo '          proxy_pass http://127.0.0.1:9944 ;'
    echo '          proxy_http_version 1.1;'
    echo '          proxy_set_header Upgrade $http_upgrade;'
    echo '          proxy_set_header Connection $connection_upgrade;'
    echo '      }'
    echo '    }'
    echo '}'
} > /etc/nginx/nginx.conf

Убедитесь, что пути ssl_certificate и ssl_certificate_key соответствуют тому, что Let's Encrypt создал ранее. Убедитесь, что файл конфигурации создан правильно.

cat /etc/nginx/nginx.conf
nginx -t

Убедитесь, что версия OpenSSL Nginx > 1.0.2. Вам придется пересобрать Nginx, если версия OpenSSL ниже. В противном случае современные протоколы TLS, созданные в сертификатах letsencrypt, не будут работать, и Nginx выдаст ошибку.

Если есть ошибка, nginx -t должен сказать вам, где она находится. Обратите внимание, что могут быть незначительные различия в настройке различных систем, например. некоторые ящики могут иметь разных пользователей входа в систему или места для файлов журнала. Вам решать, как примирить эти разногласия.

Запустите сервер:

service nginx restart

Теперь вы можете попробовать подключиться к своему новому узлу из polkadot.js/apps или сделать запрос curl, который имитирует открытие защищенного соединения WebSockets:

curl --include --no-buffer --header "Connection: Upgrade" --header "Upgrade: websocket" --header "Host: $name:80" --header "Origin: http://$name:80" --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" --header "Sec-WebSocket-Version: 13" http://$name:9944/

4. Подключение к вашему узлу

Поздравляю с новым узлом! Если вы настроили общедоступный DNS и SSL-сертификат на шагах 2 и 3, вы сможете подключиться к нему сейчас из polkadot-js/apps :

В противном случае вы сможете использовать edgeware-cli для подключения к нему:

git clone https://github.com/hicommonwealth/edgeware-cli.git
cd edgeware-cli
yarn
bin/edge -r ws://testnet1.edgewa.re:9944 balances freeBalance 5G8jA2TLTQqnofx2jCE1MAtaZNqnJf1ujv7LdZBv2LGznJE2

Как правило, вы должны использовать эти URL-адреса для подключения к вашему узлу:

5. Следующие шаги

Ваш узел автоматически перезапустится при перезагрузке системы, но может не восстановиться после других сбоев. Чтобы справиться с ними, следуйте нашему руководству Настройка мониторинга.

Вы также можете перейти к Проверке на Edgeware.