Guía Completa: Instalar un Nodo Chainweb

Aprende a instalar, configurar y mantener tu propio nodo Chainweb para la red Kadena Community Edition. Cubre desde la preparación del sistema hasta el monitoreo avanzado.

1. Introducción

¿Qué es un Nodo Chainweb?

Un nodo Chainweb participa en la red Kadena Community Edition, validando transacciones, almacenando la blockchain y propagando bloques. Chainweb utiliza 20 cadenas paralelas (braided chains) para alta escalabilidad.

💡
¿Por qué ejecutar tu propio nodo?
  • Independencia de endpoints externos
  • Privacidad en tus transacciones
  • Minería en solitario con tu ASIC
  • Desarrollo y pruebas de smart contracts
  • Contribuir a descentralizar la red

Tipos de Nodos

TipoDescripciónUso
Full NodeToda la blockchainMinería, API
Pruned NodeSolo datos recientesRecursos limitados
Mining NodeFull + mining APIMinería solitaria

2. Requisitos del Sistema

⚠️ Mínimo

  • CPU: 4 cores / 8 threads
  • RAM: 8 GB
  • Disco: 500 GB SSD
  • Red: 100 Mbps
  • IP: IPv4 pública

Puede experimentar lentitud

⚠️
Almacenamiento:

La blockchain crece ~1-2 GB/día. Actualmente ~350 GB. Planifica 1 TB para 1-2 años.

Software

  • SO: Ubuntu 22.04/24.04 LTS (recomendado)
  • Alternativas: Debian 11/12, Rocky Linux 9

3. Preparación del Sistema

3.1 Actualizar sistema

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git htop iotop ncdu ufw

3.2 Crear usuario dedicado

bash
sudo useradd -m -s /bin/bash kadena
sudo mkdir -p /home/kadena/.local/share/chainweb-node
sudo mkdir -p /home/kadena/bin /home/kadena/config
sudo chown -R kadena:kadena /home/kadena

3.3 Configurar límites

bash
sudo nano /etc/security/limits.conf

Añadir al final:

/etc/security/limits.conf
kadena soft nofile 65535
kadena hard nofile 65535
kadena soft nproc 65535
kadena hard nproc 65535

4. Instalación del Nodo

bash
sudo su - kadena
cd ~/bin

# Descargar (verificar versión actual en GitHub)
wget https://github.com/kadena-community/chainweb-node/releases/download/2.27/chainweb-node-2.27.ghc-9.6.5.ubuntu-22.04.4f50efd.tar.gz

tar -xzf chainweb-node-2.27.ghc-9.6.5.ubuntu-22.04.4f50efd.tar.gz
mv chainweb-node-2.27.ghc-9.6.5.ubuntu-22.04.4f50efd chainweb-node
chmod +x chainweb-node
./chainweb-node --version
Salida esperada:chainweb-node-2.27 (4f50efd)

5. Configuración

bash
nano ~/config/mainnet.yaml
~/config/mainnet.yaml
chainweb:
  chainwebVersion: mainnet01
  databaseDirectory: /home/kadena/.local/share/chainweb-node/mainnet01

p2p:
  port: 1789
  interface: 0.0.0.0
  maxPeerCount: 50
  peers:
    - address:
        hostname: us-e1.chainweb.com
        port: 1789
    - address:
        hostname: api.chainweb-community.org
        port: 1789

serviceApi:
  port: 1848
  interface: 0.0.0.0
  miningApi:
    enabled: false
  pactApi:
    enabled: true

logging:
  level: info
  backend: text

Configuraciones por uso

🔒
Nodo privado:
serviceApi:
  interface: 127.0.0.1
⛏️
Nodo minería:
serviceApi:
  miningApi:
    enabled: true

6. Usar Snapshots (Recomendado)

🚀
Sincronizar desde cero: 5-7 días. Con snapshot: <2 horas.
bash
sudo su - kadena
cd ~/.local/share/chainweb-node
mv mainnet01 mainnet01.old 2>/dev/null || true

# Descargar snapshot
wget http://snapshot.dnns.es:82/chainweb-db-mainnet01-latest.tar.gz

# Extraer (30-60 min)
tar -xzf chainweb-db-mainnet01-latest.tar.gz
rm chainweb-db-mainnet01-latest.tar.gz

7. Configurar Systemd

bash
exit  # salir de kadena
sudo nano /etc/systemd/system/chainweb-node.service
chainweb-node.service
[Unit]
Description=Chainweb Node - Kadena Community Edition
After=network-online.target

[Service]
User=kadena
Group=kadena
Type=simple
ExecStart=/home/kadena/bin/chainweb-node --config-file=/home/kadena/config/mainnet.yaml
Restart=always
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
bash
sudo systemctl daemon-reload
sudo systemctl enable chainweb-node
sudo systemctl start chainweb-node
sudo systemctl status chainweb-node

Comandos útiles

bash
sudo journalctl -u chainweb-node -f     # logs tiempo real
sudo systemctl restart chainweb-node    # reiniciar
sudo systemctl stop chainweb-node       # detener

8. Configurar Firewall

bash
sudo ufw enable
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 1789/tcp  # P2P (requerido)
# sudo ufw allow 1848/tcp  # API (opcional)
sudo ufw status
🔌
Detrás de router:
  • 1789 TCP → IP servidor (P2P)
  • 1848 TCP → IP servidor (API, opcional)

9. Monitoreo

bash
# Altura local
curl -s http://localhost:1848/chainweb/0.0/mainnet01/cut | jq '.hashes["0"].height'

# Comparar con nodo público
curl -s https://api.chainweb-community.org/chainweb/0.0/mainnet01/cut | jq '.hashes["0"].height'
Si ambas alturas son similares (±5 bloques), ¡estás sincronizado!

10. Actualización

bash
sudo systemctl stop chainweb-node
sudo su - kadena
cp ~/bin/chainweb-node ~/bin/chainweb-node.backup
cd ~/bin
wget https://github.com/kadena-community/chainweb-node/releases/download/NUEVA_VERSION/...
tar -xzf chainweb-node-*.tar.gz
chmod +x chainweb-node
exit
sudo systemctl start chainweb-node

11. Troubleshooting

El nodo no arranca

sudo journalctl -u chainweb-node -n 50 --no-pager
  • Verificar permisos usuario kadena
  • Puerto ocupado: sudo lsof -i :1789
  • Base de datos corrupta → snapshot nuevo

Sincronización lenta

  • Usar snapshot reciente
  • Verificar puerto 1789 abierto
  • Comprobar disco: sudo iotop

12. FAQ

~500-700 GB adicionales. Recomendamos 1 TB mínimo.

No recomendado. Las 20 cadenas requieren mucha CPU/RAM.

Muy recomendable. Con IP dinámica perderás peers al cambiar.

No directamente. Solo vía minería. Pero ayudas a descentralizar.

🎉 ¡Felicidades!

Ya tienes tu nodo Chainweb funcionando. Recuerda:

  • Mantener actualizado
  • Monitorear espacio en disco
  • Hacer backups de config
  • Unirte al Discord si hay problemas

¿Siguiente paso?

Si quieres minar:

Configurar Minero → Discord