Instalar Mpcium
Esta guía te acompaña en el proceso de instalar y configurar nodos de MPCIUM en tu entorno.
Requisitos previos
Antes de comenzar, asegúrate de tener:
- Go 1.23+ instalado: instala Go aquí
- Un servidor NATS en ejecución
- Un servidor Consul en ejecución
Clonar e instalar Mpcium
Clona el repositorio
git clone https://github.com/fystack/mpcium.git
cd mpcium
Compila el proyecto
Con Make:
make
O con Go:
go install ./cmd/mpcium
go install ./cmd/mpcium-cli
Comandos disponibles
mpcium: inicia un nodo de MPCiummpcium-cli: utilidad de CLI para configurar peers, identidades e iniciadores
Ejecutar NATS y Consul (solo para desarrollo)
⚠️ Esta configuración no es segura y solo debe usarse para desarrollo. Para producción, usa un entorno de clúster seguro con certificados TLS.
Configuración de Docker Compose
Crea un archivo docker-compose.yaml:
version: "3"
services:
nats-server:
image: nats:latest
container_name: nats-server
command: -js --http_port 8222
ports:
- "4222:4222"
- "8222:8222"
- "6222:6222"
tty: true
restart: always
consul:
image: consul:1.15.4
container_name: consul
ports:
- "8500:8500"
- "8601:8600/udp"
command: "agent -server -ui -node=server-1 -bootstrap-expect=1 -client=0.0.0.0"
restart: always
Inicia los servicios
docker compose up -d
Generar la configuración de peers
mpcium-cli generate-peers -n 3
Ejemplo de salida:
{
"node0": "12345678-1234-1234-1234-123456789abc",
"node1": "23456789-2345-2345-2345-23456789abcd",
"node2": "34567890-3456-3456-3456-3456789abcde"
}
Configuración del clúster
1. Crea y actualiza config.yaml
cp config.yaml.template config.yaml
Edita config.yaml:
nats:
url: nats://127.0.0.1:4222
consul:
address: localhost:8500
mpc_threshold: 2
environment: development
badger_password: "your_badger_password"
event_initiator_pubkey: "your_event_initiator_pubkey"
Genera una contraseña segura (recomendado)
< /dev/urandom tr -dc 'A-Za-z0-9!@#$^&*()-_=+[]{}|;:,.<>?/~' | head -c 16; echo
Ejemplo:
badger_password: "F))ysJp?E]ol&I;^"
2. Registra los peers en Consul
mpcium-cli register-peers
Configuración del iniciador de eventos
Genera el iniciador
mpcium-cli generate-initiator
💡 Usa
--encrypten producción.
Agrega la clave pública a config.yaml
Desde event_initiator.identity.json:
{
"public_key": "09be5d070816aadaa1b6638cad33e819a8aed7101626f6bf1e0b427412c3408a"
}
Actualiza config.yaml:
event_initiator_pubkey: "09be5d070816aadaa1b6638cad33e819a8aed7101626f6bf1e0b427412c3408a"
Configurar las identidades de los nodos
1. Crea las carpetas de los nodos
mkdir node{0..2}
for dir in node{0..2}; do cp config.yaml peers.json "$dir/"; done
2. Genera la identidad de cada nodo
Ejemplo para node0:
cd node0
mpcium-cli generate-identity --node node0
💡 Para producción, usa cifrado:
mpcium-cli generate-identity --node node0 --encrypt
Genera una contraseña segura para el cifrado
< /dev/urandom tr -dc 'A-Za-z0-9!@#$^&*()-_=+[]{}|;:,.<>?/~' | head -c 16; echo
3. Distribuye los archivos de identidad a todos los nodos
cp identity/node0_identity.json ../node1/identity/node0_identity.json
cp identity/node0_identity.json ../node2/identity/node0_identity.json
Repite esto para node1 y node2.
Ejemplo de estructura de carpetas
├── node0
│ ├── config.yaml
│ ├── identity
│ │ ├── node0_identity.json
│ │ ├── node0_private.key
│ │ ├── node1_identity.json
│ │ └── node2_identity.json
│ └── peers.json
├── node1
│ ├── config.yaml
│ ├── identity
│ │ ├── node0_identity.json
│ │ ├── node1_identity.json
│ │ ├── node1_private.key
│ │ └── node2_identity.json
│ └── peers.json
├── node2
│ ├── config.yaml
│ ├── identity
│ │ ├── node0_identity.json
│ │ ├── node1_identity.json
│ │ ├── node2_identity.json
│ │ └── node2_private.key
│ └── peers.json
Iniciar los nodos de Mpcium
Inicia cada nodo:
cd node0
mpcium start -n node0
cd node1
mpcium start -n node1
cd node2
mpcium start -n node2
💡 En producción, evita las contraseñas escritas en el código:
mpcium start -n node0 --prompt-credentials
Despliegue en producción (alta seguridad)
- Usa clústeres de NATS y Consul de nivel productivo.
- Habilita certificados TLS en todos los endpoints.
- Cifra todas las claves:
mpcium-cli generate-initiator --encrypt mpcium-cli generate-identity --node node0 --encrypt - Usa
--prompt-credentialspara introducir de forma segura las contraseñas de Badger (evita escribirlas directamente enconfig.yaml).
Apéndice
Descifra la clave privada del iniciador con age
age --decrypt -o event_initiator.key event_initiator.key.age