1. Arquitectura General de Waevo Hosting
Bienvenido a la enciclopedia técnica de Waevo Hosting (https://waevohosting.es). Nuestra plataforma está optimizada para ofrecer un entorno de alta disponibilidad y baja latencia, diseñado exclusivamente para bots, APIs y aplicaciones modernas en Node.js y Python.
A diferencia de los servidores web tradicionales, nuestro sistema no utiliza Apache ni Nginx para servir sitios web estáticos de PHP. Operamos sobre nodos aislados de alta frecuencia que ejecutan código persistente en memoria RAM.
Contenedores y Aislamiento por Kernel
Cada servicio se ejecuta en un contenedor Docker con límites rígidos aplicados a través de cgroups y namespaces del kernel de Linux. Esto garantiza que ningún servidor vecino consuma la RAM o la CPU contratada para tu aplicación.
Seguridad Perimetral y Protección DDoS
Todos nuestros centros de datos cuentan con mitigaodres de ataques volumétricos en capas 3, 4 y 7. El tráfico es inspeccionado en tiempo real sin añadir latencia significativa a tus bots.
2. Catálogo Oficial de Planes y Especificaciones
Puedes adquirir o actualizar tu suscripción en planes.waevohosting.es.
| Plan | Precio | RAM | Almacenamiento | CPU | Entornos |
|---|---|---|---|---|---|
| Waevo Seed | Gratis (Invitaciones) | 50 MB | 50 MB NVMe | 25% | Node.js / Python |
| Waevo Wave | 0,50 € / mes | 512 MB | 2 GB NVMe | 30% | Node.js / Python |
| Waevo Pulse ⭐ | 1,00 € / mes | 1 GB | 4 GB NVMe | 50% | Node.js / Python |
| Waevo Flow | 2,49 € / mes | 2 GB | 8 GB NVMe | 75% | Node.js / Python |
| Waevo Core | 4,99 € / mes | 4 GB | 10 GB NVMe | 100% | Node.js / Python |
Gestión Rígida de Recursos
- RAM Excedida: Activa de inmediato el OOM-Killer de Linux, provocando el reinicio del contenedor.
- Límite de Disco NVMe: Evita que la aplicación pueda escribir nuevos registros o archivos de caché en disco (error
ENOSPC).
3. Guía Completa de Despliegue en Node.js
Para aplicaciones Node.js, tu servidor busca la definición estándar de dependencias y scripts de arranque.
/home/container/
├── package.json
├── index.js
└── node_modules/ (Se instala automáticamente)
Módulos NPM y Post-Instalación
Al encender la instancia, el sistema ejecutará npm install si detecta modificaciones en el archivo package.json.
Código Base: Bot de Discord (Node.js)
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent] });
client.on('ready', () => console.log(`Iniciado como ${client.user.tag}`));
client.on('messageCreate', msg => {
if (msg.content === '!ping') msg.reply('¡Pong desde Waevo Hosting!');
});
client.login(process.env.DISCORD_TOKEN);
4. Guía Completa de Despliegue en Python
Para Python, el entorno creará un entorno virtual aislado (venv) e instalará automáticamente tus dependencias.
Código Base: Bot de Discord (Python)
import discord, os
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'Conectado como {client.user}')
@client.event
async def on_message(message):
if message.author == client.user: return
if message.content == '!ping':
await message.channel.send('¡Pong desde Waevo Hosting!')
client.run(os.getenv('DISCORD_TOKEN'))
5. Uso del Panel Pterodactyl
Proporciona acceso a la consola, el gestor de archivos, los logs de red y las herramientas de diagnóstico en tiempo real.
Variables de Inicio (Startup)
Comprueba que la variable JS_FILE o PYTHON_FILE en la pestaña Startup coincida exactamente con el archivo que deseas arrancar (ej. index.js o bot.py).
6. Enciclopedia de Errores: Hosting (Comunes)
1. Container Out of Memory (OOMKilled)
Killed o State: Exited (137)
Causa: El bot superó la RAM de su plan (ejemplo: superó los 50 MB del plan Seed).
Solución: Optimiza tu código evitando guardar grandes cantidades de información en variables locales globales o escala a un plan con mayor memoria en planes.waevohosting.es.
2. Error ENOSPC: No space left on device
Error: ENOSPC: no space left on device, write
Causa: Tu almacenamiento NVMe está al 100%. Ocurre con frecuencia por archivos de logs gigantescos o bases de datos SQLite no optimizadas.
Solución: Elimina archivos temporales o innecesarios desde el Gestor de Archivos del panel.
3. Address already in use (EADDRINUSE)
Error: listen EADDRINUSE: address already in use :::8080
Causa: Estás intentando abrir un puerto HTTP/Web que ya está siendo utilizado o que no te ha sido asignado por el panel.
Solución: Utiliza únicamente los puertos asignados a tu contenedor en la pestaña Network/Ports de Pterodactyl.
Hosting: Errores Raros y Avanzados
1. EPERM: operation not permitted (chown / chmod)
Error: EPERM: operation not permitted, chown '/home/container/...'
Causa: El script intenta modificar los permisos del sistema de archivos a nivel de administrador (root).
Solución: Por motivos de seguridad, los contenedores corren bajo un usuario sin privilegios root. Elimina cualquier llamada a comandos del sistema que intenten cambiar el propietario de los archivos.
2. ELIFECYCLE / Exit status 128
npm ERR! process ended with exit code 128
Causa: Incompatibilidad grave entre paquetes compilados en arquitecturas distintas (por ejemplo, subir la carpeta node_modules compilada en Windows a nuestros servidores Linux).
Solución: Elimina la carpeta node_modules y el archivo package-lock.json desde el panel y reinicia el servidor para forzar una instalación limpia.
3. Segmentation Fault (core dumped)
Segmentation fault (core dumped)
Causa: Un módulo nativo escrito en C/C++ (ejemplo: canvas o sqlite3 mal compilado) intentó acceder a una dirección de memoria no válida.
Solución: Reinstala la librería afectada asegurándote de que coincida con la versión del entorno del contenedor.
Errores en la API de Discord y Telegram
1. DiscordAPIError 50001: Missing Access
Causa: Tu bot no tiene permisos suficientes en el servidor de Discord para realizar la acción solicitada (ej. enviar un mensaje en un canal privado).
Solución: Revisa el rol de tu bot en Discord y otórgale los permisos necesarios.
2. DiscordAPIError 50013: Missing Permissions
Causa: La jerarquía del rol de tu bot está por debajo del usuario o rol que intenta modificar.
Solución: Mueve el rol de tu bot hacia arriba en la lista de roles del servidor de Discord.
3. Privileged Intents Not Enabled (Disallowed Intents)
[shard 0] ShardReceivedDisallowedIntentsException
Causa: Tu código requiere MessageContentIntent o GuildMembersIntent, pero no los has activado en el Portal de Desarrolladores de Discord.
Solución: Activa las casillas de Privileged Gateway Intents en la configuración de tu bot en Discord.
Errores en APIs de Inteligencia Artificial
1. HTTP 404 / Model Not Found
Causa: Estás enviando una solicitud HTTP especificando un modelo inexistente o descatalogado.
Solución: Asegúrate de usar identificadores de modelo válidos y actualizados (ejemplo: openai/gpt-oss-120b o llama-3.3-70b-versatile).
2. HTTP 429 / Rate Limit Exceeded
Causa: Superaste la cuota máxima de solicitudes por minuto que te otorga tu proveedor de IA.
Solución: Implementa un sistema de colas o retrasos (delay) antes de enviar nuevas peticiones a la API.
Node.js: Fallos Comunes de Código
1. Cannot find module '...'
Solución: Incluye la librería correspondiente en la sección dependencies de tu package.json.
2. UnhandledPromiseRejectionWarning
Solución: Asegúrate de capturar las promesas asíncronas agregando bloques .catch() o utilizando bloques try/catch con async/await.
Python: Fallos Comunes de Código
1. ModuleNotFoundError: No module named '...'
Solución: Escribe el nombre exacto de la librería en el archivo requirements.txt y reinicia la instancia.
2. IndentationError: unexpected indent
Solución: Revisa el sangrado del archivo Python y asegúrate de no mezclar tabulaciones con espacios.
7. Canales Oficiales de Atención
- Web Oficial: https://waevohosting.es
- Planes: planes.waevohosting.es
- Soporte 24/7: Sistema de tickets disponible en la plataforma y comunidad oficial en Discord.