Ambient Background
DC_CORE
← RETURN_TO_LOGS
dcWebPanel: Por qué me creé mi propio panel de control de servidor y cómo funciona 🚀

En mi día a día me toca lidiar con un poco de todo: aplicaciones en Node.js / Next.js, sitios en WordPress, bases de datos MySQL y PostgreSQL, cuentas de correo y entornos de prueba. Cada proyecto tiene sus manías y sus requisitos técnicos.

Aunque hoy en día existen mil opciones para alojar proyectos, a mí siempre me ha gustado tener el control directo de mis propios servidores. El problema es que me encontraba con las mismas fricciones una y otra vez: o desplegar Node.js era un proceso engorroso, o clonar un sitio para hacer pruebas requería demasiados pasos manuales, o simplemente echaba en falta una herramienta más rápida y adaptada a cómo me gusta trabajar a mí.

Así que decidí ponerme manos a la obra y montarme mi propia solución a medida: dcWebPanel. Os cuento qué le he metido por dentro y cómo me resuelve el trabajo diario sobre servidores AlmaLinux 9.


🛠️ La Base: Next.js 16 y Modo Simulación

Para la interfaz quería algo que se sintiera instantáneo, limpio y agradable de usar. La monté con Next.js 16 (App Router) y React 19:

  • Todo vuela: La navegación es totalmente reactiva, sin recargas de página lentas y con telemetría del servidor en tiempo real.
  • Modo Simulación: Programar herramientas de servidores suele ser pesado porque necesitas una máquina Linux y permisos root para cualquier prueba. Por eso le implementé un modo simulación local (db.demo.json) para poder retocar la interfaz o programar nuevas funciones directamente en local desde mi portátil sin riesgo de romper nada.

🚀 Despliegues de Node.js con Git y CI/CD Automático

Esta era una de mis mayores prioridades. Quería un flujo ágil para aplicaciones modernas dentro de mi propia máquina:

  • Conexión con GitHub: Vinculo el repositorio y la rama que quiero desplegar en un par de clics (con soporte para Deploy Keys en repos privados).
  • Asistente para package.json: Le metí un analizador que lee el repo, detecta el framework (Next.js, Express, NestJS...), me sugiere los scripts de build y arranque y el puerto interno. Con un clic deja Nginx configurado apuntando a ese puerto.
  • Auto-Deploy por Webhook: Al hacer git push, GitHub avisa al webhook del panel (verificado con firma HMAC-SHA256). El panel hace el git pull, inyecta las variables de entorno, compila y reinicia el servicio.
  • Servicio nativo Systemd: La app corre como un servicio del sistema Linux (cwp-app-midominio.service). Si crashea por cualquier motivo, el kernel la reinicia solo; y si se reinicia el servidor, arranca automáticamente.
  • Logs en directo: Puedo ver en tiempo real por pantalla cómo se van instalando los paquetes de npm y cómo compila el código, con historial de versiones para volver atrás con un clic si hiciera falta.

🧪 Staging en 1-Clic (Clonar webs para pruebas)

Montar entornos de prueba para clientes o para probar cambios antes de tocarlos en producción me quitaba demasiado tiempo. Desarrollé un motor de Staging automatizado:

  • Pulso un botón en cualquier dominio (por ejemplo, un WordPress) y automáticamente me genera el subdominio staging.midominio.com.
  • Copia los archivos, duplica la base de datos MariaDB y reescribe las URLs dentro de la base de datos (respetando datos serializados) para que todo funcione a la primera.
  • Me deja un clon exacto en cuestión de segundos para probar actualizaciones o código sin tocar producción.

⚡ Rendimiento y Gestión Práctica

Para la parte web, busqué una combinación que fuera muy rápida pero sin perder compatibilidad:

  • Nginx + Apache: Nginx por delante con terminación SSL (Let's Encrypt automático) y micro-caché FastCGI en memoria para responder al instante, y Apache por detrás para mantener soporte total de .htaccess.
  • Multi-PHP independiente: Cada web puede usar una versión distinta de PHP (8.0 a 8.4, o 7.4 si hay algún proyecto antiguo), con pools de procesos aislados.
  • phpMyAdmin en 1 clic: Acceso instantáneo por Single Sign-On (SSO) con tokens de un solo uso, sin tener que teclear contraseñas cada vez que entro a revisar una base de datos.

🤖 Conexión con Agentes de Inteligencia Artificial (MCP)

Como utilizo asistentes de IA en mi día a día, integré un servidor Model Context Protocol (MCP) con más de 50 herramientas del panel.

Esto me permite pedirle a un asistente (como Claude Desktop o Antigravity) que revise la memoria del servidor, consulte errores en los logs o cree un nuevo dominio, utilizando llamadas estructuradas y seguras en lugar de darle acceso SSH root indiscriminado.


En Resumen

Al final, dcWebPanel nació como la respuesta a mis propias necesidades cotidianas: quería una herramienta ágil, moderna y que me permitiera gestionar mis proyectos y servidores exactamente como me gusta trabajar.

¡Iré compartiendo más avances según vaya puliendo cosas! Si tenéis curiosidad por algún detalle de la implementación técnica, me podéis escribir a través de la sección de contacto.