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:

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?

Cómo funciona Mostro (simplificado)

  1. Alice quiere VENDER Bitcoin por $50 USD → Crea una orden en Mostro
  2. Bob quiere COMPRAR Bitcoin con $50 USD → Ve la orden de Alice y la toma
  3. Mostro crea una "caja fuerte" (hold invoice) → Alice envía su Bitcoin a la caja fuerte
  4. Bob envía $50 a Alice por transferencia bancaria, Zelle, efectivo, etc. → Bob hace clic en "Fiat Enviado"
  5. Alice confirma que recibió los $50 → Hace clic en "Liberar"
  6. 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.

ResourceMinimumRecommended
CPU2 vCPUs (shared)2+ vCPUs
RAM2 GB4 GB
Storage60 GB SSD100 GB SSD
Bandwidth3 TB/month3+ TB/month
OSUbuntu 22.04+ LTSUbuntu 24.04 LTS

Costo mensual estimado: $10–$24/mes.

Proveedores VPS populares:

💡 Tip

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.

OptionDifficultyCostNotes
Use an existing LND nodeEasyFreeBest if someone already runs one
Run LND on the same VPSHardSame VPS + liquidityRequires 4GB+ RAM
Node-in-a-boxMedium$200-600 + liquidityStart9, Umbrel, RaspiBlitz
StartOS with Mostro packageEasiest$300-600 + liquidityOne-click Mostro package
Voltage.cloudEasyFrom ~$20/monthHosted LND
⚠️ Important

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:

2.3 Liquidez Lightning

Para facilitar operaciones, tu nodo Lightning necesita canales con Bitcoin.

Trading VolumeSuggested LiquidityApprox. BTC
Small community1–5 million sats0.01–0.05 BTC
Medium community5–20 million sats0.05–0.20 BTC
Active community20–100 million sats0.20–1.0 BTC
💡 Empieza pequeño

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.

⚠️ Importante

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:

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

💡 Nota

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

⚠️ Importante

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:

💡 Solución de problemas

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
🔒 Security Note

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
⚠️ Important

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
💡 Tip

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.

Comisión de desarrollo (dev_fee_percentage): Un porcentaje de tus ganancias por comisiones que va al desarrollo de Mostro.

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 proceso de disputa:

  1. El usuario abre una disputa — Cualquier parte hace clic en "Disputa" en su cliente
  2. Mostro marca la orden — El estado cambia a "Disputa", los fondos permanecen bloqueados
  3. El árbitro toma el caso — Un admin asignado a tu nodo investiga
  4. Investigación — Se comunica con ambas partes, solicita evidencia
  5. Resolución — El árbitro decide: pagar al comprador, o devolver al vendedor
⚠️ Importante

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"
💡 Tip

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.