Skip to content

Suite modular de optimización de Linux para servidores dedicados L4D2. Ajustes de red, optimización de memoria, E/S de disco, equilibrio de IRQ, optimización de DNS.

Notifications You must be signed in to change notification settings

AoC-Gamers/L4D2-Dedicated-Server-Optimizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

L4D2 Dedicated Server Optimizer

🎮 Sistema Modular de Optimización para Servidores Dedicados de Left 4 Dead 2 🎮

Version License Compatibility

📋 Descripción del Proyecto

El L4D2 Dedicated Server Optimizer es un sistema modular desarrollado por AoC-Gamers que permite aplicar optimizaciones específicas al sistema operativo para mejorar el rendimiento de servidores dedicados de Left 4 Dead 2.

🎯 Objetivos Principales

  • Optimización Modular: Sistema de módulos independientes para diferentes aspectos del sistema
  • Configuración Centralizada: Variables de entorno para personalizar cada optimización
  • Seguridad: Sistema de respaldos automáticos antes de aplicar cambios
  • Monitoreo: Registro detallado de todas las operaciones y estados
  • Compatibilidad: Soporte específico para sistemas Debian/Ubuntu
  • Facilidad de Uso: Menú interactivo con información detallada de cada módulo

🏗️ Arquitectura del Sistema

L4D2-Dedicated-Server-Optimizer/
├── server-optimizer.sh    # Script principal con menú interactivo
├── .env.example          # Plantilla de configuración
├── modules/              # Módulos de optimización
│   ├── disk_opt.sh       # Optimización de disco I/O
│   ├── dns_optimizer.sh  # Configuración DNS optimizada
│   ├── ipv6_disable.sh   # Deshabilitación IPv6
│   ├── irq_opt.sh        # Optimización IRQ
│   ├── network_*.sh      # Módulos de red (base, avanzado, tcp/udp)
│   ├── swap_opt.sh       # Optimización memoria virtual
│   ├── thp_disable.sh    # Deshabilitación Transparent Huge Pages
│   └── template.sh       # Plantilla para nuevos módulos
└── docs/                 # Documentación del proyecto

🚀 Inicio Rápido

Prerrequisitos

  • Sistema operativo compatible: Debian 11/12 o Ubuntu 20.04/22.04/24.04
  • Acceso root al servidor
  • Bash 4.0 o superior

Instalación y Uso

# 1. Clonar el repositorio
git clone https://github.com/AoC-Gamers/L4D2-Dedicated-Server-Optimizer.git
cd L4D2-Dedicated-Server-Optimizer

# 2. Configurar permisos de ejecución
chmod +x server-optimizer.sh
chmod +x modules/*.sh

# 3. Copiar y personalizar la configuración (opcional)
cp .env.example .env
nano .env

# 4. Ejecutar el optimizador
sudo ./server-optimizer.sh

📦 Módulos de Optimización Disponibles

🧠 Memoria

  • swap_opt.sh - Optimización Memoria Virtual

    • Configura vm.swappiness=10 para reducir uso de swap
    • Habilita vm.overcommit_memory=1 para mejor gestión de memoria
    • Impacto: Mejora la gestión de memoria y reduce el uso de swap para mejor rendimiento
  • thp_disable.sh - Deshabilitación Transparent Huge Pages

    • Desactiva THP que puede causar latencia impredecible
    • Crea servicio systemd para persistencia tras reinicios
    • Impacto: Reduce latencia y mejora consistencia del rendimiento

🌐 Red

  • network_base.sh - Configuración Base de Red

    • Optimiza buffers del kernel (rmem_max, wmem_max)
    • Ajusta netdev_max_backlog para mejor manejo de paquetes
    • Impacto: Optimiza buffers de red para reducir pérdida de paquetes y mejorar rendimiento UDP
  • network_advanced.sh - Configuración Avanzada de Red

    • Configura disciplinas de cola (fq_codel, fq, pfifo_fast)
    • Ajusta MTU y desactiva offloads problemáticos
    • Impacto: Configuración avanzada de red para latencia mínima y máximo throughput
  • tcp_udp_params.sh - Parámetros TCP/UDP Avanzados

    • Habilita BBR congestion control para TCP
    • Optimiza parámetros UDP específicos para gaming
    • Impacto: Optimiza TCP congestion control y memoria UDP para mejor rendimiento de red
  • dns_optimizer.sh - Optimización DNS

    • Configura servidores DNS de alta velocidad (Cloudflare, Google, OpenDNS, Quad9)
    • Soporte para DNS personalizados
    • Impacto: Mejora conectividad del servidor y reduce latencia en operaciones de red
  • ipv6_disable.sh - Deshabilitación IPv6

    • Desactiva IPv6 mediante sysctl y GRUB
    • Evita problemas de conectividad dual-stack
    • Impacto: Elimina problemas de conectividad IPv6 y simplifica configuración de red

💾 Disco

  • disk_opt.sh - Optimización I/O de Disco
    • Configura scheduler I/O optimizado (mq-deadline, kyber, bfq)
    • Ajustes específicos para SSDs y HDDs
    • Impacto: Mejora rendimiento de I/O para carga/guardado más rápido de mapas y datos

⚡ CPU

  • irq_opt.sh - Optimización IRQ
    • Balancea interrupciones entre núcleos CPU
    • Habilita Receive Packet Steering (RPS)
    • Impacto: Distribuye interrupciones de red para mejor utilización de CPU multinúcleo

🐳 Docker (Contenedores)

  • docker_processes.sh - Optimización de Procesos en Contenedores

    • Prioriza procesos L4D2/srcds con nice -20 (máxima prioridad CPU)
    • Configura I/O real-time para procesos del juego
    • Monitoreo continuo y re-priorización automática
    • Impacto: Garantiza máxima prioridad para el servidor del juego, reduce micro-stutters en 100 tick
  • docker_filesystem.sh - Optimización de Sistema de Archivos en Contenedores

    • Utiliza tmpfs (RAM) para logs, demos y cache temporal
    • Optimiza parámetros I/O del kernel dentro del contenedor
    • Sistema automático de limpieza y rotación de archivos
    • Impacto: Elimina latencia de disco en operaciones críticas, mejora tiempos de carga
  • docker_networking.sh - Optimización de Red en Contenedores

    • Buffers TCP/UDP optimizados para gaming (16MB)
    • TCP_NODELAY y BBR congestion control
    • Desactiva hardware offloading para menor latencia
    • Impacto: Reduce latencia de red 5-15ms, mejora estabilidad de hitreg en 100 tick

🔧 Configuración Avanzada

Variables de Entorno

El sistema utiliza un archivo .env para configuración centralizada:

# Ejemplo de configuración de red
NETWORK_DNS_PROVIDER="cloudflare"          # Proveedor DNS
NETWORK_TCP_CONGESTION="bbr"               # Control de congestión TCP
NETWORK_MTU_SIZE="1500"                    # Tamaño MTU
MEMORY_SWAPPINESS="10"                     # Tendencia a usar swap
DISK_SCHEDULER="mq-deadline"               # Scheduler I/O

# Configuración específica para Docker
DOCKER_PROCESS_SRCDS_NICE="-20"            # Prioridad máxima para srcds
DOCKER_FS_TMPFS_SIZE="512M"                # Tamaño tmpfs para cache
DOCKER_NET_BUFFER_SIZE="16777216"          # Buffers de red (16MB)

Sistema de Respaldos

  • Respaldo automático de archivos de configuración
  • Almacenamiento en /var/lib/l4d2-optimizer/backups/
  • Comandos de estado del sistema antes de cambios

Modo Debug

# Habilitar modo debug en .env
OPTIMIZER_DEBUG=1

# Información detallada en terminal y logs
# Archivo debug: /var/log/l4d2-optimizer/debug.log

📊 Características Avanzadas

  • 🔍 Verificación de Dependencias: Validación automática de módulos y paquetes requeridos
  • ⏱️ Sistema de Timeout: Protección contra módulos bloqueados
  • 📝 Registro Completo: Logs detallados de todas las operaciones
  • 🔄 Gestión de Estado: Seguimiento del estado de instalación de cada módulo
  • 🎯 Categorización: Módulos organizados por tipo (memoria, red, disco, cpu, etc.)
  • 🛡️ Modo Seguro: Verificaciones de compatibilidad antes de ejecutar

🤝 Desarrollo de Módulos

El sistema incluye un template.sh que facilita la creación de nuevos módulos de optimización. Consulta la documentación en docs/template.md para aprender a desarrollar tus propios módulos.

📚 Documentación

Documentación del Sistema

Documentación de Módulos

🐳 Módulos para Contenedores Docker

🐛 Depuración y Logs

Ubicaciones de Logs

/var/log/l4d2-optimizer/
├── optimizer.log    # Log principal del sistema
└── debug.log       # Log detallado (modo debug)

Estado del Sistema

/var/lib/l4d2-optimizer/
├── module_status    # Estado de instalación de módulos
└── backups/        # Respaldos automáticos

⚠️ Consideraciones Importantes

  • Requiere permisos root para modificar configuraciones del sistema
  • Crear respaldos antes de usar en producción
  • Probar en entorno de desarrollo antes de aplicar en servidores en vivo
  • Revisar logs después de cada aplicación de módulos

🆘 Soporte

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

👥 Contribuciones

Las contribuciones son bienvenidas. Por favor:

  1. Haz fork del proyecto
  2. Crea una rama para tu funcionalidad
  3. Commit tus cambios
  4. Push a la rama
  5. Abre un Pull Request

🏆 Créditos

Desarrollado por AoC-Gamers para la comunidad de Left 4 Dead 2.


¿Te ha sido útil este proyecto? ⭐ Dale una estrella en GitHub!

About

Suite modular de optimización de Linux para servidores dedicados L4D2. Ajustes de red, optimización de memoria, E/S de disco, equilibrio de IRQ, optimización de DNS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages