~/manual $ man tecxpanel
Manual de TecXPaneL
Qué hace y cómo funciona cada sección del panel, con requisitos, flujos de uso y avisos honestos. Usa la barra lateral para navegar por las opciones del VPS.
Dashboard
La pantalla de inicio: el estado de tu servidor de un vistazo, en tiempo real.

Qué muestra
- CPU, RAM, disco y red con gráficas que se refrescan cada 2 segundos vía WebSocket, sin recargar la página.
- Servicios del sistema (Nginx, MySQL, PostgreSQL, Redis, SSH…) con su estado y un interruptor para arrancarlos o detenerlos.
- Procesos top ordenados por consumo, con su PID, CPU% y memoria.
Cómo funciona
Los datos llegan por una conexión WebSocket permanente (/ws/stats) que empuja las métricas desde el servidor. El control de servicios usa systemctl por debajo; cada acción queda registrada en la auditoría.
Terminal SSH
Una consola real dentro del navegador, como si estuvieras conectado por SSH.
Cómo funciona
Pulsa Conectar para abrir la sesión. La terminal usa node-pty en el servidor y un WebSocket (/ws/terminal) para el ida y vuelta, así que soporta colores, autocompletado, editores a pantalla completa (nano, vim) y todo lo que harías en una terminal normal.
- Ejecuta cualquier comando con los permisos del usuario que corre el panel.
- Ideal para tareas puntuales que aún no tienen su propia pantalla en el panel.
node-pty y del sistema del VPS; en un entorno de desarrollo Windows lanza un error controlado.Logs del sistema
Registros en vivo y trazabilidad de todo lo que ocurre en el panel.
Qué incluye
- Logs de Nginx (acceso y error) y del sistema, para diagnosticar sitios y servicios.
- Registro de auditoría del panel: cada acción que modifica algo (inicios de sesión, crear/borrar sitios, apps, bases de datos, cambios de firewall…) queda anotada con usuario, IP y fecha.
Para qué sirve
Es tu primera parada cuando algo no va: revisa el error de Nginx si un sitio da 502, o consulta la auditoría para saber quién cambió qué y cuándo.
Sitios web
Crea y activa vhosts de Nginx sin escribir configuración a mano.
Tipos de sitio
- HTML estático — páginas simples o el
buildde cualquier herramienta. - PHP (PHP-FPM) — WordPress, Laravel y cualquier app PHP, con selector de versión de PHP-FPM.
- React / SPA — sirve el estático con fallback a
index.htmlpara el enrutado del cliente. - Node.js / Python — crea un proxy inverso de Nginx hacia el puerto donde escucha tu app.
Cómo funciona
Al crear un sitio, el panel genera el bloque de Nginx, lo valida con nginx -t y recarga el servicio. Tú solo indicas el dominio y el tipo.
- Ve a Sitios web → Nuevo sitio, escribe el dominio (apuntado por DNS a tu VPS) y elige el tipo. Sin dominio, marca «Acceso por IP:Puerto» y el panel asigna uno.
- Sube los archivos con el Gestor de archivos, o usa Aplicaciones si necesitas build y proceso vivo.
- Emite el certificado SSL con un clic desde la sección SSL para forzar HTTPS.
Aplicaciones
Un pipeline de despliegue completo sobre PM2: del código a producción en unos clics.

Cómo funciona
El flujo es: crear el proyecto → subir el código → instalar dependencias → compilar → arrancar → configurar el proxy de Nginx. El panel detecta el tipo de proyecto y sugiere los comandos de install, build y start.
Cómo subir el código
- Archivo comprimido — sube un
.zipo.tar.gzy el panel lo extrae. - Clonado desde Git — indica repositorio y rama; el panel lo clona y genera un webhook de auto-deploy. Cada
git pushdisparapull → instalar → build → reinicio(el webhook usa un secreto único por app).
Por tecnología
- Node.js — detecta el gestor (
npm/yarn/pnpm), instala y arranca connpm starto elentrydelpackage.json. - TypeScript — instala, compila y arranca el resultado transpilado.
- React / Next.js — compila (
npm run build) y sirve el resultado; detecta Next y avisa si intentas arrancar sin compilar. - Python — aísla cada app en su propio virtualenv (
.venv) y distingue servicio web (Flask/FastAPI con puerto y proxy) de worker/bot sin puerto (p. ej. un bot de Telegram), donde eliges el script.pyde arranque.
.env desde el propio panel.Bases de datos
MySQL/MariaDB y PostgreSQL con usuario y contraseña seguros generados por ti.
Cómo funciona
Crea una base de datos con un clic: el panel genera automáticamente un usuario y una contraseña robusta. Las contraseñas se guardan cifradas en reposo (AES-256-GCM) y puedes revelarlas o copiarlas con el botón del ojo.
- Requisito: el motor debe estar instalado. Si no lo hiciste en el setup, instálalo desde Plugins.
- phpMyAdmin (puerto 8081) y Adminer (puerto 8082, gestiona MySQL y PostgreSQL) se instalan desde Plugins para administrar visualmente.
TXPL_SECRET_KEY o JWT_SECRET. Guarda tu .env: sin esa clave no se pueden descifrar las contraseñas almacenadas.Docker
Gestión completa de contenedores hablando directo con el socket del daemon, sin CLI ni SDK.

Qué puedes hacer
- Gestionar contenedores — listarlos con su estado y puertos, arrancar, detener, reiniciar, eliminar y ver sus logs en vivo.
- Crear un contenedor desde una imagen del registro o compilando un Dockerfile (con la salida de build en directo), definiendo puertos, variables de entorno, volúmenes persistentes y, opcionalmente, dominio con proxy Nginx + HTTPS.
- Desplegar desde código — sube un
.zip/.tar.gz, elige plantilla (Node, Python, Dockerfile a medida) y el panel construye la imagen y levanta el contenedor. - Editor de Dockerfile y docker-compose — escribe tu
docker-compose.ymly despliega (docker compose up -d) sin salir del navegador.
Workflows (n8n)
Automatiza flujos con n8n integrado, sin instalarlo ni administrarlo a mano.

Flujo de uso
- Pulsa Instalar n8n. El panel descarga la imagen y crea el contenedor
txpl-n8ncon volumen persistenten8n_data, mostrando el progreso de descarga en directo. - Abre n8n (botón Abrir en n8n, apuntando a la IP + puerto o a tu dominio), crea tu cuenta y genera tu API key en Settings → API.
- Pega la API key en el asistente: se valida contra n8n y se guarda cifrada. No hace falta indicar ninguna URL.
- Desde el dashboard de Workflows: lista tus workflows y su estado, actívalos/desactívalos, revisa las ejecuciones recientes y abre el editor con un clic.
Copias de seguridad
Backups gestionados con restauración granular estilo Plesk y destinos remotos cifrados.
Qué puedes respaldar
- Bases de datos MySQL/PostgreSQL (dump individual por BD).
- Sitios web de
/var/wwwcon su configuración. - Aplicaciones (código +
.env+ PM2). - Config del panel (base de datos SQLite +
.env).
Cómo funciona
- Pulsa Backup ahora para un snapshot completo, o respalda un recurso concreto. Cada backup es un
.tar.gzcon unmanifest.jsonque describe su contenido. - Para restaurar, elige todo el backup o una pieza suelta: el panel crea primero un snapshot de seguridad de lo que va a sobrescribir y luego aplica la restauración.
- Configura la programación (diario/semanal, hora y retención): se instala una tarea de cron que ejecuta el backup automáticamente.
Destinos remotos (S3-compatible / SFTP)
Con rclone puedes replicar los backups fuera del VPS (S3, Backblaze B2, Wasabi, MinIO, DigitalOcean Spaces, SFTP…). En la tarjeta Destino remoto eliges tipo y credenciales, activas cifrado con tu passphrase (modo crypt) y activas subida automática para replicar cada backup nuevo.
rclone.conf en disco..env y los dumps sin cifrar dentro del .tar.gz: transfiérelos por canales seguros.Tareas programadas (Cron)
Gestiona el cron del servidor desde la UI, sin editar el crontab a mano.
Qué puedes hacer
- Crear tareas con un comando y una programación guiada: presets «cada hora», «cada día a las HH:MM», «cada semana», «cada mes», o modo avanzado con los cinco campos cron.
- Activar/desactivar una tarea sin borrarla, editarla y borrarla.
- Consultar el log de salida de cada tarea (en
/var/log/txpl/cron/<id>.log).
Correo
Un servidor de correo autohospedado con docker-mailserver, gestionado desde el panel.
Cómo funciona
El panel levanta un contenedor txpl-mail (Postfix + Dovecot + Rspamd + DKIM) por el socket de Docker y ejecuta el script setup dentro del contenedor para gestionar buzones, alias y DKIM. El contenedor es la fuente de la verdad; las contraseñas de buzón no se guardan en el panel.
- Pulsa Instalar: se descarga docker-mailserver, se crea el contenedor y se abren los puertos SMTP/IMAP (25/465/587/143/993) en el firewall.
- Indica el hostname (ej.
mail.tudominio.com); el panel emite el certificado TLS con Certbot y lo monta en el contenedor. - Crea buzones (con contraseña) y alias desde la UI.
- Genera el DKIM y añade en tu DNS los registros que el panel te muestra: MX, SPF, DKIM, DMARC (y el PTR/rDNS en tu proveedor de VPS).
DNS autoritativo
Convierte tu VPS en servidor DNS autoritativo con PowerDNS, como hacen Hostinger o Plesk.
Cómo funciona
PowerDNS se instala de forma nativa (apt), corre como servicio y escucha en el puerto 53. El panel lo gestiona por su API HTTP local con una clave cifrada, y proyecta a PowerDNS las zonas y registros que defines.
- Pulsa Instalar PowerDNS: se instala, se abre el puerto 53 y arranca el servicio.
- Configura tus nameservers
ns1.tudominio.comyns2.tudominio.com(ambos apuntando a la IP de este VPS). - Añade tus dominios (zonas) y gestiona sus registros (A, AAAA, CNAME, MX, TXT).
- En tu registrador, crea los glue records que el panel te muestra y cambia los NS del dominio a los tuyos. El panel verifica si la delegación ya está activa (
dig NS).
Archivos
Un gestor de archivos web para navegar, editar y subir sin tocar SSH.

Qué puedes hacer
- Navegar por el árbol de directorios, crear carpetas y archivos, renombrar y eliminar.
- Editar archivos de texto directamente en el navegador (ideal para retocar el código de un sitio).
- Subir con drag-and-drop y barra de progreso, y extraer comprimidos.
safePath()) para impedir salir del directorio base — no hay path traversal posible.Firewall UFW
Gestiona las reglas del firewall del servidor desde el panel.
Cómo funciona
Por defecto se abren los puertos 22 (SSH), 80 (HTTP) y 443 (HTTPS). Puedes añadir reglas para abrir otros puertos que necesiten tus apps, o cerrarlos. Los módulos que lo requieren (Correo, DNS) abren sus propios puertos automáticamente al instalarse.
SSL / HTTPS
Certificados SSL gratuitos de Let's Encrypt, con renovación automática.
Cómo funciona
El panel emite el certificado con Certbot y configura Nginx para forzar HTTPS. La renovación es automática.
- Requisitos: un dominio apuntando a la IP del VPS y Certbot instalado (viene por defecto o se instala desde Plugins).
- Se usa también para el hostname del correo y para los dominios de contenedores Docker con proxy.
Plugins
Instala software del servidor sin tocar la terminal, con salida en directo.

Disponibles
- Docker — contenedores (base de Workflows y Correo).
- phpMyAdmin (puerto 8081) y Adminer (puerto 8082) — gestores web de bases de datos.
- Redis — caché en memoria.
- Fail2Ban — protege SSH y otros servicios contra fuerza bruta.
- Composer — gestor de paquetes PHP.
- Certbot — certificados SSL.
- rclone — cliente para copiar backups a S3/SFTP y demás.
Ajustes y seguridad
Tu cuenta del panel: contraseña, segundo factor y recuperación.
- Contraseña — cámbiala cuando quieras (mínimo 8 caracteres; se guarda con
bcrypt, 12 rondas). En el login hay un botón de ojo para mostrar/ocultar lo que escribes. - 2FA (TOTP) — activa un segundo factor compatible con Google Authenticator, Authy y similares escaneando un QR. Al iniciar sesión se pedirá el código de 6 dígitos.
- Recuperación de contraseña — configura un email y una pregunta de seguridad para recuperar el acceso si la olvidas, sin depender de servicios externos.
Instalación
De un VPS limpio a panel en marcha con un solo script.
En un VPS limpio (Ubuntu / Debian)
Como root o con sudo, clona el repositorio y lanza el instalador. Aprovisiona Node, Nginx, PM2, UFW y Certbot, genera un .env seguro con credenciales autogeneradas (openssl rand) y arranca el panel bajo PM2.
git clone https://github.com/tecxion/tecxpanel.git && cd tecxpanelsudo bash txpl-setup.sh- Al terminar, la consola imprime la URL de acceso y la contraseña de administrador autogenerada.
Instalación personalizada
Puedes predefinir variables antes de lanzar el instalador: ADMIN_USER, ADMIN_PASS, PANEL_DOMAIN, INSTALL_MYSQL, INSTALL_PG… y ejecutar con sudo -E bash txpl-setup.sh.
Actualizar
Desde el directorio del proyecto: sudo bash txpl-update.sh. Hace git pull, reinstala dependencias si cambiaron y recarga el panel con PM2 sin pérdida de servicio.
CLI txpl
Una herramienta de consola para administrar el panel desde el terminal del VPS.
Instalada en /usr/local/bin/txpl. Comandos principales:
txpl status— estado del panel, servicios y consumo.txpl restart— reinicia el panel sin pérdida de servicio (PM2 reload).txpl logs— registros del panel en vivo.txpl panel:ssl <dominio>— configura el dominio e instala HTTPS.txpl sites/txpl apps/txpl dbs— lista sitios, apps y bases de datos.txpl backup/txpl backup:cron/txpl backup:list— copias de seguridad.
Seguridad aplicada
Los principios que protegen el panel y tu servidor.
- Zero shell interpolation — toda ejecución externa usa
execFilecon argumentos en arrays: sin inyección de comandos. - Cifrado en reposo — contraseñas de admin con
bcrypt(12 rondas); secretos de BD, API keys y passphrases con AES-256-GCM. - Path jail — el gestor de archivos resuelve y valida rutas para bloquear el path traversal.
- Protección contra ataques — cabeceras con
helmet, rate limiting por IP y bloqueo temporal por fuerza bruta. - JWT + 2FA — tokens con expiración corta y segundo factor TOTP opcional.
- Auditoría — cada acción relevante se registra con usuario, IP y fecha.
- Sin secretos incrustados — el repositorio es público; cada instalación genera sus propias credenciales y las claves se piden en la UI y se guardan cifradas.