Corre tu propio nodo Mostro
Mostro v0.16.3 — Guía para comunidades · Febrero 2026
1. ¿Qué es Mostro y por qué tu comunidad debería correr uno?
Mostro es un exchange peer-to-peer de Bitcoin que permite a las personas comprar y vender Bitcoin usando monedas locales (dólares, euros, pesos — cualquier moneda) sin necesidad de proporcionar documentos de identidad (KYC). Es un mercado descentralizado donde compradores y vendedores pueden intercambiar directamente.
Funciona usando dos tecnologías:
- Lightning Network — una capa de pagos rápidos y económicos de Bitcoin (la vía rápida de Bitcoin para pagos pequeños)
- Nostr — un protocolo de comunicación resistente a la censura (un sistema de mensajería que nadie puede cerrar)
Mostro actúa como coordinador de custodia temporal — retiene el Bitcoin del vendedor en una "caja fuerte" temporal (llamada hold invoice) hasta que el comprador confirma que envió el pago en moneda local. Mostro nunca controla los fondos de nadie; solo los retiene brevemente durante la operación.
¿Por qué tu comunidad querría correr un nodo Mostro?
- Ingresos por comisiones — Cada operación genera una comisión (0.6% por defecto). Si tu comunidad mueve $10,000 mensuales, son ~$60/mes en comisiones.
- Trading P2P sin KYC — Los miembros de tu comunidad pueden comprar y vender Bitcoin sin proporcionar documentos de identidad.
- Disputas en tu idioma — Cuando algo sale mal, tu comunidad lo resuelve en tu idioma.
- Independencia — Ninguna empresa puede cerrar tu exchange. Ningún gobierno puede presionar a un solo operador para cerrarlo.
- Personalización — Tú eliges qué monedas soportar, qué métodos de pago permitir y qué comisiones cobrar.
Cómo funciona Mostro (simplificado)
- Alice quiere VENDER Bitcoin por $50 USD → Crea una orden en Mostro
- Bob quiere COMPRAR Bitcoin con $50 USD → Ve la orden de Alice y la toma
- Mostro crea una "caja fuerte" (hold invoice) → Alice envía su Bitcoin a la caja fuerte
- Bob envía $50 a Alice por transferencia bancaria, Zelle, efectivo, etc. → Bob hace clic en "Fiat Enviado"
- Alice confirma que recibió los $50 → Hace clic en "Liberar"
- Mostro libera el Bitcoin de la caja fuerte a Bob → ¡Operación completada! ✓
Si algo sale mal, cualquiera de las partes puede abrir una disputa, y los árbitros asignados de tu comunidad investigan y resuelven el caso.
2. Requisitos previos — Lo que necesitas antes de empezar
2.1 Un servidor (VPS)
Un VPS (Virtual Private Server) es una computadora en un centro de datos que funciona 24/7. Vas a alquilar uno para hospedar tu nodo Mostro.
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 2 vCPUs (shared) | 2+ vCPUs |
| RAM | 2 GB | 4 GB |
| Storage | 60 GB SSD | 100 GB SSD |
| Bandwidth | 3 TB/month | 3+ TB/month |
| OS | Ubuntu 22.04+ LTS | Ubuntu 24.04 LTS |
Costo mensual estimado: $10–$24/mes.
Proveedores VPS populares:
- Hostinger — from ~$7/month · Accepts Bitcoin
- Hetzner — €3.49-8/month (good value, EU-based)
- Digital Ocean — $24/month
- Lunanode — Accepts Bitcoin payments
Muchos proveedores VPS aceptan pagos en Bitcoin. Busca esa opción si quieres mantener la coherencia con la filosofía Bitcoin.
2.2 Un nodo Lightning Network (LND)
Para correr Mostro, necesitas un nodo LND (Lightning Network Daemon) — el software Lightning específico con el que Mostro funciona.
| Option | Difficulty | Cost | Notes |
|---|---|---|---|
| Use an existing LND node | Easy | Free | Best if someone already runs one |
| Run LND on the same VPS | Hard | Same VPS + liquidity | Requires 4GB+ RAM |
| Node-in-a-box | Medium | $200-600 + liquidity | Start9, Umbrel, RaspiBlitz |
| StartOS with Mostro package | Easiest | $300-600 + liquidity | One-click Mostro package |
| Voltage.cloud | Easy | From ~$20/month | Hosted LND |
Mostro requiere específicamente LND (no CLN/Core Lightning, no Eclair, no LDK). Asegúrate de que tu nodo Lightning corra LND.
Lo que necesitas de tu nodo LND:
- El archivo
tls.cert(un certificado de seguridad) - El archivo
admin.macaroon(un token de autenticación) - La dirección gRPC (típicamente
https://127.0.0.1:10009)
2.3 Liquidez Lightning
Para facilitar operaciones, tu nodo Lightning necesita canales con Bitcoin.
| Trading Volume | Suggested Liquidity | Approx. BTC |
|---|---|---|
| Small community | 1–5 million sats | 0.01–0.05 BTC |
| Medium community | 5–20 million sats | 0.05–0.20 BTC |
| Active community | 20–100 million sats | 0.20–1.0 BTC |
Empieza pequeño, crece gradualmente. Comienza con lo suficiente para las necesidades iniciales de tu comunidad. Cuando los usuarios reporten órdenes fallidas, esa es tu señal para agregar más.
2.4 Llaves Nostr
Tu nodo Mostro necesita su propia identidad en la red Nostr.
Nunca reutilices llaves Nostr entre instancias de Mostro. Cada nodo necesita su propia identidad única.
Generando llaves Nostr seguras localmente con rana:
# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
# Install rana - local Nostr key generator
cargo install rana
# Generate a new key pair
rana 3. Instalación paso a paso
Todas las opciones de instalación comparten los mismos primeros pasos. Luego elige tu opción preferida:
- Opción A (Docker Hub): La más rápida. Sin compilar, sin clonar. Recomendada para la mayoría.
- Opción B (Docker Build): Compila la imagen localmente desde el repositorio.
- Opción C (Compilación nativa): Más control, mejor para sysadmins experimentados.
Pasos comunes (para las 3 opciones)
Paso 1: Conecta a tu VPS
ssh root@YOUR_VPS_IP_ADDRESS Paso 2: Actualiza el sistema
# Download the latest package information
apt update
# Install all available updates
apt upgrade -y Paso 3: Instala Docker y Docker Compose
Docker es necesario para las opciones A y B. Si vas a compilar manualmente (Opción C), puedes saltar este paso.
# Install Docker using the official convenience script
curl -fsSL https://get.docker.com | sh
# Verify Docker is installed
docker --version
# Verify Docker Compose
docker compose version Paso 4: Instala herramientas adicionales
apt install -y git make ✅ Pasos comunes completados. Ahora elige tu opción de instalación:
Opción A: Docker Hub (La más rápida — Recomendada)
Corre Mostro directamente desde Docker Hub sin clonar el repositorio ni compilar.
Paso 5: Crea el directorio de configuración
mkdir -p ~/mostro-config/lnd Paso 6: Obtén la plantilla de configuración
curl -sL https://raw.githubusercontent.com/MostroP2P/mostro/v0.16.3/settings.tpl.toml \
-o ~/mostro-config/settings.toml Paso 7: Copia las credenciales de LND
cp /path/to/your/tls.cert ~/mostro-config/lnd/tls.cert
cp /path/to/your/admin.macaroon ~/mostro-config/lnd/admin.macaroon Paso 8: Edita la configuración
nano ~/mostro-config/settings.toml Cambios necesarios:
[lightning]
lnd_cert_file = '/config/lnd/tls.cert'
lnd_macaroon_file = '/config/lnd/admin.macaroon'
lnd_grpc_host = 'https://host.docker.internal:10009'
[database]
url = "sqlite:///config/mostro.db"
[nostr]
nsec_privkey = 'YOUR_NSEC_KEY_HERE'
relays = ['wss://relay.mostro.network', 'wss://nos.lol']
[mostro]
fee = 0.006
max_order_amount = 1000000
min_payment_amount = 100
fiat_currencies_accepted = ['USD', 'EUR'] Paso 9: Corrige los permisos
Evita chmod 777. Usa el mínimo privilegio necesario.
sudo chown -R 1000:1000 ~/mostro-config
chmod 700 ~/mostro-config
chmod 600 ~/mostro-config/settings.toml
chmod 600 ~/mostro-config/lnd/admin.macaroon Paso 10: Ejecuta el contenedor
Si LND está en el mismo VPS:
docker run -d --name mostro \
--restart unless-stopped \
--add-host=host.docker.internal:host-gateway \
-v ~/mostro-config:/config \
mostrop2p/mostro:v0.16.3 Si LND está en un servidor diferente:
docker run -d --name mostro \
--restart unless-stopped \
-v ~/mostro-config:/config \
mostrop2p/mostro:v0.16.3 Paso 11: Revisa los logs
docker logs -f mostro Busca estos mensajes:
- Settings correctly loaded — La configuración es válida
- Connected to LND — Conexión Lightning exitosa
- Connected to relay — Relay Nostr establecido
Si ves Permission denied (os error 13), vuelve a aplicar permisos: chown -R 1000:1000 ~/mostro-config y reinicia: docker restart mostro.
🎉 ¡Felicidades! Si ves conexiones exitosas en los logs, ¡tu nodo Mostro está corriendo!
Actualización (Docker Hub)
export MOSTRO_TAG=v0.16.3
docker pull mostrop2p/mostro:$MOSTRO_TAG
docker stop mostro
docker rm mostro
docker run -d --name mostro \
--restart unless-stopped \
--add-host=host.docker.internal:host-gateway \
-v ~/mostro-config:/config \
mostrop2p/mostro:$MOSTRO_TAG Prefiere tags de versión explícitos (ej: mostrop2p/mostro:v0.16.3) sobre :latest para actualizaciones controladas.
Opción B: Docker Build (Compila la imagen localmente)
Paso 5: Descarga Mostro
cd /opt
git clone https://github.com/MostroP2P/mostro.git
cd mostro Paso 6: Configura los archivos
cd docker
mkdir -p config
cp ../settings.tpl.toml config/settings.toml Paso 7: Edita el archivo de configuración
nano config/settings.toml Edita las mismas configuraciones que la Opción A, Paso 8.
Paso 8: Compila la imagen Docker
cd ..
LND_CERT_FILE=/root/.lnd/tls.cert \
LND_MACAROON_FILE=/root/.lnd/data/chain/bitcoin/mainnet/admin.macaroon \
make docker-build Paso 9: Configura contraseña de base de datos (Opcional)
# Create docker/.env file
echo "MOSTRO_DB_PASSWORD='YourStrongPassword'" > docker/.env Paso 10: Inicia Mostro
make docker-up
# Check if running
docker compose -f compose.yml ps
# View logs
docker compose -f compose.yml logs -f mostro 🎉 ¡Felicidades! Si ves conexiones exitosas, ¡tu nodo Mostro está corriendo!
Opción C: Compilación nativa (Para operadores técnicos)
Paso 5: Instala Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source /root/.cargo/env
rustc --version
cargo --version NO instales Rust con apt install rustc. Siempre usa rustup. El paquete del sistema suele estar desactualizado.
Paso 6: Instala dependencias de compilación
apt install -y cmake build-essential libsqlite3-dev libssl-dev \
pkg-config git sqlite3 protobuf-compiler Paso 7: Descarga y compila Mostro
cd /opt
git clone https://github.com/MostroP2P/mostro.git
cd mostro
cargo build --release Si la compilación falla por poca RAM, agrega espacio swap:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile Pasos 8–10: Instala, inicializa y limpia
install target/release/mostrod /usr/local/bin
cargo install sqlx-cli --version 0.6.2
./init_db.sh
cargo clean # Saves 2+ GB Pasos 11–12: Crea usuario y configura
adduser --disabled-login mostro
mkdir -p /opt/mostro
cp settings.tpl.toml /opt/mostro/settings.toml
nano /opt/mostro/settings.toml Edita las mismas configuraciones que la Opción A, Paso 8.
Pasos 13–15: Prueba, permisos y servicio systemd
# Test run
/usr/local/bin/mostrod -d /opt/mostro
# Set permissions
chown -R mostro:mostro /opt/mostro Crea el servicio systemd:
# /etc/systemd/system/mostro.service
[Unit]
Description=Mostro daemon
After=network.target
[Service]
Type=simple
User=mostro
WorkingDirectory=/home/mostro
Environment=RUST_LOG=info
ExecStart=/usr/local/bin/mostrod -d /opt/mostro
Restart=on-failure
[Install]
WantedBy=multi-user.target systemctl daemon-reload
systemctl enable mostro.service
systemctl start mostro.service
systemctl status mostro.service 🎉 ¡Felicidades! ¡Tu nodo Mostro está corriendo como servicio del sistema!
4. Configuración en detalle
4.1 Comisiones — Cómo generas ingresos
[mostro]
fee = 0.006
dev_fee_percentage = 0.30 Comisión de trading (fee): Porcentaje cobrado por operación, dividido entre comprador y vendedor.
0.006= 0.6% (each party pays 0.3%)0.01= 1.0% (each party pays 0.5%)0= gratis (bueno para crecer tu base de usuarios)
Comisión de desarrollo (dev_fee_percentage): Un porcentaje de tus ganancias por comisiones que va al desarrollo de Mostro.
0.30= 30% (default) — out of 600 sats, 180 go to dev fund- Minimum: 10%, Maximum: 100%
- Todos los pagos son auditables públicamente via eventos Nostr (kind 8383)
4.2 Límites de órdenes y monedas
[mostro]
max_order_amount = 1000000
min_payment_amount = 100
fiat_currencies_accepted = ['USD', 'EUR', 'ARS', 'CUP'] 4.3 Perfil del nodo (Opcional pero recomendado)
[mostro]
name = "LatAm Mostro"
about = "P2P Bitcoin exchange for Latin America. Spanish support."
picture = "https://example.com/your-logo.png"
website = "https://your-community-site.com" 4.4 Tiempos y expiración
[mostro]
expiration_hours = 24 # How long an order stays open
expiration_seconds = 900 # Time for taker to complete (15 min)
hold_invoice_expiration_window = 300 # Hold invoice validity (5 min) 4.5 Anti-Spam
[mostro]
pow = 0 # 0 = disabled; 10-20 = moderate. Start with 0. 5. Operando tu nodo Mostro
5.1 Cómo funcionan las disputas
Las disputas son tu responsabilidad operativa más importante.
¿Cuándo ocurren disputas?
- El comprador dice que envió el pago, el vendedor dice que no lo recibió
- El vendedor se niega a liberar el Bitcoin después de recibir el pago
- Cualquiera de las partes deja de responder
El proceso de disputa:
- El usuario abre una disputa — Cualquier parte hace clic en "Disputa" en su cliente
- Mostro marca la orden — El estado cambia a "Disputa", los fondos permanecen bloqueados
- El árbitro toma el caso — Un admin asignado a tu nodo investiga
- Investigación — Se comunica con ambas partes, solicita evidencia
- Resolución — El árbitro decide: pagar al comprador, o devolver al vendedor
Elige a los árbitros con cuidado. Tienen el poder de decidir hacia dónde van los fondos bloqueados. Elige miembros de la comunidad confiables e imparciales. Se recomienda tener 2–3 árbitros.
5.2 Mostrix — Tu herramienta de administración
Mostrix es un cliente de terminal (TUI) para resolución de disputas. Si corres un nodo Mostro, necesitas Mostrix.
# Install dependencies
sudo apt install -y cmake build-essential pkg-config
# Clone and build
git clone https://github.com/MostroP2P/mostrix.git
cd mostrix
cargo build --release
cargo run Configura Mostrix en modo admin en ~/.mostrix/settings.toml:
mostro_pubkey = "YOUR_MOSTRO_PUBKEY_HEX"
nsec_privkey = "nsec1your_personal_key"
admin_privkey = "nsec1your_admin_key"
relays = ["wss://relay.mostro.network", "wss://nos.lol"]
currencies = ["USD", "EUR", "ARS"]
user_mode = "admin" 5.3 mostro-watchdog — Notificaciones de disputas
mostro-watchdog monitorea tu nodo Mostro buscando disputas y envía alertas instantáneas a Telegram. Esencial para tiempos de respuesta rápidos.
git clone https://github.com/MostroP2P/mostro-watchdog.git
cd mostro-watchdog
cargo build --release
cp config.example.toml config.toml
nano config.toml [mostro]
pubkey = "YOUR_MOSTRO_PUBKEY"
[nostr]
relays = ["wss://relay.mostro.network", "wss://nos.lol"]
[telegram]
bot_token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID" Corre mostro-watchdog como servicio systemd junto con tu nodo Mostro para monitoreo 24/7.
./target/release/mostro-watchdog 🎉 ¡Todo listo! Bienvenido a la red Mostro.