# Ноды CARDANO
## Не ставьте пока, чисто для ознакомления, огмиос говно
### Предисловие
Есть дефолтная нода от кардано, но чтобы с ней как либо взаимодействовать надо накатить на нее обвесы
Данный лонгрид-гайд будет обновляться как я буду сам разбираться что и как. Пойдем от легкого к сложному
Все инструкции работают для Ubuntu если не сказано обратное
П.С.
Тут не будет рассматриваться выбор и покупка сервера, надеюсь с этим можно справиться среднестатистическому юзеру
П.С.С.
Не обращайте внимание на пунктуацию и орфографию
1. ## OGMIOS
В этом пункте все предельно легко.
Огмиос ставит нам ноду + автоматом накатывает на нее свое апи и мы радуемся жизни
Плюсы: быстро и легко
Минусы: меньше кастомизации + супер долгий синхрон (на дефолтном сервере у меня синхронит уже больше суток)
Приступим
Как только открыли свою тачку обновим зависимости пакетов
```bash
sudo apt update
```
Далее установим Docker для дальнейшей установки ноды
```bash
sudo apt install docker.io
```
Скачаем образ ноды + апи
```bash
sudo docker pull cardanosolutions/cardano-node-ogmios:latest
```
Запустим докер, должна начаться установка + синхронизация
```bash
sudo docker run -it \
--name cardano-node-ogmios \
-p 1337:1337 \
-v cardano-node-ogmios-db:/db \
cardanosolutions/cardano-node-ogmios:latest
```
В терминале вы увидите что то подобное
Дашборд
http://node_ip:1337

2. ## Дефолт нода + OGMIOS
В этом пункте установим обычную ноду и накатим на нее апи OGMIUS
Преимущество перед первым пунктом как минимум в том что мы можем ускорить синхронизацию дав ноде больше ядер процессора
Делаем все построчно из документации + вчитываемся в инстуркции
https://developers.cardano.org/docs/get-started/installing-cardano-node/

Чтобы выполнить это ^
```bash
sudo apt install nano
sudo nano $HOME/.bashrc
```
После каждого такого изменения надо перезагрузить баш профиль
Я поступаю максимально кринжово и просто переподключаюсь к серверу, уверен есть нормальный вариант
Обратите внимание на это

У меня была проблема, что я не могу выполнить вот эту команду
`cabal build cardano-node cardano-cli`
Если почитать ошибку то там сразу дается решение
Вроде оно выглядит как `cabal update`, но перепроверьте, мб у вас такой ошибки вообще не будет
После устанвоки переходим сюда
https://developers.cardano.org/docs/get-started/running-cardano/
Вам нужно скачать некоторые джейсоны, а именно(все делаю в домашней директории):
```bash
curl -O -J https://book.world.dev.cardano.org/environments/mainnet/config.json
curl -O -J https://book.world.dev.cardano.org/environments/mainnet/topology.json
```
Далее делаем папку по базу данных
```bash
mkdir db
```
В этой папке создаем node.socket
```bash
touch db/node.socket
```
Далее пойдет долгий путь синхронизации
```bash
cardano-node run --topology $HOME/topology.json --database-path $HOME/db --socket-path $HOME/db/node.socket --host-addr 127.0.0.1 --port 3333 --config $HOME/config.json +RTS -N<int> -RTS
```
Вместо <int> пишем число ядер которое пойдет на синхрон ноды (мин 2 макс кол-во ядер процессора)
Все синхрон пошел, запускаем НОВЫЙ терминал не закрывая старый и прописываем в башрц
`export CARDANO_NODE_SOCKET_PATH="$HOME/db/node.socket"`
Смотрим как это сделать выше когда устанавливали ноду
Переподключаемся к серверу и наблюдаем как нода будет синхрониться
`cardano-cli query tip --mainnet`
Как только ваша нода прошла синхрон можем в консоль писать вот это
```bash
docker run --rm --name ogmios-custom -p 1337:1337 -v $HOME:/ipc cardanosolutions/ogmios:latest --node-socket /ipc/db/node.socket --node-config /ipc/config.json --host 0.0.0.0
```
Все дашборд есть, нода работает, вы супер
Даш на `http://node_ip:1337`
В бота ставить `ws://node_ip:1337`
3. Мониторинг для нагрузки на сервер
Вот ориг гайд https://www.dmosk.ru/miniinstruktions.php?mini=prometheus-stack-docker
Создаем каталоги, где будем создавать наши файлы
```bash
mkdir -p /opt/prometheus_stack/{prometheus,grafana,alertmanager,blackbox}
```
Создаем файл
```bash
touch /opt/prometheus_stack/docker-compose.yml
```
Переходим в каталог prometheus_stack
```bash
cd /opt/prometheus_stack
```
Вписываем в файл
```bash
nano docker-compose.yml
```
```
version: '3.9'
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus:/etc/prometheus/
container_name: prometheus
hostname: prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
ports:
- 9090:9090
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- default
node-exporter:
image: prom/node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
container_name: exporter
hostname: exporter
command:
- --path.procfs=/host/proc
- --path.sysfs=/host/sys
- --collector.filesystem.ignored-mount-points
- ^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)
ports:
- 9100:9100
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- default
grafana:
image: grafana/grafana
user: root
depends_on:
- prometheus
ports:
- 3000:3000
volumes:
- ./grafana:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
container_name: grafana
hostname: grafana
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- default
networks:
default:
ipam:
driver: default
config:
- subnet: 172.28.0.0/16
```
```bash
nano prometheus/prometheus.yml
```
```
scrape_configs:
- job_name: node
scrape_interval: 5s
static_configs:
- targets: ['node-exporter:9100']
```
Запускаем контейнеры
```bash
docker-compose up -d
```



#### По всем вопросам стучитесь в дм, как буду свободен буду отвечать в порядке очереди, но постарайтесь сами разобраться пж
##### MADE BY A_Lazar_A#3052