Lic. Carlos Enrique Loría Beeche
Idea central: si tenés un servidor (o una VM) con buen CPU y disco, podés montar un stack completo de Monero: monerod (nodo) + P2Pool (pool descentralizado) + XMRig (minero CPU) apuntando a tu P2Pool local.
Objetivo: que quede estable, verificable y que arranque solo con systemd (sin depender de ventanas abiertas).
0) Requisitos y supuestos
- Sistema: Debian 12 (x86_64).
- Usuario sin root (ej:
cloria) consudo. - Un disco con espacio suficiente (si te sobra, mejor: evitás pruned al inicio).
- Una wallet Monero (address principal empieza con
4). En este ejemplo usás tu wallet del Pi.
1) Estructura de carpetas (área de trabajo)
En este ejemplo vamos a usar un volumen con mucho espacio, por ejemplo:
/opt/mailcow-dockerized/monero
Creamos carpetas:
sudo mkdir -p /opt/mailcow-dockerized/monero/{bin,bitmonero,p2pool,xmrig}
sudo chown -R $USER:$USER /opt/mailcow-dockerized/monero
df -hT /opt/mailcow-dockerized/monero
ls -lah /opt/mailcow-dockerized/monero
Verificación esperada: verás tus directorios y espacio libre alto.
2) Instalar Monero CLI (monerod + monero-wallet-cli)
Entrá a la carpeta de trabajo y bajá el CLI oficial:
cd /opt/mailcow-dockerized/monero
cd bin
# Monero CLI (x64)
wget -O monero-cli.tar.bz2 https://downloads.getmonero.org/cli/linux64
tar -xjf monero-cli.tar.bz2
rm -f monero-cli.tar.bz2
# Mover binarios a /opt/.../monero/bin
# (el directorio extraído se llama parecido a monero-x86_64-linux-gnu-vX.Y.Z)
mv monero-*/monerod monero-*/monero-wallet-cli /opt/mailcow-dockerized/monero/bin/
# limpiar directorio extraído
rm -rf monero-*
/opt/mailcow-dockerized/monero/bin/monerod --version
/opt/mailcow-dockerized/monero/bin/monero-wallet-cli --version
Verificación esperada: te imprime la versión (ej: v0.18.4.5 o similar).
3) Arrancar monerod (nodo) con parámetros correctos para P2Pool
P2Pool requiere ZMQ y acceso RPC local. Vamos a usar:
- P2P:
18080 - RPC local:
127.0.0.1:18081 - ZMQ local:
127.0.0.1:18083
Arranque manual (para validar primero):
/opt/mailcow-dockerized/monero/bin/monerod \
--data-dir /opt/mailcow-dockerized/monero/bitmonero \
--rpc-bind-ip 127.0.0.1 --rpc-bind-port 18081 --restricted-rpc \
--p2p-bind-ip 0.0.0.0 --p2p-bind-port 18080 \
--zmq-pub tcp://127.0.0.1:18083 \
--out-peers 32 --in-peers 64 \
--enforce-dns-checkpointing \
--enable-dns-blocklist
3.1 Verificaciones de monerod
En otra terminal:
ss -lntp | egrep ':(18080|18081|18083)\b|monerod' || true
curl -s http://127.0.0.1:18081/get_info | head
Verificación esperada:
- Ves puertos 18080/18081/18083 escuchando por
monerod. get_infodevuelve JSON (altura, sincronización, etc.).
4) Instalar y correr P2Pool (modo mini recomendado)
Para hashrate CPU pequeño/medio, P2Pool mini suele ser más amigable con la varianza. (Mini = otra cadena de shares).
4.1 Hugepages (recomendado)
sudo sysctl vm.nr_hugepages=3072
4.2 Descargar P2Pool
Entrá a la carpeta:
cd /opt/mailcow-dockerized/monero/p2pool
Descargá el binario de P2Pool para Linux x64 desde su página de releases (ejemplo):
# EJEMPLO: reemplazá el link por el release actual linux-x64 si cambia
curl -L -o p2pool.tar.gz "https://sourceforge.net/projects/monero-p2pool.mirror/files/p2pool-v4.13-linux-x64.tar.gz/download"
tar -xzf p2pool.tar.gz
rm -f p2pool.tar.gz
ls -lah
4.3 Arrancar P2Pool contra tu monerod local
Definí tu wallet (address principal, empieza con 4):
WALLET_MAIN="PONE_AQUI_TU_ADDRESS_PRINCIPAL_QUE_EMPIEZA_CON_4"
Arranque:
cd /opt/mailcow-dockerized/monero/p2pool/*linux-x64* 2>/dev/null || cd /opt/mailcow-dockerized/monero/p2pool
./p2pool --host 127.0.0.1 --rpc-port 18081 --zmq-port 18083 --wallet "$WALLET_MAIN" --mini
Verificación esperada: P2Pool empieza a sincronizar su propio estado (tarda unos minutos).
5) Instalar XMRig y apuntarlo a tu P2Pool local
XMRig se conecta al pool local de P2Pool en 127.0.0.1:3333.
5.1 Descargar XMRig
cd /opt/mailcow-dockerized/monero/xmrig
# Intento con "latest" (si cambia el nombre, bajalo desde releases)
curl -L -o xmrig.tar.gz "https://github.com/xmrig/xmrig/releases/latest/download/xmrig-6.24.0-linux-static-x64.tar.gz"
tar -xzf xmrig.tar.gz
rm -f xmrig.tar.gz
ls -lah
5.2 Correr XMRig contra P2Pool
cd /opt/mailcow-dockerized/monero/xmrig/*xmrig* 2>/dev/null || cd /opt/mailcow-dockerized/monero/xmrig
./xmrig -o 127.0.0.1:3333
Verificación esperada: XMRig dice "connected" a 127.0.0.1:3333 y empieza a reportar hashrate.
6) Convertirlo en servicios systemd (arranque automático)
Cuando todo funcione manual, lo pasás a systemd para que:
- Arranque solo al reiniciar.
- Se reinicie si crashea.
- Lo puedas monitorear con
journalctl.
Nota: en esta guía dejamos los servicios como plantilla. En tu entorno real, revisá rutas y wallet.
6.1 monerod.service
sudo tee /etc/systemd/system/monerod.service >/dev/null <<'EOF'
[Unit]
Description=Monero Daemon (monerod)
After=network-online.target
Wants=network-online.target
[Service]
User=cloria
Group=cloria
Type=simple
ExecStart=/opt/mailcow-dockerized/monero/bin/monerod \
--data-dir /opt/mailcow-dockerized/monero/bitmonero \
--rpc-bind-ip 127.0.0.1 --rpc-bind-port 18081 --restricted-rpc \
--p2p-bind-ip 0.0.0.0 --p2p-bind-port 18080 \
--zmq-pub tcp://127.0.0.1:18083 \
--out-peers 32 --in-peers 64 \
--enforce-dns-checkpointing \
--enable-dns-blocklist
Restart=always
RestartSec=10
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
EOF
6.2 p2pool.service
sudo tee /etc/systemd/system/p2pool.service >/dev/null <<'EOF'
[Unit]
Description=P2Pool (Monero decentralized pool)
After=monerod.service
Wants=monerod.service
[Service]
User=cloria
Group=cloria
Type=simple
WorkingDirectory=/opt/mailcow-dockerized/monero/p2pool
Environment=WALLET_MAIN=PONE_AQUI_TU_ADDRESS_PRINCIPAL_QUE_EMPIEZA_CON_4
ExecStart=/opt/mailcow-dockerized/monero/p2pool/p2pool \
--host 127.0.0.1 --rpc-port 18081 --zmq-port 18083 \
--wallet ${WALLET_MAIN} --mini
Restart=always
RestartSec=10
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
EOF
Nota: el binario real puede quedar dentro de una carpeta versionada. Ajustá WorkingDirectory y la ruta del binario si aplica.
6.3 xmrig.service
sudo tee /etc/systemd/system/xmrig.service >/dev/null <<'EOF'
[Unit]
Description=XMRig (CPU miner) to local P2Pool
After=p2pool.service
Wants=p2pool.service
[Service]
User=cloria
Group=cloria
Type=simple
WorkingDirectory=/opt/mailcow-dockerized/monero/xmrig
ExecStart=/opt/mailcow-dockerized/monero/xmrig/xmrig -o 127.0.0.1:3333
Restart=always
RestartSec=10
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
EOF
6.4 Activar todo
sudo systemctl daemon-reload
sudo systemctl enable --now monerod
sudo systemctl enable --now p2pool
sudo systemctl enable --now xmrig
systemctl status monerod --no-pager -l
systemctl status p2pool --no-pager -l
systemctl status xmrig --no-pager -l
6.5 Logs en vivo
sudo journalctl -u monerod -f
sudo journalctl -u p2pool -f
sudo journalctl -u xmrig -f
7) ¿Full node o pruned?
Si tenés espacio, para empezar y evitar sorpresas: full. Cuando ya esté estable y quieras ahorrar disco, podés evaluar pruned. La prioridad al inicio es: que funcione y quede estable.
8) Nota de realidad (honesta)
Minar con CPU no es magia. Dependiendo del hardware, electricidad y dificultad, el rendimiento puede ser bajo. Pero este setup tiene valor:
- Aprendés infraestructura real.
- Usás P2Pool (descentralización).
- Controlás tu nodo y tu entorno.
Si tu meta es “automatización y estabilidad”, systemd + verificación por partes es el camino.
Fin.
