🛰️ 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 ZIP | Sube 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 + HTTPS | Añ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 datos | PostgreSQL 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 cifrados | Variables de entorno con AES-256-GCM. Nunca en claro en la base de datos ni en los logs. |
| 🧹 Borrado sin residuos | Eliminar 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ón | Un 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 instante | Las ú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
- Un VPS con Ubuntu Server 24.04 y acceso root por SSH (necesitarás su IP).
- Tu ordenador con un terminal (Windows: PowerShell o Git Bash · macOS/Linux: Terminal) y un navegador.
- 10 minutos y un café ☕.
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:
- 📥 Descarga el código en
/opt/simplepanel. - 🧰 Instala nginx, PostgreSQL, MariaDB, PHP 8.3-FPM, Node LTS, .NET y Bun.
- 🔑 Genera la clave maestra de cifrado y la configuración global.
- 🗃️ Crea la base de datos del panel y aplica el esquema.
- ⚙️ Arranca los dos servicios:
simplepanel-panelysimplepanel-agent. - ✅ 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
- Aplicaciones → Nueva: elige nombre y runtime (PHP, NODE, BUN o DOTNET).
- Desplegar: sube el ZIP de tu app. Verás el job avanzar paso a paso.
- Dominios: añade
miapp.midominio.com(con su DNS apuntando a la IP del VPS) y pulsa SSL para el certificado. - Bases de datos: crea una con «crear variables de entorno» marcado y tu app recibe
DATABASE_URLlista para usar. - 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
- El panel corre como usuario sin privilegios y jamás ejecuta comandos del sistema; solo el agente (root) toca el servidor, y únicamente para ejecutar jobs de una lista cerrada.
- Cada app vive con su propio usuario Linux sin shell, su servicio systemd endurecido y su puerto interno sin publicar.
- Contraseñas con argon2id, sesión con cookie firmada, verificación de Origin en cada POST y bloqueo por IP tras 5 intentos fallidos.
- Al firewall solo se asoman los puertos 22, 80 y 443.
🛠️ ¿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ó
| Pieza | Elección |
|---|---|
| Runtime | Bun + TypeScript |
| Web | SPA en Preact sobre una API JSON de Hono. Bundle con el compilador nativo de Bun (sin Vite/Webpack), embebido en el binario. |
| Datos | PostgreSQL con SQL directo. Sin ORM. |
| Proxy y TLS | nginx + certbot |
| Supervisión | systemd + 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:
- Uso gratuito para cualquiera —empresa, autónomo o particular— con facturación anual del grupo inferior a 1.000.000 €. Por encima de ese umbral, el uso requiere una licencia comercial.
- Prohibido modificar, adaptar o revender la aplicación. Para cambios o adaptaciones, se contratan los servicios del titular.
- Permitido cobrar por servicios de instalación, configuración, despliegue o soporte sobre SimplePanel, siempre que no se venda ni redistribuya la aplicación en sí.
Para una licencia comercial o para modificaciones a medida, contacta con el titular (ver LICENSE).