Пошаговое руководство по запуску собственной relay-ноды CONTEXT с помощью 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
# 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, настройте проброс портов на роутере.
Для автоматического развертывания используйте скрипт deploy.sh:
# Скачайте и запустите скрипт
curl -O https://ctx.ceo/deploy.sh
chmod +x deploy.sh
sudo ./deploy.sh
Скрипт автоматически:
/opt/ctx-relay/docker-compose.yml и env.example.env файлsudo mkdir -p /opt/ctx-relay/data
cd /opt/ctx-relay
Скопируйте 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
# Скопируйте пример конфигурации
cp env.example .env
# Отредактируйте .env файл
nano .env
Основные параметры для настройки:
RELAY_EXTERNAL_IP — внешний IP-адрес вашего сервера (или оставьте пустым + включите
RELAY_AUTO_DETECT_IP=true)
RELAY_EXTERNAL_PORT — внешний порт (по умолчанию 4001)RELAY_BOOTSTRAP_PEERS — адреса bootstrap-пиров для подключения к сети# Пример минимальной конфигурации .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
docker login registry.ctx.ceo -u guest -p guest
# Запуск в фоновом режиме
docker compose up -d
# Просмотр логов
docker compose logs -f
# Проверка статуса
docker compose ps
# Локальная проверка
curl http://localhost:8080/health
# Ожидаемый ответ
{"status":"ok"}
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...
docker compose logs -f --tail=100
docker compose restart
docker compose down
docker compose pull && docker compose up -d
docker stats ctx-relay
Для активации приватного режима (строгая криптографическая верификация участников) установите в
.env:
RELAY_PRIVATE_MODE=true
AUTH_SERVICE_PUBKEY=<ваш_ed25519_публичный_ключ>
PEERSIGN=<подпись_peerid>
В приватном режиме relay принимает сообщения только от верифицированных клиентов с корректной подписью NETSIGN. Публичные сообщения будут отклонены.
Для участия в блокчейн-экономике 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=
CTX_WALLET_ADDRESS (опционально) — явный адрес для начисления наград за онлайн
и валидаторских вознаграждений, а также для проверки баланса валидатора. Если не задан, используется
адрес из keystoreПри первом запуске с CTX_BLOCKCHAIN_ENABLED=true relay автоматически создаёт
кошелёк, если keystore или мнемоника не найдены:
ctx1... или ctxt.../data/keystore.jsonМнемоника (24 слова) выводится в лог только при первом запуске. Её необходимо сохранить
— она понадобится для восстановления кошелька в desktop-приложении ctx-wallet или на другой
ноде.
# Извлечь мнемонику из логов (только при первом запуске!)
docker compose logs relay | grep "mnemonic"
# Пример вывода:
# {"level":"info","msg":"Кошелёк создан (новый)","mnemonic":"abandon abandon ... (24 слова)","address":"ctx1..."}
После извлечения мнемоники её можно импортировать в desktop-приложение:
ctx-wallet из релизов
CTX_WALLET_PASSWORD)nc -zv <ваш_ip> 4001RELAY_EXTERNAL_IP — должен быть публичным IPdocker compose logs relay/opt/ctx-relay/data существует и доступен для записиidentity.keyRELAY_HEALTH_PORT в .env