Para alojar un bot de Discord 24/7, mueve tu proyecto Node.js a un VPS, ejecútalo con un usuario sin privilegios y deja que PM2 supervise el proceso. Después debes guardar la lista de procesos y registrar el servicio de arranque que PM2 genere: así el bot continúa cuando cierras SSH, se recupera de un fallo de proceso y vuelve tras un reinicio del servidor. Eso no equivale a un 100 % de disponibilidad: una caída del VPS, de la red, de Discord o un error lógico todavía puede dejarlo fuera de servicio.
Este runbook parte de un bot discord.js que ya funciona en local y lo despliega en Ubuntu 24.04 LTS. Si todavía estás eligiendo tecnología, revisa primero nuestra comparación entre discord.js y discord.py; esta guía se centra en operar un proyecto Node.js ya funcional.
Qué mantiene realmente online al bot
Un bot conectado al Gateway de Discord conserva un WebSocket persistente, envía heartbeats y debe reconectar o reanudar la sesión cuando corresponda. discord.js resuelve ese protocolo; PM2 cubre otra capa: conserva el proceso Node.js fuera de tu terminal, lo reinicia si termina y puede restaurarlo durante el arranque del sistema.
Son responsabilidades distintas: PM2 cubre cierre de SSH, crash y reboot; la biblioteca cubre la reconexión del Gateway. Que PM2 muestre “online” solo prueba que existe un proceso, por eso más adelante añadiremos una comprobación de disponibilidad del cliente.
Prerrequisitos y recursos orientativos
Necesitas acceso SSH con una cuenta que pueda usar sudo, un bot registrado como aplicación, un token vigente y un repositorio o copia del proyecto con package-lock.json. Usa un usuario bot real: Discord indica que automatizar una cuenta de usuario normal —un self-bot— no está permitido en su documentación de bots y OAuth2.
| Elemento | Punto de partida | Cuándo aumentar |
|---|---|---|
| CPU | Una vCPU puede servir para evaluar un bot de texto pequeño. | Comandos intensivos, cifrado, imágenes, navegador o voz elevan la carga. |
| Memoria | Alrededor de 1 GB deja más margen operativo que una instancia mínima. | Muchos servidores, cachés, base de datos local, voz o procesos auxiliares requieren medir y ampliar. |
| Disco | Reserva espacio para el sistema, dos o más releases, dependencias y logs. | Archivos generados, SQLite, audio y retención larga de logs cambian el cálculo. |
| Red | Salida HTTPS/WSS estable hacia Discord y los servicios que consuma el bot. | Webhooks entrantes, panel web o callbacks OAuth2 requieren puertos, TLS y proxy inverso. |
Estas referencias no son requisitos universales. Mide CPU, memoria, disco y latencia con tu carga real antes de comprometer capacidad.
1. Prepara Ubuntu y crea el usuario del bot
Entra con tu cuenta administrativa. Actualiza el índice de paquetes, instala utilidades básicas y crea una identidad dedicada. No ejecutes el bot ni el daemon de PM2 como root.











