Encontranos en redes
PM2Múltiples botsRecursos4 min de lectura
Ejecutar múltiples bots en un VPS
Gestionar varios bots con PM2 ecosystem, systemd y asignación de recursos en un mismo servidor.
¿Cuántos bots puedo correr?
Depende de los recursos de tu VPS. Como referencia:
| RAM del VPS | Bots estimados |
|---|---|
| 1 GB | 2-3 bots livianos |
| 2 GB | 4-6 bots |
| 4 GB | 8-12 bots |
| 8 GB | 15-25 bots |
Método 1: PM2 Ecosystem File
PM2 es ideal para gestionar múltiples procesos Node.js:
javascript
// ecosystem.config.js
module.exports = {
apps: [
{
name: 'bot-moderacion',
script: '/opt/bots/moderacion/index.js',
max_memory_restart: '200M',
env: { NODE_ENV: 'production' }
},
{
name: 'bot-musica',
script: '/opt/bots/musica/index.js',
max_memory_restart: '300M',
env: { NODE_ENV: 'production' }
},
{
name: 'bot-tickets',
script: '/opt/bots/tickets/index.js',
max_memory_restart: '150M',
env: { NODE_ENV: 'production' }
}
]
};bash
# Iniciar todos los bots
pm2 start ecosystem.config.js
# Ver estado de todos
pm2 status
# Reiniciar uno específico
pm2 restart bot-moderacion
# Guardar configuración para auto-start
pm2 save
pm2 startupMétodo 2: Múltiples servicios systemd
Creá un template de servicio:
bash
sudo nano /etc/systemd/system/discord-bot@.serviceini
[Unit]
Description=Discord Bot - %i
After=network.target
[Service]
User=deploy
WorkingDirectory=/opt/bots/%i
ExecStart=/usr/bin/node /opt/bots/%i/index.js
Restart=always
RestartSec=10
EnvironmentFile=/opt/bots/%i/.env
MemoryMax=256M
CPUQuota=25%%
[Install]
WantedBy=multi-user.targetUsalo para cada bot:
bash
sudo systemctl enable discord-bot@moderacion
sudo systemctl enable discord-bot@musica
sudo systemctl enable discord-bot@tickets
sudo systemctl start discord-bot@moderacionEstructura de directorios recomendada
terminal
/opt/bots/
├── moderacion/
│ ├── index.js
│ ├── .env
│ └── package.json
├── musica/
│ ├── index.js
│ ├── .env
│ └── package.json
└── tickets/
├── index.js
├── .env
└── package.jsonMonitoreo de recursos
bash
# Ver uso de memoria por bot
pm2 monit
# O con htop filtrado
htop -p $(pgrep -d',' -f 'node.*bot')
# Uso total de los bots
pm2 jlist | python3 -c "import sys,json; data=json.load(sys.stdin); print(sum(p['monit']['memory']/(1024*1024) for p in data), 'MB total')"Recomendaciones
- Asigná límites de memoria a cada bot para evitar que uno afecte a los demás
- Usá PM2 si todos son Node.js; systemd si mezclás lenguajes
- Monitoreá el uso de RAM y CPU regularmente
- Considerá separar bots críticos en VPS diferentes para alta disponibilidad
¿Te resultó útil esta guía?