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.com → 190.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
- NPM recibe la petición SSL en puerto 443
- Descifra y verifica el certificado (Let's Encrypt, válido 90 días)
- Incluye
/data/nginx/custom/server_proxy.confque define las rutas - Cada
locationhaceproxy_passal contenedor correspondiente en la red Dockererp_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
- Editar
kontrolesapi/nginx/server_proxy.conflocalmente - 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 |