Elige la compatibilidad adecuada para tu bot de Discord¶
Cuando creas un pedido para un bot de Discord, el asistente de configuración ahora te pide una compatibilidad además del runtime (Node.js, Python, Bun, Deno, Java u otro). Esta página explica qué hace esa opción, cuándo te importa y cómo cambiarla en un bot que ya tienes en marcha.
Las dos opciones¶
Ligera es la opción por defecto. Usa una imagen base pequeña (por debajo es Alpine Linux), que arranca antes, ocupa menos disco y se descarga rápido. Encaja con la mayoría de bots: cualquiera que use librerías escritas íntegramente en JavaScript o Python, los SDK habituales de Discord, clientes HTTP sencillos y similares.
Estándar (Mejor Compatibilidad) usa una imagen base más grande (basada en Debian) que trae el software de sistema que algunas librerías necesitan. Pierdes un poco de tiempo de arranque y algo de disco a cambio de un soporte mucho más amplio de paquetes.
Si tu bot instala sin problemas, déjalo en Ligera. Si no, Estándar es casi siempre la respuesta.
Cuándo la opción Ligera no es suficiente¶
Algunos paquetes descargan un binario ya compilado durante la instalación (lo ideal), y otros tienen que compilar un binario desde código C/C++ como parte de npm install o pip install. La base Ligera no incluye una cadena de compilación de C/C++ ni las librerías de sistema contra las que enlazan esos paquetes, así que cualquier paquete que tenga que compilarse fallará.
Estos son los casos que más vemos:
- Node.js / npm:
canvas,sharp,bcrypt,better-sqlite3,node-canvas,puppeteer, las ayudas de voz paradiscord.js(@discordjs/opus,sodium-native),node-sass. - Python / pip:
Pillow,cryptography,lxml,numpy(en algunos casos), cualquier cosa que envuelvalibffi,libxml2,libpngocairo.
Normalmente te enteras por las malas: la instalación se rompe con errores que mencionan node-gyp, prebuild-install, gcc, python: not found o Cannot find module. El bot se queda reiniciando en bucle.
Una forma rápida de saberlo
Abre el package.json o el requirements.txt de tu bot. Si ves alguno de los paquetes de arriba, empieza directamente con Estándar.
Qué pierdes con Estándar¶
En la práctica, poca cosa:
- La imagen pesa unos 80–150 MB comprimidos en lugar de unos 50 MB. No lo vas a notar a menos que reconstruyas a todas horas.
- La primera descarga en un nodo nuevo tarda unos segundos más. Los reinicios siguientes en el mismo nodo son idénticos.
- Una superficie algo mayor para actualizaciones de seguridad. Las dos bases las mantienen sus proyectos originales y nosotros las tenemos al día.
Para un bot de Discord que está corriendo días o semanas seguidas, esos costes son invisibles. Si dejamos Ligera por defecto es solo porque la mayoría de bots no necesitan más.
Pasar un bot existente a Estándar¶
Si ya creaste el bot y está fallando con errores de compilación, no hace falta que canceles y vuelvas a pedirlo. Abre el bot desde el panel, ve a Configuración y cambia ahí la compatibilidad. El cambio se aplica en el siguiente reinicio, que lanzará una instalación de dependencias desde cero sobre la nueva imagen base.
Puede que haga falta limpiar dependencias antiguas
Si tu bot lleva un rato fallando al instalar, la carpeta node_modules/ (o __pycache__/, venv/, etc.) que vive en el volumen del servidor puede haber quedado a medias. Después de pasar a Estándar, si la instalación sigue sin tirar, borra esa carpeta desde el gestor de archivos y reinicia una vez. El runtime la reconstruirá desde cero.
Preguntas frecuentes¶
¿Puedo volver de Estándar a Ligera?
Sí, en el mismo sitio. No hay paso de migración. Si tus dependencias instalan bien en Ligera, el bot se comportará exactamente igual que uno que estuviera en Ligera desde el principio.
¿Esto cambia la versión de Node / Python / Java que ejecuta mi bot?
No. La versión mayor de tu runtime (Node 22, Python 3.13, Java 21, etc.) es la misma en las dos opciones. Lo que cambia es la base del sistema operativo que hay debajo, no el runtime del lenguaje.
¿Estándar es más lenta?
Una vez que el contenedor está corriendo, no. Los runtimes son idénticos. La única diferencia medible es el tiempo de descarga de la imagen en un nodo que nunca la haya ejecutado antes, y eso es un coste de una sola vez.
¿Por qué Ligera por defecto si Estándar es más compatible?
La mayoría de bots de Discord son proyectos pequeños en un único lenguaje y no sacan nada de una base más pesada. Poner Estándar para todo el mundo significaría imágenes más grandes y arranques más lentos para la mayoría de bots que nunca verían el beneficio. Te enseñamos la opción para que los bots que sí la necesitan puedan activarla sin dramas.
¿Y si mi bot usa el runtime «Otro» con un start.sh propio?
Aplica la misma elección. Ligera te da una shell Alpine; Estándar te da una shell Debian. Si tu script llama a apt-get, necesitas Estándar; si llama a apk, necesitas Ligera. Los scripts POSIX puros funcionan en ambas.