Tus Sitios Web
Administra tus aplicaciones alojadas en Kubernetes.
Lista de Despliegues
Arquitectura del Sistema
Referencia técnica completa del stack, APIs y flujos de despliegue.
Infraestructura de Servidores
157.137.222.137ubuntu — Oracle75.119.139.218launcherhttps://registry.purelyhost.comkube-systempurelyhost-comTraefik · SSL: Let's EncryptwebConvenciones de Naming
| Contexto | Formato | Ejemplo |
|---|---|---|
| Dominio del usuario | FQDN con puntos | lucymortonbeauty.com |
| Docker Registry path | purelyhost/{FQDN} | purelyhost/lucymortonbeauty.com |
| Docker image tag | Timestamp Unix | 1783971644 |
| K3s Deployment/Service/Ingress | puntos → guiones | lucymortonbeauty-com |
| K3s Container name | siempre web | web |
Referencia de API REST
Base URL: https://panel.purelyhost.com/api/ · Auth: Authorization: Bearer {token} · Backend: Paulet:5000
Rangos de Puertos por Tecnología
Flujo de Despliegue
Dominio FQDN (regex) + puerto según rango de tecnología — sin llamada al servidor
XHR multipart POST /api/deploy con progreso de upload en tiempo real
unzip -q -o en /tmp/{uuid}/ · genera Dockerfile automático por tecnología
docker buildx build --platform linux/amd64 -t registry.purelyhost.com/purelyhost/{domain}:{timestamp} --push
kubectl apply Deployment + Service + Ingress en namespace purelyhost-com · Si activate=false: solo imagen en registry, K3s intacto
Frontend hace polling cada 2s → tarjeta muestra pasos → verde ✓ al completar · Rollback automático en error
Flujo de Versiones (Docker Registry)
1. Panel llama GET /api/versions?domain=lucymortonbeauty.com
2. Backend consulta https://registry.purelyhost.com/v2/purelyhost/{domain}/tags/list
3. Backend obtiene imagen activa de K3s: kubectl get deployment {safe_domain} -o jsonpath='{...image}'
4. Retorna JSON con tags (timestamps Unix) y flag active: true/false
5. Frontend formatea timestamp → "Imagen: 13/7/2026, 14:22"
Al activar: POST /api/rollback?domain=...&revision={tag} → kubectl set image deployment/{safe_domain} web=registry.../{domain}:{tag}
Pipeline de Actualización del Panel (scripts/deploy.sh)
# Ejecutar desde Windows:
& "C:\Program Files\Git\bin\bash.exe" scripts/deploy.sh
1. Lee .version → incrementa PATCH → guarda en .version
2. Inyecta <div> flotante con versión en esquina inferior derecha de todos los HTML
3. SCP frontend/ → Malinowski(/tmp/) → Paulet(/tmp/panel_build/)
4. docker buildx build -t registry.purelyhost.com/purelyhost/panel:{timestamp} --push
5. kubectl set image deployment/purelyhost-panel
6. SCP backend/engine.cpp + start_engine.sh → Paulet /home/launcher/
7. g++ engine.cpp -o engine_cpp -O3 -lpthread -luuid
8. ./start_engine.sh (mata proceso anterior, relanza en background)
Gestión de GRIEVE (Ansible)
GRIEVE (84.247.137.14) es el servidor externo de base de datos. Está configurado mediante Ansible playbooks para instalar MariaDB, endurecer la seguridad (Fail2Ban, SSH con llaves) y crear bases de datos.
Instalar/Reinstalar GRIEVE
Ejecuta el playbook principal que configura MariaDB, Fail2Ban y los accesos de seguridad (SSH sin root).
Crear Nueva Base de Datos
Terminal Ansible
Gestión de SSL (Let's Encrypt)
Activa y supervisa tus certificados seguros automatizados.
Diagnóstico de Estado
cargando...
A continuación se muestra la evidencia técnica directa desde Kubernetes de que el sitio está operando correctamente.
Desplegar Nuevo Sitio
Solo si tu código (Node/Java) ignora el puerto 80 y fuerza otro puerto internamente.
Sube tu código comprimido
Construiremos la imagen automáticamente.
Sube tu imagen pre-construida
Ideal si usaste Buildah o Docker Desktop previamente.
Nueva Versión Detectada
El sitio ya existe.
Se creará una nueva versión en el historial. ¿Deseas desactivar la versión actual y activar esta nueva versión inmediatamente?
File Manager
Módulo en Construcción
Pronto podrás editar, subir y borrar archivos de tu contenedor directamente desde aquí.
Logs del Contenedor
Cargando logs...
Confirmación Crítica
¿Deseas eliminar TODAS las versiones de este sitio?
Estás a punto de borrar todo el sitio permanentemente.
Para confirmar, escribe la palabra ELIMINAR en mayúsculas:
Gestión del Sitio
Zona Peligrosa
Inyecta variables al contenedor (ej. Base de Datos). Usa el formato CLAVE=VALOR, una por línea.
Selecciona una revisión anterior (ReplicaSet) para restaurarla inmediatamente.