🚀 Waevo Docs Mega

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.

✅ Garantía de Aislamiento: Si otra aplicación dentro del mismo servidor sufre un pico de tráfico, tu bot continuará operando de manera fluida y aislada.

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

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)

Log: 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

Log: 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)

Log: 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)

Log: 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

Log: 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)

Log: 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)

Log: [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