🛰️ SimplePanel Ver como Markdown

🛰️ SimplePanel

Tu VPS, tus apps, cero contenedores. Un panel de despliegue que cabe en la cabeza.

SimplePanel es un panel de hosting single-user para un único VPS con Ubuntu Server 24.04. Despliega aplicaciones PHP, Node.js, Bun y .NET con nginx delante, systemd vigilando, HTTPS de Let's Encrypt y bases de datos PostgreSQL/MariaDB por aplicación. Todo registrado, todo consultable, todo tuyo.

Sin Docker. Sin Kubernetes. Sin magia. Solo las piezas de siempre de un servidor Linux, bien atadas.

        INTERNET :80/:443
              │
            nginx ──── una conf por dominio
     ┌────────┼────────────┐
  PHP-FPM   Node/Bun     .NET
 (pool/app) (systemd)  (systemd)

  Panel (127.0.0.1:9090) ──▶ PostgreSQL ◀── Agente (root)
        "quiero esto"      operation_jobs     "hecho"

El panel nunca toca el sistema: escribe jobs en una cola. El agente los ejecuta uno a uno y deja un informe paso a paso que ves en directo desde la interfaz. Si algo falla, el mensaje de error es útil y el botón «Reintentar» retoma justo donde se quedó.


✨ Qué sabe hacer

🚀 Deploys por ZIPSube un ZIP, se valida a conciencia (rutas maliciosas, symlinks, límites) y se publica como release inmutable con cambio atómico. Se conservan los 3 últimos.
🌍 Dominios + HTTPSAñade un dominio, pulsa un botón y certbot emite el certificado con redirección a HTTPS. El panel avisa de los que caducan en menos de 30 días.
🗄️ Bases de datosPostgreSQL o MariaDB por app, con usuario propio y contraseña generada. Opcionalmente inyecta DATABASE_URL y compañía en el entorno de la app.
🔐 Secretos cifradosVariables de entorno con AES-256-GCM. Nunca en claro en la base de datos ni en los logs.
🧹 Borrado sin residuosEliminar una app se lleva el usuario Linux, el servicio, la conf de nginx y los archivos. Las bases de datos solo si las marcas explícitamente.
🩺 ReconciliaciónUn botón compara lo que dice la base de datos con lo que hay de verdad en el sistema y señala cualquier deriva.
📜 Logs al instanteLas últimas líneas del journal de cada app, desde el navegador.

📦 Instalación en tu VPS — todos los pasos, uno a uno

Lo que necesitas

Cada paso indica dónde se ejecuta: 🖥️ en tu ordenador · 🐧 dentro del VPS · 🌐 en tu navegador. No te saltes ninguno.

Paso 1 — 🖥️ Conéctate a tu VPS

ssh root@IP_DE_TU_VPS

Sustituye IP_DE_TU_VPS por la IP real. La primera vez te pedirá aceptar la huella del servidor: escribe yes. Cuando el prompt cambie, ya estás dentro del VPS.

Paso 2 — 🐧 Lanza el instalador

curl -fsSL https://simple-panel.ruesdev.es/install.sh | bash

Durante la instalación te preguntará un email para Let's Encrypt (opcional, pero necesario para emitir certificados HTTPS más adelante): escríbelo y pulsa Enter.

El instalador es idempotente (si algo falla, puedes relanzarlo sin miedo) y se encarga de todo:

  1. 📥 Descarga el código en /opt/simplepanel.
  2. 🧰 Instala nginx, PostgreSQL, MariaDB, PHP 8.3-FPM, Node LTS, .NET y Bun.
  3. 🔑 Genera la clave maestra de cifrado y la configuración global.
  4. 🗃️ Crea la base de datos del panel y aplica el esquema.
  5. ⚙️ Arranca los dos servicios: simplepanel-panel y simplepanel-agent.
  6. ✅ Verifica que todo responde antes de despedirse.

Espera al mensaje final SimplePanel instalado. con sus ✓.

Paso 3 — 🐧 Sal del VPS

exit

Vuelves a tu ordenador. (Sí, este paso también cuenta.)

Paso 4 — 🖥️ Abre el túnel SSH… y déjalo abierto

El panel escucha solo en 127.0.0.1:9090 del VPS: no está expuesto a internet, y eso es una decisión de seguridad, no un descuido. Se entra por túnel SSH:

ssh -L 9090:localhost:9090 root@IP_DE_TU_VPS

Esta ventana debe seguir abierta mientras uses el panel: es tu puerta de entrada. Si la cierras, el panel dejará de cargar en el navegador (el VPS sigue funcionando; solo se cierra tu túnel).

Paso 5 — 🌐 Crea tu cuenta de administrador

Con el túnel abierto, visita en tu navegador:

http://localhost:9090/setup

Elige usuario y contraseña y pulsa Crear administrador. Esta pantalla desaparece para siempre en cuanto existe el primer admin.

Alternativa por consola (🐧 dentro del VPS): /opt/simplepanel/bin/simplepanel-create-admin

Paso 6 — 🌐 Inicia sesión

http://localhost:9090/login

🎉 Ya está. Crea tu primera app, súbele un ZIP y ponle un dominio.


🧭 Primer paseo

  1. Aplicaciones → Nueva: elige nombre y runtime (PHP, NODE, BUN o DOTNET).
  2. Desplegar: sube el ZIP de tu app. Verás el job avanzar paso a paso.
  3. Dominios: añade miapp.midominio.com (con su DNS apuntando a la IP del VPS) y pulsa SSL para el certificado.
  4. Bases de datos: crea una con «crear variables de entorno» marcado y tu app recibe DATABASE_URL lista para usar.
  5. Dashboard: estado de todas las apps, últimos jobs, certificados a punto de caducar y el botón Reconciliar para dormir tranquilo.

🔄 Actualizaciones: solas

SimplePanel se mantiene solo: el agente comprueba cada 24 horas si hay versión nueva y, si la hay, se actualiza — haciendo antes una copia de seguridad (un único archivo con el código y el volcado de la base de datos, en /var/backups/simplepanel/; se conservan las 5 últimas). Si algo falla a mitad, restaura código y base de datos y todo queda como estaba.

¿Prisa? Botón "Actualizar ahora" en el dashboard. ¿Prefieres decidir tú? Desactiva la auto-actualización con un clic en el mismo sitio.


🔒 Seguridad, en dos palabras: paranoia sana


🛠️ ¿Algo no va?

# Estado de los servicios del panel
systemctl status simplepanel-panel simplepanel-agent

# Últimas líneas de sus logs
journalctl -u simplepanel-panel -n 50
journalctl -u simplepanel-agent -n 50

Cada job fallido guarda su motivo en la interfaz, y «Reintentar» continúa desde el paso exacto en que se quedó.


🧬 Bajo el capó

PiezaElección
RuntimeBun + TypeScript
WebSPA en Preact sobre una API JSON de Hono. Bundle con el compilador nativo de Bun (sin Vite/Webpack), embebido en el binario.
DatosPostgreSQL con SQL directo. Sin ORM.
Proxy y TLSnginx + certbot
Supervisiónsystemd + journald

📜 Licencia

SimplePanel es software propietario de código disponible (*source-available*), no open source. Consulta el archivo LICENSE para el texto completo (bilingüe ES/EN; la versión en español prevalece).

En resumen:

Para una licencia comercial o para modificaciones a medida, contacta con el titular (ver LICENSE).