Инструкция по развертыванию

Развертывание Relay-ноды

Пошаговое руководство по запуску собственной relay-ноды CONTEXT с помощью Docker Compose

1. Системные требования

Минимальные требования

2. Подготовка сервера

2.1 Установка Docker и Docker Compose

# Ubuntu/Debian
sudo apt update && sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker

# Проверка установки
docker --version
docker compose version

2.2 Настройка фаервола

# UFW (Ubuntu/Debian)
sudo ufw allow 4001/tcp
sudo ufw allow 4001/udp
sudo ufw allow 8080/tcp   # healthcheck (опционально — только для мониторинга)
sudo ufw enable

# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=4001/tcp
sudo firewall-cmd --permanent --add-port=4001/udp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
⚠️ Важно: настройка портов

Порт 4001 (TCP+UDP) должен быть доступен из интернета для P2P-коммуникаций. Если сервер находится за NAT, настройте проброс портов на роутере.

3. Быстрый старт (автоматический скрипт)

Для автоматического развертывания используйте скрипт deploy.sh:

# Скачайте и запустите скрипт
curl -O https://ctx.ceo/deploy.sh
chmod +x deploy.sh
sudo ./deploy.sh

Скрипт автоматически:

4. Ручное развертывание

4.1 Создание структуры каталогов

sudo mkdir -p /opt/ctx-relay/data
cd /opt/ctx-relay

4.2 Копирование файлов

Скопируйте docker-compose.yml и env.example в /opt/ctx-relay/:

# Из репозитория проекта
cp docker-compose.yml /opt/ctx-relay/
cp env.example /opt/ctx-relay/

# Перейдите в рабочий каталог
cd /opt/ctx-relay

4.3 Настройка переменных окружения

# Скопируйте пример конфигурации
cp env.example .env

# Отредактируйте .env файл
nano .env

Основные параметры для настройки:

Обязательные параметры
# Пример минимальной конфигурации .env
VERSION=latest
RELAY_LOG_LEVEL=info
RELAY_EXTERNAL_IP=203.0.113.10
RELAY_EXTERNAL_PORT=4001
RELAY_AUTO_DETECT_IP=false
RELAY_HEALTH_PORT=8080
RELAY_MSG_LIFETIME=72
RELAY_MAX_PAYLOAD=10485760
RELAY_RATE_LIMIT_RPS=100
RELAY_CLEANUP_INTERVAL=1h
RELAY_PRIVATE_MODE=false
CTX_BLOCKCHAIN_ENABLED=false

4.4 Вход в Docker Registry

docker login registry.ctx.ceo -u guest -p guest

4.5 Запуск ноды

# Запуск в фоновом режиме
docker compose up -d

# Просмотр логов
docker compose logs -f

# Проверка статуса
docker compose ps

5. Проверка работоспособности

5.1 Healthcheck

# Локальная проверка
curl http://localhost:8080/health

# Ожидаемый ответ
{"status":"ok"}

5.2 Проверка логов

docker compose logs relay | grep -E "listening|connected|peer"

Успешный запуск должен содержать строки:

INFO  relay listening on /ip4/0.0.0.0/tcp/4001
INFO  relay connected to bootstrap peer 12D3KooW...

6. Управление нодой

1

Просмотр логов

docker compose logs -f --tail=100

2

Перезапуск

docker compose restart

3

Остановка

docker compose down

4

Обновление

docker compose pull && docker compose up -d

5

Просмотр статистики

docker stats ctx-relay

7. Приватный режим

Для активации приватного режима (строгая криптографическая верификация участников) установите в .env:

RELAY_PRIVATE_MODE=true
AUTH_SERVICE_PUBKEY=<ваш_ed25519_публичный_ключ>
PEERSIGN=<подпись_peerid>
⚠️ Внимание

В приватном режиме relay принимает сообщения только от верифицированных клиентов с корректной подписью NETSIGN. Публичные сообщения будут отклонены.

8. Блокчейн-режим

Для участия в блокчейн-экономике CONTEXT установите в .env:

CTX_BLOCKCHAIN_ENABLED=true
CTX_NETWORK=mainnet
CTX_MIN_STAKE=1000
CTX_WALLET_KEYSTORE=/data/keystore.json
CTX_WALLET_PASSWORD=<ваш_пароль_keystore>
# Опционально: явный адрес для получения наград (если отличается от keystore)
CTX_WALLET_ADDRESS=
Требования для блокчейн-режима

8.1 Автоматическое создание кошелька

При первом запуске с CTX_BLOCKCHAIN_ENABLED=true relay автоматически создаёт кошелёк, если keystore или мнемоника не найдены:

  1. Генерируется BIP-39 мнемоника (24 слова)
  2. Создаётся Ed25519 ключевая пара и адрес ctx1... или ctxt...
  3. Сохраняется зашифрованный keystore в /data/keystore.json
⚠️ Сохраните мнемонику!

Мнемоника (24 слова) выводится в лог только при первом запуске. Её необходимо сохранить — она понадобится для восстановления кошелька в desktop-приложении ctx-wallet или на другой ноде.

# Извлечь мнемонику из логов (только при первом запуске!)
docker compose logs relay | grep "mnemonic"

# Пример вывода:
# {"level":"info","msg":"Кошелёк создан (новый)","mnemonic":"abandon abandon ... (24 слова)","address":"ctx1..."}

После извлечения мнемоники её можно импортировать в desktop-приложение:

9. Устранение неполадок

Нода не подключается к сети

Контейнер не запускается

Healthcheck не проходит