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.
- 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
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
- Sistema operativo compatible: Debian 11/12 o Ubuntu 20.04/22.04/24.04
- Acceso root al servidor
- Bash 4.0 o superior
# 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
-
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
- Configura
-
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
-
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
- Optimiza buffers del kernel (
-
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
- Configura disciplinas de cola (
-
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
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
- Configura scheduler I/O optimizado (
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_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
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)
- Respaldo automático de archivos de configuración
- Almacenamiento en
/var/lib/l4d2-optimizer/backups/
- Comandos de estado del sistema antes de cambios
# Habilitar modo debug en .env
OPTIMIZER_DEBUG=1
# Información detallada en terminal y logs
# Archivo debug: /var/log/l4d2-optimizer/debug.log
- 🔍 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
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.
docs/server-optimizer.md
- Funcionamiento del sistema principaldocs/template.md
- Guía para desarrollo de módulos
docs/irq_opt.md
- IRQ Optimization - Optimización de interrupciones CPUdocs/disk_opt.md
- Disk Optimization - Optimización de scheduler I/O de discodocs/network_advanced.md
- Network Advanced - Configuraciones avanzadas de red (QDisc, MTU, Offloads)docs/ipv6_disable.md
- IPv6 Disable - Desactivación completa del protocolo IPv6docs/thp_disable.md
- THP Disable - Desactivación de Transparent HugePages para menor latenciadocs/dns_optimizer.md
- DNS Optimizer - Optimización de servidores DNS para mejor conectividaddocs/network_base.md
- Network Base - Configuración fundamental de buffers y parámetros de reddocs/swap_opt.md
- Swap Optimization - Optimización de memoria virtual y swappinessdocs/tcp_udp_params.md
- TCP/UDP Parameters - Optimización de protocolos TCP y UDP
docs/docker_processes.md
- Docker Process Optimization - Priorización de procesos L4D2 en contenedoresdocs/docker_filesystem.md
- Docker Filesystem Optimization - Sistema de archivos optimizado con tmpfsdocs/docker_networking.md
- Docker Network Optimization - Stack de red containerizada para gaming
/var/log/l4d2-optimizer/
├── optimizer.log # Log principal del sistema
└── debug.log # Log detallado (modo debug)
/var/lib/l4d2-optimizer/
├── module_status # Estado de instalación de módulos
└── backups/ # Respaldos automáticos
- 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
- Issues: GitHub Issues
- Discusiones: GitHub Discussions
- Wiki: GitHub Wiki
Este proyecto está licenciado bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Las contribuciones son bienvenidas. Por favor:
- Haz fork del proyecto
- Crea una rama para tu funcionalidad
- Commit tus cambios
- Push a la rama
- Abre un Pull Request
Desarrollado por AoC-Gamers para la comunidad de Left 4 Dead 2.
¿Te ha sido útil este proyecto? ⭐ Dale una estrella en GitHub!