Untitled static subpage: Thursday, 25 June 2026, 20:25

Date: 2026-06-26 00:01 Title: Manual Técnico — Ecosistema KontrolesERP Type: page Description: Referencia técnica completa de todas las URLs, contenedores y mecanismos de autenticación del ecosistema KontrolesERP

Manual Técnico — Ecosistema KontrolesERP

Versión: 1.0 — Junio 2026
Servidor INROCAR: host.kontroles.com190.87.191.142


Mapa completo de URLs

Dominio principal — host.kontroles.com

URL Contenedor destino Puerto interno Auth Descripción
host.kontroles.com/ dte-worker 8080 ninguna Panel admin del Firmador DTE (EMH)
host.kontroles.com/portal kontrolesapi 80 ninguna Portal de acceso central
host.kontroles.com/monitor kontrolesapi 80 ninguna Monitor de DTEs y dispositivos
host.kontroles.com/webui/ erp_app 8888 device token (cookie) ADempiere ERP (ZK Framework)
host.kontroles.com/rta/ kontrolesrta_pwa 80 JWT + device token PWA Distribución y Rutas
host.kontroles.com/pos/ kontrolespos_pwa 80 JWT + device token PWA Punto de Venta
host.kontroles.com/api kontrolesapi 80 JWT REST API Backend
host.kontroles.com/admin/ dte-worker 8080 ninguna Admin EMH (igual que raíz)
host.kontroles.com/files/ filebrowser 80 usuario/contraseña Gestor de archivos
host.kontroles.com/gerencia kontrolesapi 80 device token (localStorage) IA Gerencial (Ollama)
host.kontroles.com/erp-gate kontrolesapi 80 ninguna Pantalla de activación de dispositivo ERP

Dominios de documentación

URL Contenedor Audiencia
tools.kontroles.com/ kontrolesweb:8099 Equipo técnico — todos los manuales
wiki.kontroles.com/ kontrolesweb_user:8100 Usuarios finales — manuales de usuario

Dominios ERP por cliente

Dominio Contenedor Cliente
rocarsadecv.kontroles.com erp_app:8888 ROCARSADECV
minegociosadecv.kontroles.com erp_app:8888 MINEGOCIOSADECV

Routing — cómo funciona nginx

Todas las peticiones HTTPS entran al contenedor nginx_proxy (Nginx Proxy Manager).

Flujo para host.kontroles.com

  1. NPM recibe la petición SSL en puerto 443
  2. Descifra y verifica el certificado (Let's Encrypt, válido 90 días)
  3. Incluye /data/nginx/custom/server_proxy.conf que define las rutas
  4. Cada location hace proxy_pass al contenedor correspondiente en la red Docker erp_net
# server_proxy.conf — rutas relevantes
location /portal  → proxy_pass http://kontrolesapi:80/index.html
location /monitor → proxy_pass http://kontrolesapi:80/monitor.html
location /rta/    → proxy_pass http://kontrolesrta_pwa:80/
location /pos/    → proxy_pass http://kontrolespos_pwa:80/
location /admin/  → proxy_pass http://dte-worker:8080
location /files/  → proxy_pass http://filebrowser:80
location /gerencia → proxy_pass http://kontrolesapi:80/ia-gerencial.html
location /api     → proxy_pass http://kontrolesapi:80
location /erp-gate → proxy_pass http://kontrolesapi:80/erp-gate.html
location /webui/  → auth_request + proxy_pass http://erp_app:8888
location /wiki    → return 301 https://tools.kontroles.com

Autenticación por URL

/webui/ — ERP (nginx auth_request)

Petición → nginx → auth_request /_erp_device_check
                        ↓
              GET kontrolesapi/api/devices/verify-erp
              Cookie: erp_device_token=<uuid>
                        ↓
              200 OK → nginx permite → erp_app:8888
              401    → nginx → 302 /erp-gate?next=/webui/

/rta/ y /pos/ — PWAs

Las PWAs gestionan su propia autenticación en el cliente: - Login → POST /api/auth/login → recibe JWT + rs_device_token - Cada request adjunta Authorization: Bearer <jwt> y X-Device-Token: <uuid> - El backend valida ambos en cada petición autenticada

/api — REST Backend

Headers requeridos:
  Authorization: Bearer <jwt>
  X-App-Source: rta | pos | gerencia
  X-Device-Token: <device_token_uuid>

Contenedores y redes Docker

Redes: - erp-docker_erp_proxy_net — red principal de todos los servicios - erp_net — red de NPM (nginx_proxy); también conectada a kontrolesweb y kontrolesweb_user - postgresql_default — red de la base de datos

Verificar estado:

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

Conectividad entre contenedores:

# Desde NPM, probar un backend
docker exec nginx_proxy curl -sk http://kontrolesapi:80/api/health

# Desde cualquier contenedor en erp_net
docker exec kontrolesweb curl -sk http://kontrolesapi:80/api/health

Certificados SSL

Todos gestionados por Let's Encrypt vía NPM.

Dominio Vence
host.kontroles.com 2026-08-30
tools.kontroles.com 2026-09-24
wiki.kontroles.com 2026-09-24
rocarsadecv.kontroles.com 2026-08-30
minegociosadecv.kontroles.com 2026-08-30

Renovar manualmente si falla auto-renovación:

# Desde el panel NPM (puerto 81) → SSL Certificates → Renew
# O via API:
TOKEN=$(curl -s -X POST http://localhost:81/api/tokens \
  -H 'Content-Type: application/json' \
  -d '{"identity":"kontroleserp@gmail.com","secret":"***"}' | python3 -c "import sys,json;print(json.load(sys.stdin)['token'])")
curl -s -X POST http://localhost:81/api/nginx/certificates/3/renew \
  -H "Authorization: Bearer $TOKEN"

Agregar una nueva ruta

  1. Editar kontrolesapi/nginx/server_proxy.conf localmente
  2. Copiar al servidor:
scp nginx/server_proxy.conf administrador@192.168.1.99:\
/home/administrador/kontroleserp/nginx-proxy-manager/data/nginx/custom/server_proxy.conf

ssh administrador@192.168.1.99 \
  "docker cp .../server_proxy.conf nginx_proxy:/data/nginx/custom/server_proxy.conf && \
   docker exec nginx_proxy nginx -t && \
   docker exec nginx_proxy nginx -s reload"

Variables de entorno clave

Variable Contenedor Valor
JWT_SECRET kontrolesapi kontroles_jwt_2024
MONITOR_KEY kontrolesapi kontroles_monitor_2024
DB_SCHEMA kontrolesapi adempiere
DB_HOST kontrolesapi kontroleserp_db