Instalación de un nodo regular en la red ISBE
Este documento describe el procedimiento estándar para desplegar un nodo regular Hyperledger Besu dentro de la red ISBE (entornos dev, pre o pro).
Los nodos regulares permiten a un caso de uso conectarse a la red, desplegar contratos y enviar transacciones.
El proceso consta de tres fases:
- Preparar la máquina y dependencias.
- Instalar y configurar el nodo Besu.
- Solicitar el permisionado para unir el nodo al P2P de ISBE.
1. Requisitos previos
Antes de iniciar la instalación, el participante debe disponer de:
Hardware recomendado
- 2 vCPU
- 4 GB RAM
- 40 GB de disco SSD (mínimo; 80+ GB recomendado para entornos intensivos)
Sistema operativo
- Linux 64-bit (Ubuntu 20.04+ o equivalente)
Dependencias
- Docker ≥ 20.10
- Docker Compose ≥ 2.x
- Acceso root o permisos sudo
Red y puertos
Los nodos Besu requieren los siguientes puertos:
| Puerto | Uso |
|---|---|
| 30303/tcp | P2P (entrada/salida) |
| 30303/udp | Discovery (opcional según config) |
| 8545/tcp | RPC (si se expone) |
| 8546/tcp | WebSocket (si se expone) |
IMPORTANTE:
Para un nodo regular que se una al P2P de ISBE, el puerto 30303/tcp debe estar accesible desde Internet.
2. Preparar la máquina
Actualizar paquetes:
sudo apt update && sudo apt upgrade -y
Instalar Docker:
curl -fsSL https://get.docker.com | sudo bash
Comprobar la instalación:
docker --version
docker compose version
Crear un usuario dedicado (opcional pero recomendado):
sudo useradd -m -s /bin/bash besu
sudo usermod -aG docker besu
3. Obtener el repositorio de despliegue
Clonar el repositorio oficial de despliegue de nodo (el que indique ISBE):
git clone https://github.com/<repositorio-de-infraestructuras-isbe>.git
cd <carpeta>
Aquí se incluye la estructura Docker Compose típica para nodos Besu:
docker-compose.yml
config/
|-- ibft/
|-- genesis.json
keys/
4. Generar claves del nodo
Cada nodo Besu necesita su propia clave de identidad. Generarla:
docker run --rm \
-v $(pwd)/keys:/keys \
hyperledger/besu:latest \
--data-path=/keys \
public-key export --to=/keys/node.pub
Esto generará:
- La clave privada del nodo
- La clave pública
- El enode asociado
Obtener el enode del nodo:
docker run --rm \
-v $(pwd)/keys:/keys \
hyperledger/besu:latest \
--data-path=/keys \
rlp encode --from=/keys/node.pub
El equipo ISBE usará este enode para añadir tu nodo a la lista de nodos permitidos.
5. Configurar la red ISBE en el nodo
Editar genesis.json y asegurarse de que corresponde al entorno:
-ISBE-DEV -ISBE-PRE -ISBE-PRO
Este archivo define:
-ChainId -Parámetros de IBFT -Límites de gas -Configuración EVM
El equipo ISBE proporciona estos archivos para no cometer errores de configuración.
6. Configurar docker-compose.yml
Un ejemplo típico:
version: "3.8"
services:
besu:
image: hyperledger/besu:latest
container_name: 'Nombre_nodo'
volumes:
- ./config:/config
- ./keys:/keys
- ./data:/data
command: >
--data-path=/data
--genesis-file=/config/genesis.json
--node-private-key-file=/keys/key
--rpc-http-enabled=true
--rpc-http-host=0.0.0.0
--rpc-http-port=8545
--rpc-http-api=ETH,NET,WEB3,TXPOOL
--rpc-ws-enabled=true
--rpc-ws-host=0.0.0.0
--rpc-ws-port=8546
--p2p-port=30303
--host-whitelist="*"
--logging=INFO
ports:
- "30303:30303"
- "8545:8545"
- "8546:8546"
restart: unless-stopped
Parámetros a personalizar: -container_name: → poner 'Nombre_nodo' -Puertos → abrir solo si el caso de uso los necesita -Directorios → deben ser persistentes
7. Inicio del nodo
Arrancar el nodo:
docker compose up -d
Ver logs:
docker logs -f <Nombre_nodo>
El nodo no podrá sincronizar ni entrar en la red P2P hasta que ISBE autorice su enode.
8. Solicitar el permisionado
Enviar al equipo de ISBE (normalmente vía formulario o correo):
- Nombre del nodo: 'Nombre_nodo'
- Enode: enode://...
- IP pública del servidor: 'IP_NODO'
- Entorno destino: dev / pre / pro
Una vez aprobado, el nodo:
- Será incluido en la lista de nodos autorizados.
- Podrá conectarse a los permisionadores.
- Empezará a sincronizar la cadena.
9. Verificación después del permisionado
Comprobar estado del P2P:
curl http://localhost:8545 \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}'
Debe devolver un número mayor que cero cuando esté conectado a la red.
Comprobar altura de bloque:
curl http://localhost:8545 \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
El valor debe incrementarse.
10. Uso posterior del nodo
Una vez sincronizado, el nodo regular permite:
- Desplegar contratos.
- Leer el estado on-chain.
- Enviar transacciones firmadas.
- Escuchar eventos (vía WebSocket).
El nodo queda bajo la responsabilidad operativa del caso de uso:
- Backups
- Logs
- Seguridad del host
- Actualizaciones
La red ISBE únicamente controla el permisionado y la topología P2P.